dhl 发表于 2022-7-6 10:39:37

2009年,dxf代码10包含插入点。
 
2010年,它似乎被隐藏了起来。mep设备的DXF输出如下:
 

(-1 . <Entity name: 7ffff851c10>)
(0 . "AECB_DEVICE")
(330 . <Entity name: 7ffff8039f0>)
(5 . "1E5E1")
(100 . "AcDbEntity")
(67 . 0)
(410 . "Model")
(8 . "E-63F--IE-N")

 
2009年,这是英里长

Lee Mac 发表于 2022-7-6 10:43:08

看起来你和这家伙的处境一样:
 
http://www.cadtutor.net/forum/showthread.php?54021-How-can-I-get-detailed-definition-of-AECC\u坐标几何点
 
你是通过VL获得信息的吗?

dhl 发表于 2022-7-6 10:47:54

使用链接,dump lisp例程将在“location”下返回插入点
 
现在的问题是如何提取“位置”?
 
对于VL来说,我是个新手
 

Command: dump
>>Select Object>> ; IAecbDevice: Device entity
; Property values:
;   AlternateName (RO) = "28W"
;   Application (RO) = #<VLA-OBJECT IAcadApplication 0000000140b98ca0>
;   BoundSpaces = 1
;   Connectors (RO) = #<VLA-OBJECT IAecbConnectors 0000000032d59ba0>
;   Description = ""
;   Document (RO) = #<VLA-OBJECT IAcadDocument 000000000e1cbde0>
;   Elevation = 0.0
;   EngineeringData (RO) = #<VLA-OBJECT IAecbPartDataVariables 0000000032d59c30>
;   EngineeringID = ""
;   GUID (RO) = ""
;   Handle (RO) = "1E5E1"
;   HasExtensionDictionary (RO) = 0
;   Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 0000000032c86a28>
;   ID = ""
;   InsulationThickness = 0.0
;   Layer = "E-63F--IE-N"
;   Linetype = "ByLayer"
;   LinetypeScale = 1.0
;   Lineweight = -1
;   LiningThickness = 0.0
;   Load (RO) = "0"
;   Location = (286861.0 305315.0 0.0)
;   LockSize = 0
;   Material = "ByLayer"
;   MaximumSize = ...Indexed contents not shown...
;   Name (RO) = "28W"
;   Normal = (0.0 0.0 1.0)
;   ObjectID (RO) = 42
;   ObjectID32 (RO) = 42
;   ObjectName (RO) = "AecbDbDevice"
;   OwnerID (RO) = 43
;   OwnerID32 (RO) = 43
;   PartDescription (RO) = "28W"
;   PlotStyleName = "ByLayer"
;   Rotation = 6.10144
;   ShadowDisplay = 0
;   SizeName (RO) = "28W"
;   Style = #<VLA-OBJECT IAecbDeviceStyle 000000002ec963e0>
;   StyleName = "28W"
;   SubType (RO) = ""
;   System = #<VLA-OBJECT IAecbElecSystemDef 000000002ec96280>
;   SystemAbbreviation (RO) = ""
;   SystemFamily (RO) = ""
;   SystemName = "Standard"
;   SystemType (RO) = 100
;   TrueColor = #<VLA-OBJECT IAcadAcCmColor 0000000032c896c0>
;   Type (RO) = "Lighting"
;   Visible = -1
;   Voltage (RO) = Exception occurred
; Methods supported:
;   ArrayPolar (3)
;   ArrayRectangular (6)
;   AttachAnchor (1)
;   ClosestNode (1)
;   Copy ()
;   Delete ()
;   GetAnchor ()
;   GetBoundingBox (2)
;   GetExtensionDictionary ()
;   GetXData (3)
;   Highlight (1)
;   IntersectWith (2)
;   Mirror (2)
;   Mirror3D (3)
;   Move (2)
;   NodeLocation (1)
;   ReleaseAnchor ()
;   Rotate (2)
;   Rotate3D (3)
;   ScaleEntity (2)
;   SetXData (2)
;   TransformBy (1)
;   Update ()

Lee Mac 发表于 2022-7-6 10:50:51

将其用于实体名称:
 
(vlax-get (vlax-ename->vla-object <entityname>) 'Location)

Tharwat 发表于 2022-7-6 10:52:07

 
我试过了,但没有得到实体的位置。它返回如下错误。
 
因此,如果位置意味着一个实体的起点,我认为我们可以用以下内容替换它。
 

(vl-load-com)
(setq e (car (entsel "\nSelect something :")))
(vlax-get (vlax-ename->vla-object e) 'startpoint)

 
你怎么想?
 
塔瓦特

Lee Mac 发表于 2022-7-6 10:56:20

 
但是你在用MEP吗?
 
 
是否查询对象的StartPoint属性,或者这是猜测?

Tharwat 发表于 2022-7-6 11:00:37

这不是猜测。这只是一个讨论。
 
如果你对它那么生气,就忽略它。

dhl 发表于 2022-7-6 11:02:41

 
谢谢这很有魅力。
 
作为VL的初学者,您是否介意仔细阅读您的代码,也许您可以解释一下为什么非VL命令不返回相同的输出?

Lee Mac 发表于 2022-7-6 11:04:23

 
发怒的谁在生气?

Lee Mac 发表于 2022-7-6 11:08:45

 
杰出的
 
 
在处理任何VL属性/方法之前,我们必须首先将实体名称转换为VLA对象,为此,我们使用vlax ename->VLA对象。
 
当我们拥有VLA对象时,我们可以查询其属性,并使用其方法。
 
有关ActiveX对象模型的更完整解释,请参阅此处:
http://www.cadtutor.net/forum/showthread.php?53374-xref clip boundry&p=361940&viewfull=1#post361940
 
杰出的
页: 1 [2]
查看完整版本: 2010 lisp故障