可以使用 ActiveX 函数设置和检索对象属性的值。
注意:AutoLISP 中的 ActiveX 支持仅限于 Windows。
获取对象的属性并将该属性应用于新对象
- 在 Visual LISP 控制台窗口或 AutoCAD 命令提示符下,输入一个 AutoLISP 语句,该语句获取或创建包含要使用的特性的对象。
例如,此函数调用会提示您为圆选取一个中心点,然后调用该方法来绘制圆。该函数将您选取的点转换为所需的数据类型。AddCirclevlax-3d-pointvla-addcircle
(setq 3dpt (vlax-3d-point (getpoint "\nPick the center point for a circle: "))
(setq myCircle (vla-addcircle mspace 3dpt 2.0))
- 输入另一个 AutoLISP 语句,该语句检索 VLA 对象的属性并将其分配给另一个 VLA 对象。
例如,使用 Circle 对象绘制同心圆。vla-get-center
(vla-addCircle mSpace (vla-get-center myCircle) 1.0)
更改对象的属性
- 获取圆的当前中心点:
(setq myCenter (vla-get-center myCircle))
中心点以 safearray 类型的变体返回。safearray 包含三个双精度(X、Y 和 Z 坐标)。
- 以列表形式保存中心点:
(setq centerpt (vlax-safearray->list (vlax-variant-value myCenter)))
将中心点从变体安全数组转换为列表可以更轻松地修改坐标。
- 从中心点的 X 轴减去 1:
(setq newXaxis (- (car centerpt) 1))
结果保存在变量 中。newXaxis
- 使用新的 X 轴和原始 Y 和 Z 值为中心点构建新的点列表:
(setq newcenter (list newXaxis (cadr centerpt) (caddr centerpt)))
构造的列表保存在变量 中。newcenter
- 用于使用新的 X 轴更新圆:vla-put-center
(vla-put-center myCircle (vlax-3d-point newcenter))
请注意,此命令用于将新的中心点列表转换为所需的数据类型。vlax-3d-pointvla-put-center
AutoCAD 图形窗口显示结果:
|