关于使用宏中的 AutoLISP

创建使用 AutoLISP 的命令是一种使用程序的自定义功能的更高级的方式。

可以使用 AutoLISP 变量和表达式来创建用于执行复杂任务的宏。程序在加载 CUI/CUIx 文件时,还会加载同一位置的同名 MNL 文件。将 AutoLISP 代码放置在 MNL 文件中是一种有效的方法,用来加载可以用于宏的自定义命令。

注: 仅针对 Windows,可以在“自定义用户界面 (CUI)”编辑器中指定其他要加载的 AutoLISP 文件。创建使用 AutoLISP 的命令是一种使用程序的自定义功能的更高级的方式。通过积累经验和进行练习,用户会有效地使用这种功能。

样例

预设值

此样例包含三个用于插入块的命令宏。

命令宏提示输入窗口宽度。

^C^C^P(setq WINWID (getreal "\nEnter window width: ")) ^P

命令宏提示输入墙厚度。

^C^C^P(setq WALLTHK (getreal "\nEnter wall thickness: ")) ^P

命令宏将插入名为“窗口”的块,并提示输入插入点和旋转。

^C^C_INSERT window XScale !WINWID YScale !WALLTHK

块的 X 轴表示当前窗口的宽度,Y 轴表示当前墙厚度。

调整夹点的大小

此样例包含两个命令宏,可以增加或减小 GRIPSIZE 系统变量的当前值。

命令宏将 GRIPSIZE 系统变量的值增加 1。

^P(setvar "gripsize"(1+ (getvar "gripsize")))(redraw)(princ)

命令宏将 GRIPSIZE 系统变量的值减小 1。

^P(setvar "gripsize"(1- (getvar "gripsize")))(redraw)(princ)

要将有效性检查添加到这些命令宏中,GRIPSIZE 系统变量的值不能小于 0 和大于 255。

提示用户输入

以下样例将提示输入两个点,然后用指定的点作为对角点绘制一个矩形多段线。

^P(setq a (getpoint "Enter first corner: "));\+
(setq b (getpoint "Enter opposite corner: "));\+ 
pline !a (list (car a)(cadr b)) !b (list (car b)(cadr a)) c;^P
调用指定给下拉菜单项的宏(仅适用于 Windows)

使用以下语法,可以通过编程方式执行下拉菜单项的宏:

(menucmd "Gcustomizationgroup.element_ID=|")

仅当菜单项是程序菜单栏上的菜单的一部分并且可用时,以上语法才有效。