注释中第一个矩阵和第二个矩阵必须选择代码中的转换矩阵才行,如果两个都选ed.CurrentUserCoordinateSystem或都选Matrix3d.Identity就不行,这是为什么?
- '''
- ''' 由起点和中点绘制直线
- '''
- '''
- Public Class DrawJig_Line
- Inherits DrawJig
- Private ent As Line
- Private sPt As Point3d
- Private ePt As Point3d
- Private funCount As Integer = 1
- _
- Sub DrawLine()
- Dim optFirstPoint As New PromptPointOptions(vbCrLf & "指定中点 或:")
- With optFirstPoint
- .AllowNone = True
- End With
- Dim resFirstPoint As PromptPointResult = ed.GetPoint(optFirstPoint)
- If resFirstPoint.Status = PromptStatus.None Then
- optFirstPoint.Message = "指定端点:"
- resFirstPoint = ed.GetPoint(optFirstPoint)
- funCount = 2
- End If
- If resFirstPoint.Status PromptStatus.OK Then Return
- sPt = resFirstPoint.Value
- sPt = sPt.TransformBy(ed.CurrentUserCoordinateSystem)'===第一个矩阵===
- ePt = sPt
- ent = New Line(sPt, ePt)
- Dim resJigPoint As PromptResult = ed.Drag(Me)
- If resJigPoint.Status = PromptStatus.OK Then
- AppendEntity(ent)
- End If
- ent.Dispose()
- funCount = 1
- End Sub
- Protected Overrides Function Sampler(ByVal prompts As Autodesk..EditorInput.JigPrompts) As Autodesk.AutoCAD.EditorInput.SamplerStatus
- Dim Message As String = IIf(funCount = 1, "指定端点:", "指定中点:")
- Dim optJigPoint As New JigPromptPointOptions(vbCrLf & Message)
- With optJigPoint
- .BasePoint = sPt
- .UseBasePoint = True
- .UserInputControls = UserInputControls.Accept3dCoordinates
- End With
- Dim resJigPoint As PromptPointResult = prompts.AcquirePoint(optJigPoint)
- If resJigPoint.Status PromptStatus.OK Then Return SamplerStatus.Cancel
- ePt = resJigPoint.Value
- ePt = ePt.TransformBy(Matrix3d.Identity)'===第二个矩阵===
- If sPt = ePt Then Return SamplerStatus.NoChange
- If funCount = 1 Then
- ent.EndPoint = ePt
- ent.StartPoint = sPt + (sPt - ePt)
- Else
- ent.StartPoint = sPt
- ent.EndPoint = sPt + 2 * (ePt - sPt)
- End If
- Return SamplerStatus.OK
- End Function
- Protected Overrides Function WorldDraw(ByVal draw As Autodesk.AutoCAD.GraphicsInterface.WorldDraw) As Boolean
- draw.Geometry.Draw(ent)
- Return True
- End Function
- End Class
|