CAD宏

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

当一个工具栏项被选定后,宏是执行一些特殊动作的一系列命令。工具栏的宏不仅能成为完成一项任务时的按键记录,而且可以是命令、AutoLISP、DIESEL或
ActiveX程序代码的复合体。

如果你想在一个菜单的宏中包含命令参数,你必须了解这个命令所要求的参数的次序。菜单的宏中的每一个动作都是有意义的,甚至空格也是有意义的。正如AutoCAD会被修订和增强一样,不同命令的提示符的次序(有时甚至是命令的名称)可能会改变。因此,当你升级到一个新的AutoCAD版本时,可能会要求对你的自定义菜单做小小的改动。

当从一个菜单项传来命令输入时,PICKADD和PICKAUTO系统变量的设置要分别假设为1和0。这就保证了同旧AutoCAD版本的兼容性并且使用户自定义过程更容易,因为你无需再去检查这些变量的设置。



本节主题

宏字符所映射的ASCII等效值
宏的终止
暂停以等待用户输入
取消一个命令
宏的重复
单一对象选择方式模式



宏字符所映射的ASCII等效值

下表提供了用于菜单宏中的特殊字符以及它们被用于VB和VBA时的ASCII等效值。当为Macro属性建立字符串时,对这些特殊字符使用ASCII等效值是很重要的。



用于菜单和工具栏的宏中的特殊字符

字符 ASCII等效值 说明
; chr(59) 执行ENTER
^M chr(94) + chr(77) 执行ENTER
^| chr(94) + chr(124) 执行TAB
SPACEBAR chr(32) 输入空格;在一个菜单项的命令次序之间键入空格等于按SPACEBAR
\ chr(92) 暂停等待用户输入
_ chr(95) 转换随后的AutoCAD命令及关键字
+ chr(43) 在下一行(如果是最后一个字符)继续执行菜单的宏。
=* chr(61) + chr(42) 显示当前的顶层图象、下拉菜单或快捷菜单
*^C^C chr(42) + chr(94) + chr(67)chr(94)
+ chr(67) 一个重复项的前缀
$ chr(36) 加载一个菜单区或引入一个条件DIESEL宏表达式
^B chr(94) + chr(66) 切换捕捉开或关(CTRL+B)
^C chr(94) + chr(67) 取消命令(CTRL+C)
ESC Chr(3) 取消命令(ESC)
^D chr(94) + chr(68) 切换坐标开或关(CTRL+D)
^E crh(94) + chr(69) 设置下一个等轴平面(CTRL+E)
^G chr(94) + chr(71) 切换栅格的开或关(CTRL+G)
^H chr(94) + chr(72) 执行退格
^O chr(94) + chr(79) 切换正交的开或关(CTRL+O)
^P chr(94) + chr(80) 切换菜单提示的开或关
^Q chr(94) + chr(81) 显示所有DOS提示、状态列表和输入到打印机。(CTRL+Q)
^T chr(94) + chr(84) 切换数字仪的开或关(CTRL+T)
^V chr(94) + chr(86) 改变当前的视口(CTRL+V)
^Z chr(94) + chr(90) 零字符限制了在一个菜单项的末尾自动增加空格键。



宏的终止

当执行一个宏时,在处理命令次序之前,AutoCAD在宏的末尾设置了一个空格。AutoCAD处理以下的菜单宏就象你已经键入了line和空格键一样。

line


有时这样做却不受欢迎;例如,TEXT或DIM命令必须用ENTER键终止,而不能用空格。同样的,有时需要用一个以上的空格(或ENTER)来完成一个命令,但是有些文本编辑器不允许你建立一个带空格的行。由于这些问题就产生了两种特殊的规定。

当宏中出现一个分号(;)时,AutoCAD就用ENTER代替。

如果行的末尾有一个控制字符、一个反斜线符(\)、一个加号(+)或一个分号(;)时,AutoCAD就不在后面加空格。

看以下的宏

erase \;

如果该项只是以一个反斜线符(\)结尾(需要用户输入),它就不能完成ERASE功能,因为AutoCAD没有在反斜线符(\)后加一个空格。因此,在用户输入之后,这个宏用了一个分号(;)来强迫产生一个回车键。又如以下例子:

ucs

ucs ;

text \.4 0 DRAFT Inc;;;Main St.;;;City, State;

选择第一个宏并在命令行输入ucs和空格键,就会出现以下提示:

Enter an option [New/Move/orthoGraphic/Prev/Restore/Save/Del/Apply/?/World]
:

