如何获取选定维度的扩展
如何从选定标注中获取定义点X和Y的扩展例如,
第一个扩展定义点:X=0.0000 Y=0.000 Z=0.万
第二个扩展定义点名:X=2.0000 Y=0.0000 Z=0.000
尺寸线定义点:X=2.000 Y=0.6359 Z=0.0000
**** Hidden Message ***** 您可以尝试DXF值,如下所示...
;;;------------------------------------------------------------------
;;;------------------------------------------------------------------
;;;
(defun c:dxflist (/ eko)
(setq eko (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setq *lent*
(entget
(car (entsel "\nSelect entity to display its DXF value data: ")
)
'("*")
)
)
(textscr)
(list *lent*)
(foreach n *lent* (print n))
(setvar "cmdecho" eko)
(princ)
)
;;;------------------------------------------------------------------
;;;------------------------------------------------------------------
;;;
但是从vba怎么做呢?我知道您可以从对齐的尺寸中获得延伸定义点,但不能从旋转的尺寸中获得 抱歉,我没注意到这是在VBA论坛..
我相信旋转尺寸的点不会暴露给ActiveX。
编辑:
我认为旋转尺寸的点没有在ActiveX中显示。 这是真的
,你是对的 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
页:
[1]