发出菜单命令,或设置并检索菜单项状态
(menucmd string)
menucmd 函数可以在 AutoCAD 菜单的各个子页间进行切换,还可以强制菜单显示。这样,AutoLISP 程序中就可以使用图像控件菜单,或者显示其他菜单让用户选择。AutoLISP 程序还可以启用或禁用一些菜单项,或给菜单项加上标记。
参数
string
字符串,指定菜单区和要赋给这个菜单区的值。string 参数有下列参量:
"menu_area=value"
下表中列出了 menu_area 的允许值,它们与菜单文件中的子菜单引用格式完全相同。详细信息请参见《自定义手册》中的“下拉菜单和快捷菜单”。
B1–B4 BUTTONS 菜单 1 至 4。
A1–A4 AUX 菜单 1 至 4。
P0–P16 下拉式菜单 (POP) 0 至 16。
I 图像控件菜单。
S SCREEN 菜单。
T1–T4 TABLET 菜单 1 至 4。
M DIESEL 字符串表达式。
Gmenugroup.nametag 菜单组名称和标志。
返回值
nil
示例
下列代码将显示图像控件菜单 MOREICONS。
(menucmd "I=moreicons") 加载 MOREICONS 图像控件菜单
(menucmd "I=*") 显示菜单
下面的代码检查下拉式菜单 POP11 中第三个菜单项的状态。如果菜单项目前已经启用,则 menucmd 函数将其禁用。
(setq s (menucmd "P11.3=?")) 获取菜单项的状态
(if (= s "") 如果状态为空字符串,
(menucmd "P11.3=~") 则禁用该菜单项
)
上述代码不是在任何情况下都能正确运行,因为除了启用或禁用状态外,菜单项还可以接收标记。代码 (menucmd "P11.3=?") 可能会返回 "!.",这说明该菜单项当前已打上了一个复选标记。这种情况下,上述代码会认为该菜单项已经被禁用,而不再禁用它。如果该代码中包含了对 wcmatch 函数的调用,它还可以检查波浪号 (~) 是否在状态字符串中出现,从而执行相应的动作。
menucmd 函数还允许 AutoLISP 程序发挥 DIESEL 字符串表达式语言的优越性。某些事情用 DIESEL 来完成可能比用等价的 AutoLISP 代码来完成更容易。下列代码返回一个包含当前日期和时间的字符串:
(menucmd "M=$(edtime,$(getvar,date),DDDD\",\" D MONTH YYYY)")
返回 "星期日,16 六月 1995"
参阅
关于使用 AutoLISP 获取菜单标签状态和使用 DIESEL 的详细信息,请参见《自定义手册》。
明经通道 版权所有 未经许可 不得传播 | 评论 |