明经通道 AutoLISP 函数  
menucmd
 

发出菜单命令,或设置并检索菜单项状态

(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 的详细信息,请参见《自定义手册》。

明经通道 版权所有 未经许可 不得传播

 评论