AutoCAD .Net API 中,Editor 类提供了两个方法来临时绘图。
public void DrawVector(Point3d from, Point3d to, int color, bool drawHighlighted);
public void DrawVectors(ResultBuffer rb, Matrix3d transform);
这些绘制的图形会在 AutoCAD 窗口刷新时消失。
以下示例代码实现在鼠标点击处绘制临时的十字图形。
<CommandMethod("Test")> _
Public Sub Test()
Dim doc As Document = Application.DocumentManager.MdiActiveDocument
Dim ret As PromptPointResult = doc.Editor.GetPoint(vbLf & "Pick point")
If ret.Status <> PromptStatus.OK Then
Return
End If
Dim pnt As Point3d = ret.Value
Dim pnt1 As New Point3d(pnt.X - 20, pnt.Y, pnt.Z)
Dim pnt2 As New Point3d(pnt.X + 20, pnt.Y, pnt.Z)
Dim pnt3 As New Point3d(pnt.X, pnt.Y - 20, pnt.Z)
Dim pnt4 As New Point3d(pnt.X, pnt.Y + 20, pnt.Z)
Dim colorIndex As Integer = 4
doc.Editor.DrawVector(pnt1, pnt2, colorIndex, False)
doc.Editor.DrawVector(pnt3, pnt4, colorIndex, False)
End Sub
或者用如下代码:
<CommandMethod("Test")> _
Public Sub Test()
Dim doc As Document = Application.DocumentManager.MdiActiveDocument
Dim ret As PromptPointResult = doc.Editor.GetPoint(vbLf & "Pick point")
If ret.Status <> PromptStatus.OK Then
Return
End If
Dim pnt As Point3d = ret.Value
Dim pnt1 As New Point2d(pnt.X - 20, pnt.Y)
Dim pnt2 As New Point2d(pnt.X + 20, pnt.Y)
Dim pnt3 As New Point2d(pnt.X, pnt.Y - 20)
Dim pnt4 As New Point2d(pnt.X, pnt.Y + 20)
Dim colorIndex As Integer = 4
Dim RTPOINT As Integer = 5002
Dim RTSHORT As Integer = 5003
Using resBuf As New ResultBuffer()
resBuf.Add(New TypedValue(RTSHORT, colorIndex))
resBuf.Add(New TypedValue(RTPOINT, pnt1))
resBuf.Add(New TypedValue(RTPOINT, pnt2))
resBuf.Add(New TypedValue(RTPOINT, pnt3))
resBuf.Add(New TypedValue(RTPOINT, pnt4))
doc.Editor.DrawVectors(resBuf, Matrix3d.Identity)
End Using
End Sub
参考文章:
https://blog.csdn.net/hisinwang/article/details/78764531http://adndevblog.typepad.com/autocad/20 ... graphics-in-autocad.html