有许多方法可以使用 AutoLISP 引用 AutoCAD 图形对象。其中包括以下内容:
- VLA 对象,由 ActiveX 函数返回
- 实体名称 (ename),由 and 返回,标识打开图形中的对象entgetentsel
- 实体在 AutoCAD 会话中保留的句柄(返回者)handent
- 对象 ID,由 ARX 用于标识对象
AutoLISP 提供了从一种类型的对象标识符转换为另一种类型的对象标识符的函数。
您可能会发现由不同的标识符和数据类型(如句柄字符串、ename、VLA 对象或 ObjectARX 对象 ID 整数)表示的相同图形对象。若要获取具有程序所需数据类型的标识符,请使用以下策略:
- 要查找与 ename 关联的句柄,请使用 ename 关联列表的 DXF 5 组:
(setq handle-circle (cdr (assoc 5 (entget ename-circle))))
"4F"
- 若要查找与句柄关联的 ename,请使用函数:handent
(handent handle-circle)
<Entity name: 27f0538>
- 若要查找与句柄关联的 VLA 对象,请使用以下函数:vla-handleToObject
(setq vla-circle (vla-handleToObject acadDocument handle-circle))
#<VLA-OBJECT IAcadCircle 03642c24>
- 若要查找与 VLA 对象关联的句柄,请使用获取属性:vla-get-handleHandle
(vla-get-handle vla-circle)
"4F"
- 要查找 VLA 对象的 ObjectARX 对象 ID,请使用获取属性:vla-get-objectidobjectID
(setq objid-Circle (vla-get-objectid vla-circle))
41878840
- 要查找由 ObjectARX 对象标识的 VLA 对象,请使用 AutoCAD 文档对象上的方法:ObjectID-toObject
(vla-ObjectIDtoObject acadDocument objid-circle)
#<VLA-OBJECT IAcadCircle 03642c24>
|