选择第二个宏并在命令行输入ucs、空格键和一个分号(;),将接受缺省值。在屏幕上,第一个和第二个宏并没有明显的区别,因此,你无须把它们放在同一个菜单上。


选择第三个宏就会显示一个起点的提示,然后分三行绘制地址。在三个分号(;;;)中,第一个分号终止文本字符串,第二个可重复TEXT命令,第三个将调用紧随先前行的缺省位置。

注意:所有特殊的符号必须用他们的ASCII等效值输入。要查询这些ASCII等效值,请参看"宏字符所映射的ASCII等效值"




暂停等待用户输入

有时候这样的做法是很有用的,它可以在宏中需要输入点时放置一个反斜杠(\)来接受键盘或点设备输入。

circle \1

layer off \;

第一个宏暂停后需要用户输入中心点,然后从宏中读取半径为1。注意在反斜线符(\)后没有空格。下一个宏暂停后要求用户输入一个层的名称,然后关闭该层并退出LAYER命令。如果你按了空格(空白)或回车(;)时LAYER命令通常提示提示下一操作并退出。

通常情况下,当一个项目输入后,宏就会恢复。因此,它不可能建立接受一个可变数字输入
(如对象选择集)并继续下去的宏。然而,SELECT命令却是例外的;一个反斜杠将暂时挂起的执行直到对象选择完成。例如,看看以下宏:

select \change previous ;properties
color red ;

该宏用了SELECT命令以创建一个包含一个或多个对象的选择集。它随后执行CHANGE命令,使用了Previous选项来引用该选择集,并将所有选定对象的颜色更改为红色。

因为反斜杠符号(\)会导致宏暂停下来等待用户输入,你不能在宏中将其用于其它用途。当指定文件目录路径时,使用斜杠(/)作为路径分隔符:例如:/dir

ect/file。

以下情况将延迟宏的继续:

如果是需要输入一个点,对象捕捉方式将比输入的实际点优先。
如果用X/Y/Z点过滤器,宏将保持暂停直到整个点完成。
只对SELECT命令,宏是当对象选择完成后才会再继续。
如果用户用一个透明的命令来响应,宏将被挂起直到透明命令完成后才得以继续。
如果用户通过其它宏(提供选项或执行透明命令)来响应,原始的宏将被挂起,在新的选定项处理完成后挂起的宏才得以恢复。
取消一个命令

要想确定你没有上一级的未完成的命令,可以在宏中使用^C^C。这相当于在键盘上连续按两次ESC键。虽然单一的^C可以取消大部分的命令,但从一个DIM命令返回到命令提示符必须使用^C^C。因此,^C^C可以在最大程度上确保AutoCAD返回到命令提示符。



宏循环

一旦你选择了一个命令,你很可能要多次重复该命令后才转到其它命令上。以下就是在多数人使用工具的方式:你先选择一个工具,用它做了很多事后,又换另一个工具,如此类推。为了避免在每使用一次工具前都重复地选择,AutoCAD提供了一个命令循环功能,用一个空响应来激发。然而,你不能用这个功能去指定命令选项。

这个特性使你能够在更换到其它命令之前频繁地重复使用一个命令。如果一个宏以*^C^C开始,后面紧跟项的标签,这个宏就被保存在内存中。接下来的命令提示符都由这个宏回答,直到宏被ESC或选择其它的宏而终止。

不要在由*^C^C字符串开始的宏中用^C;这会取消宏循环。

以下示例重复进行命令处理的方法:

*^C^CMOVE Single

*^C^CCOPY Single

*^C^CERASE Single

*^C^CSTRETCH Single Crossing

*^C^CROTATE Single

*^C^CSCALE Single

宏循环对图标菜单中的项无效。



单一对象选择模式的使用

单一对象选择就是将对象的选择定为一个单一的选择模式,禁用通过对象选择的普通对象行为,并且使得这个选择返回被后来选项选中的第一个对象。这在宏中非常容易实现。例如,可以用以下的宏:

*^C^CERASE single

这个宏终止了当前的命令并用单一选择项来激活ERASE命令。在你选择了这个项之后,你可以指向这个单一的对象使它被擦去,或者可以指向一个空白区来指定一个窗口。用这种方式选择的对象就被擦去了,并且宏是重复的(由于第一位的那个星号),所以你可以擦去其它的一此东西。单一选择方式可产生AutoCAD的更多的动态交互。



相关文档
最新文档