Humbertogo 发表于 2006-8-10 04:05:57

如何获取选定维度的扩展

如何从选定标注中获取定义点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 *****

Kerry 发表于 2006-8-10 04:15:30

您可以尝试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)
)
;;;------------------------------------------------------------------
;;;------------------------------------------------------------------
;;;

Humbertogo 发表于 2006-8-10 04:32:11

但是从vba怎么做呢?我知道您可以从对齐的尺寸中获得延伸定义点,但不能从旋转的尺寸中获得

Kerry 发表于 2006-8-10 04:38:57

抱歉,我没注意到这是在VBA论坛..

Kerry 发表于 2006-8-10 04:50:49


我相信旋转尺寸的点不会暴露给ActiveX。
编辑:
我认为旋转尺寸的点没有在ActiveX中显示。

Humbertogo 发表于 2006-8-10 05:00:32

这是真的
,你是对的

Bryco 发表于 2006-8-10 10:17:47

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]
查看完整版本: 如何获取选定维度的扩展