您可以将自定义 (CUI/CUIx) 文件中的 DIESEL 字符串表达式用作创建宏的其他方法和更改下拉菜单标签的方式。

DIESEL 表达式可以与用户界面元素一起使用且必须遵循 $section=submenu 格式;其中,部分名称为 M,子菜单为要使用的 DIESEL 表达式。

请看下面的样例:

^C^C^P$M=$(if,$(=,$(getvar,cvport),1),mspace,pspace)

此 DIESEL 表达式基于 CVPORT 系统变量的当前值提供了一种在模型空间和图纸空间之间进行切换的方式。当 CVPORT 设定为 1 时,将执行 MSPACE 命令;否则,将执行 PSPACE 命令。此表达式是以透明方式进行计算的。如果省略特殊字符 ^P(用于切换 MENUECHO 的开关状态),则表达式仅显示已执行的命令。

在使用 -INSERT 命令插入说明块时,以下样例中的 DIESEL 表达式用于将 DIMSCALE 的当前值乘以值 0.5 以计算比例因子。

^C^C-insert;note;0,0;$M=$(*,$(getvar,dimscale),0.5);;0;

DIESEL 表达式也可以用于定义下拉菜单项标签,以便用户禁用菜单或改变菜单显示方式。在下拉菜单标签中使用 DIESEL 表达式时,确保第一个字符为 $ 字符。

在此样例中,当前图层设定为 BASE,以下 DIESEL 表达式将用作下拉菜单的标签。

$(eval,"Current layer: " $(getvar,clayer))

结果将显示适当的下拉式菜单,并且该菜单随着当前图层的更改而更新。

Current Layer: BASE

注: 下拉式菜单和快捷菜单的宽度已在加载自定义文件时确定。加载菜单后由 DIESEL 表达式生成或更改的菜单标签都将被截断以符合现有菜单的宽度。

如果预计到 DIESEL 生成的菜单标签将过宽,则可用下例来确保菜单宽度能容纳该标签。本例显示 CLAYER 系统变量当前值的前 10 个字符。

$(eval,"Current value: " $(substr,$(getvar,clayer),1,10))

不能在菜单标签中使用后续空格来增加菜单的宽度,因为加载菜单时后续空格将被忽略。任何用于增加菜单标签宽度的空格都必须包含在 DIESEL 表达式中。

下例使用相同的 DIESEL 表达式作为菜单项的标签和显示部分。它提供了在图形中输入当前日期的有效方法。

菜单标签

$(edtime,$(getvar,date),DDD", "D MON YYYY)

^C^Ctext \ $M=$(edtime,$(getvar,date),DDD", "D MON YYYY);

也可以使用 DIESEL 宏来标记或禁用下拉式菜单标签。下面的下拉菜单标签在命令处于活动状态时显示为不可用。文字通常是在命令未激活时显示。

$(if,$(eq,$(getvar,tilemode),1),~)&Polygonal Viewport

可以使用类似的方法在下拉式菜单项旁边作标记或者交互更改标记所使用的字符。

$(if,$(and,$(getvar,ucsicon),1),!.)&On
,