利用AutoCAD提供的特殊字符可以制作各种特殊效果的菜单。我们将前面介绍的POP12菜单区域稍作修改,制作一些特殊的菜单,如分隔线、子菜单、被禁用的菜单等。修改后的菜单代码如下:
***POP12
[绘制]
[直线(&L) Ctrl+L] ^c^c^_line
[->圆] ^c^c_circle
[R50圆] ^c^c_circle 50
[<-R80圆] ^c^c_circle 80
[--]
[~文字] ^c^c_text
使用Menu命令重新载入ACAD.MNU菜单样板文件,可以发现我们自制的“绘制”菜单增加了快捷键、子菜单、分隔线和禁用菜单,如图9所示。
![]() |
| 图9 |
在上面的代码中,“直线”菜单项增加了带下划线的菜单热键(L),还增加了快捷键CTRL+L。它的标签由[直线]变成了[直线(&L) Ctrl+L]。其中“&”的作用是给“&”后的第一个字符加上下划线,并将其作为该菜单项的菜单热键;“ ”的作用是将其后的所有文字推向右边,即靠右对齐。菜单项“圆”的下面增加了两个子菜单。子菜单由一对特殊符号进行定义,符号“->”用在父菜单项标签的开头,表示这个菜单项含有子菜单;符号“<-”用在最后一个子菜单项标签的开头,表示这个菜单项是整个子菜单的最后一项。值得注意的是:这两个符号必须成对出现。AutoCAD会自动忽略不能与其它符号匹配的符号,这样“圆”菜单项也已经失去了原有的画圆功能。这是因为如果一个菜单项含子菜单,AutoCAD会自动忽略含该菜单项的菜单宏,这与Windows中的层叠菜单是相同的。菜单项“圆”的下面多了一条分隔线,这条分隔线是由两个连字符“[-]”产生的,分隔线不能被选中,其后的任何菜单宏都会被忽略。在一个菜单项的标签开始处加一个波浪线“~”就可以禁用该菜单项。“文字”菜单项就进行了这样的处理。被禁用的菜单项会变为灰色,不能被选中。当然,创建一个总是被禁用的菜单项是没有任何意义的,禁用符号通过都和AutoLISP语言的条件判断表达式组合使用,达到在特定状态下禁用特定菜单项的目的。例如在文本编辑器中,如果没有进行复制或剪切操作,那么粘帖菜单项就处于被禁用状态。
这个例子很简单,但是包括了最常用的几个标签控制字符的用法。AutoCAD提供的标签控制字符还有很多,下表显示了其它的标签控制符。
字符 说明 -- 下拉菜单或快捷菜单中的菜单项分隔符(使用时,不能包括其它任何字符)
+ 延续宏到下一行(如果是最后一个字符)
-> 指出下拉菜单或快捷菜单具有子菜单
<- 指出子菜单中的最后一个下拉菜单项或快捷菜单项
<-<-... 指出子菜单中的最后一个下拉菜单项或快捷菜单项并且结束父菜单。(每个<-结束一级
父菜单)
$( 如果作为第一个字符,则使下拉菜单或快捷菜单项标签求DIESEL字符串宏的值
~ 禁用菜单项的前缀符
!. 给菜单项打上复选标记的前缀符
& 直接放在下拉菜单或快捷菜单标签中一个字符之前,把该字符指定义菜单的热键。例如, S&le则将字每a下显示一条下划线
/ 指定下拉菜单或快捷菜单标签的菜单热键,通常与&符号配合使用把标签中这两个字符右边的文件置于菜单的右侧




