引用下拉菜单或快捷菜单 (概念)

AutoCAD 2008

 
引用下拉菜单或快捷菜单
概念 快速参考
 
 
 

使用与激活子菜单类似的方法,可以激活或取消激活另一个下拉菜单或快捷菜单。这称为引用菜单。

引用下拉菜单或快捷菜单有两种方法:相对引用绝对引用。相对引用使用自定义组和元素 ID。绝对引用使用菜单项在菜单层次结构中的绝对位置。建议使用相对引用,因为其动态性使得无论菜单的当前状态如何,都能发挥作用。

下拉菜单命令和快捷菜单命令的相对引用

要基于自定义组和元素 ID 引用下拉菜单项或快捷菜单项,请使用 AutoLISP menucmd 函数。以下语法基于元素 ID 引用菜单项。

(menucmd "Gmenugroup.element_id=value") 

下例使用相对引用语法禁用存储在 sample 自定义组中的菜单项 ID_Line。不管菜单项位于菜单中的什么位置,它都能起作用。

(menucmd "Gsample.ID_Line=~")

如果知道主 CUI 文件中的内容,可以使用引用主文件的其他菜单项创建局部 CUI 文件。这样,局部 CUI 文件和特定的基本文件就可以配合使用。

下拉菜单项和快捷菜单项的绝对引用

除了引用菜单项之外,用户还可以使用 $Pn=xxx 语法来激活或取消激活菜单项。其格式为:

$Pn.i=xxx

$ 用于加载菜单部分;Pn 用于指定活动的菜单部分(0 到 16 为有效值);i 用于指定菜单项数量;xxx(如果存在)用于指定灰显的或标记字符的字符串。

下例使用 $Pn=xxx 语法,将复选标记添加到 POP7 部分的项 1。

$P7.1=!.

以下样例用 AutoLISP menucmd 函数来引用下拉菜单项或快捷菜单项。由于自定义文件是动态的(通过加载局部 CUI 文件),以下语法在任何情况下都不起作用。

(menucmd "P1.2=~")

此语法取决于菜单项的位置,如果使用 CUILOAD 命令在 POP1 前插入新项,此语法将无法正常工作。

菜单项编号是连续的,与菜单的层次结构无关。

要使菜单项更容易定位,而又不必考虑其在菜单层次结构中的位置,请使用下列格式:

$P@.@= xxx

引用当前或最近选择的命令。

$P@. n = xxx

引用当前或最近选择的菜单中的项目 n

AutoLISP 对标签状态的访问

AutoLISP menucmd 函数接受 $Pn=xxx 命令字符串,但不接受前导 $。对于这些函数,该命令字符串的 xxx 部分可以为特殊值。

P n . i =?

以字符串形式返回指定项的当前禁用和标记状态(例如,~ 表示禁用的项,!. 表示标记了复选标记的项,"" 表示既未禁用也未标记的项)。

P n . i =#?

返回与 Pn.i=? 中所述同一类型的字符串,但带有 Pn.i= 前缀。这有利于将它们与 @ 格式配合使用,因为返回了实际的菜单和菜单项的编号。

例如,如果 POP6 部分的第五项被禁用,则下列 menucmd 代码返回下列字符串值。

(menucmd "P6.5=?") 返回 "~" 
(menucmd "P6.5=#?") 返回 "P6.5=~"