在 AutoLISP 中使用 ActiveX 函数时,有时需要将 VLA 对象转换为 enames、句柄或对象 ID。
注意:AutoLISP 中的 ActiveX 支持仅限于 Windows。
将 ename 转换为 VLA 对象
该函数允许您将通过函数(如 和 )获取的实体名称 (ename) 转换为可与 ActiveX 支持函数一起使用的 VLA 对象。vlax-ename->vla-objectentgetssname
- 在 AutoCAD 绘图区域中,绘制一个圆。
- 在AutoCAD命令提示下,输入(vl-load-com)并按Enter键。
- Enter (setq ename-circle (car (entsel “\nPick a Circle:”))) 并按 Enter。
<Entity name: 27f0538>
- 输入 (setq vlaobject-circle (vlax-ename->vla-object ename-circle)) 并按 Enter 键。
#<VLA-OBJECT IAcadCircle 03642c24>
- 输入 (setq new-ename-circle (vlax-vla-object->ename vlaobject-circle)) 并按 Enter 键。
<Entity name: 27f0538>
将句柄转换为 VLA 对象
该函数根据提供的句柄返回实体名称 (ename)。然后,可以将实体名称转换为可用于 ActiveX 支持函数的 VLA 对象。handent
- 在 AutoCAD 绘图区域中,绘制一个圆。
- 在AutoCAD命令提示下,输入(vl-load-com)并按Enter键。
- Enter (setq ename-circle (handent (cdr (assoc 5 (entget (car (entsel “\nPick a Circle:”))))))) 并按 Enter.
<Entity name: 27f0538>
- 输入 (setq vlaobject-circle (vlax-ename->vla-object ename-circle)) 并按 Enter 键。
#<VLA-OBJECT IAcadCircle 03642c24>
- 输入 (setq new-ename-circle (vlax-vla-object->ename vlaobject-circle)) 并按 Enter 键。
<Entity name: 27f0538>
将对象 ID 转换为 VLA 对象
该函数返回与传递给函数的对象 ID 相对应的 VLA 对象。用于获取指定 VLA 对象的对象 ID。vla-get-ObjectIDvla-ObjectIDToObject
- 在 AutoCAD 绘图区域中,绘制一个圆。
- 在AutoCAD命令提示下,输入(vl-load-com)并按Enter键。
- Enter (setq aDoc (vlax-get-property (vlax-get-acad-object) 'ActiveDocument)) 并按 Enter。
#<VLA-OBJECT IAcadDocument 0000000029430508>
- Enter (setq aMSpace (vlax-get-property aDoc 'ModelSpace)) 并按 Enter。
#<VLA-OBJECT IAcadModelSpace 00000000304d7308>
- Enter (setq aObjId (vla-get-ObjectID aMSpace)) 并按 Enter。
48
- Enter (setq aObj (vla-ObjectIDToObject aDoc aObjId)) 并按 Enter。
#<VLA-OBJECT IAcadModelSpace 00000000304d7308>
|