Lisp是一种方式代码1]
和示例
- Public Function DimRotation(objDim As AcadDimension, varPick As Variant)
- 'code(10)=cross point rhs of text,arrow2
- 'code(11)= text insertpt
- 'code(13) =Dimstartpt-extendline1
- 'code(14) =DimEndpt-extendline2
- Dim dblRot As Double
- Dim dblStartToVarPickAng As Double, dblEndAng As Double
- Dim dblEndToVarPickAng As Double
- Dim StartPt, EndPt, arrow2Pt
- Dim varTest As Variant, Ppt, X(1)
- With ThisDrawing.Utility
-
- 'dblRot = vbAssoc(objDim, 50)
-
- varTest = vbAssoc(objDim, 10)
- arrow2Pt = ParseDxfPoint(varTest)
-
- varTest = vbAssoc(objDim, 13)
- StartPt = ParseDxfPoint(varTest)
-
- varTest = vbAssoc(objDim, 14)
- EndPt = ParseDxfPoint(varTest)
-
- dblEndAng = .AngleFromXAxis(EndPt, arrow2Pt)
-
- X(1) = dblEndAng - 0.5 * Pi
-
- Dim dblDist As Double
- dblDist = objDim.ExtensionLineExtend * objDim.ScaleFactor
- Ppt = .PolarPoint(arrow2Pt, dblEndAng, dblDist)
-
- dblStartToVarPickAng = .AngleFromXAxis(StartPt, varPick)
- If dblStartToVarPickAng > (2 * Pi) - 0.001 Then
- dblStartToVarPickAng = dblStartToVarPickAng - 2 * Pi
- End If
-
- dblEndToVarPickAng = .AngleFromXAxis(EndPt, varPick)
- If dblEndToVarPickAng > (2 * Pi) - 0.001 Then
- dblEndToVarPickAng = dblEndToVarPickAng - 2 * Pi
- End If
-
- If Abs(dblStartToVarPickAng - dblEndAng) _
- < Abs(dblEndToVarPickAng - dblEndAng) Then
-
- dblRot = dblEndAng + 0.5 * Pi * isLeft(EndPt, arrow2Pt, StartPt) 'function
- Ppt = .PolarPoint(Ppt, dblRot, objDim.Measurement)
- End If
-
- X(0) = Ppt
- DimRotation = X
-
- End With
- End Function
|