命令宏可以包含命令、特殊字符、DIESEL 表达式或 AutoLISP 编程代码。
您可以定义宏,然后通过在“自定义用户界面”编辑器 (Windows) 或“自定义”对话框 (Mac OS) 中修改命令的“宏”特性来将其指定给命令。
宏将定义使用用户界面元素时应执行的动作。它可以像命令一样简单(例如 circle),并且可以包含特殊字符(例如 ^C^C)。
例如,宏 ^C^C_.circle \1,它可以绘制一个半径为 1 个单位的圆。下表解释了定义此宏的组成部分。
CIRCLE 宏中的部件 |
||
---|---|---|
部件 |
部件类型 |
结果 |
^C^C |
特殊控制字符序列 |
序列,效果类似于按两次 Esc 键。 |
_ |
特殊控制字符 |
应使用全局命令名而非本地化的命令名来指示跟随的命令。 |
. |
特殊控制字符 |
应使用命令的标准定义而非可能存在的重定义命令来指示跟随的命令。 |
CIRCLE |
命令名 |
启动 CIRCLE 命令。 |
特殊字符 |
空格的效果类似于在使用命令时按空格键。 |
|
\ |
特殊控制字符 |
创建暂停以请求用户输入;在此样例中,它是指暂停以请求输入圆的圆心。 |
1 |
输入值 |
响应输入圆的半径的提示;在此样例中,它为 1 个单位。 |
当单击用户界面中的按钮时,将在程序的当前上下文中执行指定到此按钮的宏。这意味着,该宏将尝试响应当前提示。如果要确保在执行宏时当前没有命令处于活动状态,则使用 ^C 命令序列作为宏的前缀。虽然单个 ^C 能取消大多数命令,但要从标注命令返回命令提示必须使用 ^C^C,并且根据 -LAYER 命令的当前选项需要使用 ^C^C^C。^C^C 可以取消大多数命令序列,而且是推荐您使用的序列。
宏中的每个字符(即使是空格)都有重要意义。如果在宏的末尾加了一个空格,将视为您已按了空格键或 Enter 键来完成命令。
作为 AutoCAD 或基于 AutoCAD 的产品一部分的命令应使用句点字符 (.) 作为前缀。句点字符使用户可以使用标准命令,即使已使用 UNDEFINE 命令取消其定义。这种预防措施使宏在共享同一自定义 (CUI/CUIx) 文件的其他计算机上使用时仍可被识别。
首次创建宏时,通常会使用命令名称和选项值并以您所熟悉产品的语言来创建它。每个命令和选项都具有一个本地和全局名称,可让您的宏由产品的其他语言使用。非英文版支持不需要在您执行太多其他操作,您只需在每个命令或选项前添加下划线字符 (_) 即可。下划线字符向程序发出信号,表示命令名称或选项值应在执行命令或选项前转换为产品的本地语言。
单一对象选择模式取消了编辑命令中“选择对象”提示的普通重复。选择一个对象并响应其他所有提示后,命令将结束。
请看以下样例中的宏:
^C^C._erase single
该宏将终止当前命令,并启动单一对象选择模式中的 ERASE 命令。在启动宏后,可以选择单个对象,也可以单击图形中的空白区域,然后指定窗口/窗交选择。将删除使用这些方法选择的任何对象。
一旦创建了宏,您可能想要多次重复使用它,然后再继续其他命令。在宏中,可以使用前导星号 (*) 来指明应重复使用的宏中的命令,直到按 Esc 键或开始另一个以 ^C 开头的宏。
以下样例中的宏将重复执行命令:
*^C^C._move Single *^C^C._copy Single *^C^C._erase Single *^C^C._stretch Single Crossing *^C^C._rotate Single *^C^C._scale Single
某些宏需要使用特殊结束符。例如,需要按 Enter 键而不是空格键来终止 TEXT 命令,需要多次按空格键或 Enter 键才能完成某些命令。
以下两条特殊约定解决了这些问题。
请比较下面的宏:
ucs ucs ;
第一个样例将启动 UCS 命令,并且将模拟按空格键(因为行以空格结束)。将显示以下提示:
指定 UCS 的原点或 [面(F)/命名(NA)/对象(OB)/上一个(P)/视图(V)/世界(W)/X/Y/Z/Z 轴(ZA)] <世界>:
第二个样例将启动 UCS 命令,然后依次模拟按空格键和按 Enter 键,这个操作将接受默认值(世界)。
宏中的字符将会在命令提示下显示,就像用户通过键盘键入这些字符一样。这种显示重复称为回显。您可以使用 MENUECHO 系统变量禁用宏回显。如果项目输入的回显和提示处于打开状态,则在宏之前添加 ^P 就可以临时关闭它们。您也可以使用宏中的 ^Q 来隐藏命令行历史记录中的所有提示和输入。