该功能控制菜单栏、绘图区域或图像标题菜单上的菜单显示。menucmd 它显示、修改或查询当前菜单的某个子菜单,并接受一个字符串参数,该参数指定子菜单和要在该子菜单上执行的操作。该函数采用一个字符串参数,该参数由两个字段组成,用等号分隔,格式如下:menucmd (menucmd "menu_area=action") menu_area字段指定要接收操作的菜单的哪个部分。此字段可以指定菜单区域,例如(用于快捷菜单)或特定菜单项。操作字段指定要对菜单区域或菜单项执行的操作,或者要加载到菜单区域的子菜单。可以接收操作的菜单区域与自定义文件子菜单引用中使用的菜单区域相同。P0 每个菜单区域都有一个当前加载的子菜单。默认情况下,菜单部分标签后面的第一个子菜单将加载到该菜单区域中。 如果menu_area指定下拉菜单或图像磁贴菜单,则操作可以是星号 ( * )。这会导致显示菜单;下拉菜单和图像磁贴菜单在调用时不会自动显示。 注意:在 Windows 中,仅显示(光标)菜单和图像磁贴菜单,并带有星号。AutoCAD for Mac 不支持图像平铺菜单。P0
以下代码将带有别名的菜单加载到(光标)菜单区域并显示它。POP0P0 (menucmd "P0=POP0") ; Loads the POP0 menu into the P0 menu area (menucmd "P0=*") ; Display it 如果将正确的菜单加载到特定的菜单区域中,则无需在每次要显示它时都专门加载它。 以下代码显示当前加载在(第一个下拉菜单)位置的下拉菜单。P1 (menucmd "P1=*") 在不加载菜单的情况下使用可能会导致意外行为。尽管您几乎可以在下拉菜单或快捷菜单位置加载任何菜单,但最好仅使用专门为该菜单区域设计的菜单。例如,如果有一个名为 的子菜单,则可以使用以下代码在该位置加载它:"P1=*"MORESTUFFP1 (menucmd "P1=MORESTUFF") ; Loads the MORESTUFF menu in the P1 menu location (menucmd "P1=*") ; Displays it 此菜单将保留在此位置,直到您通过加载另一个菜单替换它,如下所示: (menucmd "P1=POP1") 如果您的菜单使用禁用(灰显)和标记功能,则可以使用该功能检索和更改菜单项标签的状态。以下调用检索下拉菜单中第四个标签的当前状态。menucmdP2 (menucmd "P2.4=#?") ; If disabled returns "P2.4=~" 这些函数调用启用和禁用相同的菜单项标签: (menucmd "P2.4=") ; Enables the label (menucmd "P2.4=~") ; Disables the label 您还可以在菜单项标签的左侧放置和删除标记。 前面描述的菜单项处理方法在单个静态菜单上效果相对较好。但是,当您加载多个部分菜单文件时,当菜单项位置发生变化时,它变得不可靠。您可以使用菜单组和名称标签功能来跟踪菜单项。您可以指定与菜单项关联的菜单组和名称标签,而不是按菜单项在菜单上的位置指定菜单项。 使用菜单组启用、禁用和标记菜单项标签时,必须在组名称前面加上 G,如以下示例所示。 (menucmd "Gacad.ID_New=~") ; Disables the label (menucmd "Gacad.ID_New=") ; Enables the label AutoLISP 函数不仅可以启用和禁用菜单项标签,还可以通过在标签中放置 DIESEL 字符串表达式来修改标签中显示的文本。由于 DIESEL 仅接受字符串作为输入,因此可以通过已设置为函数返回的值的 USERS1-5 系统变量将信息传递给 DIESEL 表达式。 还可以使用该函数计算 AutoLISP 函数中的 DIESEL 字符串表达式。以下例程返回当前时间:menucmd (defun C:CTIME ( / ctim) (setq ctim (menucmd "M=$(edtime,$(getvar,date),H:MMam/pm)")) (princ (strcat "\nThe current time is " ctim )) (princ) ) 父主题: |
|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2024-12-15 14:33
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.