命令宏字符串用于指示 AutoCAD 要执行哪些命令和系统变量以及在命令提示下允许的任何预期输入。特殊字符、DIESEL 表达式和 AutoLISP 编程代码也可以包含在命令宏字符串中。
可以创建自定义命令宏字符串,以帮助:
使用以下命令定义和编辑命令宏字符串:
命令宏字符串定义为一系列命令以及具有专用语法的预期选项和值,但与在 AutoCAD 命令提示下输入的内容类似。与程序的用户界面交互时(如单击功能区上的按钮或快捷菜单上的项目),将执行命令宏字符串。命令宏的语法可以简单得仅包含一个命令名(如 CIRCLE),也可以更复杂,包含特殊字符(如 ^C^C_.circle \1)。
下面列出了命令宏字符串中最常用的特殊字符:
以下是在 AutoCAD 命令提示下启动 CIRCLE 命令并绘制半径为 5 的圆的外观,以及相同的输入如何显示为命令宏字符串:
命令提示序列 | 宏字符串语法等效项 |
---|---|
Command: CIRCLE Specify center point for circle or [3P/2P/Ttr (tan tan radius)]: Specify radius of circle or [Diameter] <2.5000>: 5 |
CIRCLE; \ 5; |
最终的命令宏字符串可能如下所示:
![]() |
|
前面的宏字符串也可以写为以下形式,而不使用分号,因为宏中的空格键与在 AutoCAD 命令提示下按空格键类似:
^C^C_.circle \5
下面是使用 MOCORO 命令复制并在 AutoCAD 命令提示下旋转这些复制的对象的另一个示例,以及命令序列如何显示为命令宏字符串:
命令提示序列 | 宏字符串语法等效项 |
---|---|
Command: MOCORO Select objects: Specify opposite corner: Select objects: Base point: [Move/Copy/Rotate/Scale/Base/Undo]<eXit>: C Second point of displacement/Undo/<eXit>: Second point of displacement/Undo/<eXit>: [Move/Copy/Rotate/Scale/Base/Undo]<eXit>: R Second Point or Rotation angle: [Move/Copy/Rotate/Scale/Base/Undo]<eXit>: |
MOCORO; \ \ ; \ C; \ ; R; \ ; |
最终的命令宏字符串可能如下所示:
![]() |
|
当单击用户界面中的按钮时,将在程序的当前上下文中执行指定到此按钮的宏。这意味着,该宏将尝试响应当前提示。如果要确保在执行宏时当前没有命令处于活动状态,则使用 ^C 命令序列作为宏的前缀。虽然单个 ^C 会取消大多数命令,但要从标注命令返回命令提示必须使用 ^C^C,并根据 -LAYER 命令的当前选项需要使用 ^C^C^C。^C^C 会取消大多数命令序列,并且是建议使用的序列。
作为 AutoCAD 或基于 AutoCAD 的产品一部分的命令应使用句点字符 (.) 作为前缀。句点字符使用户可以使用标准命令,即使已使用 UNDEFINE 命令取消其定义。这种预防措施使宏在共享同一自定义 (CUI/CUIx) 文件的其他计算机上使用时仍可被识别。
宏中的每个字符(即使是空格)都有重要意义。空格被解释为按空格键,这可能导致在提供的输入中出现空格字符,或者如同按 Enter 键一样。结果与在命令提示下使用命令或系统变量时的结果相同。
首次创建宏时,通常会使用命令名称和选项值并以您所熟悉产品的语言来创建它。每个命令和选项都具有一个本地和全局名称,可让您的宏由产品的其他语言使用。非英文版支持不需要在您执行太多其他操作,您只需在每个命令或选项前添加下划线字符 (_) 即可。下划线字符向程序发出信号,表示命令名称或选项值应在执行命令或选项前转换为产品的本地语言。
单一对象选择模式取消了编辑命令中“选择对象”提示的普通重复。选择一个对象并响应其他所有提示后,命令将结束。
请考虑以下样例中的宏:
^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 来隐藏命令行历史记录中的所有提示和输入。