CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoLISP 开发指南

关于控制菜单(AutoLISP)

2023-1-6 12:38| 发布者: admin| 查看: 1289| 评论: 0|来自: AutoCAD

摘要: menucmd 函数控制菜单栏、绘图区域或图像标题菜单上的菜单显示。

该功能控制菜单栏、绘图区域或图像标题菜单上的菜单显示。menucmd

它显示、修改或查询当前菜单的子菜单之一,并接受一个字符串参数,该参数指定子菜单以及要对该子菜单执行的操作。该函数采用一个字符串参数,该参数由两个字段组成,由等号分隔,形式如下:menucmd

(menucmd "menu_area=action")

menu_area字段指定菜单的哪个部分接收操作。此字段可以指定菜单区域,例如(用于快捷菜单)或特定菜单项。操作字段指定要对菜单区域或菜单项执行的操作,或要加载到菜单区域中的子菜单。可以接收操作的菜单区域与自定义文件子菜单引用中使用的菜单区域相同。P0

每个菜单区域都有一个当前加载的子菜单。默认情况下,菜单部分标签后面的第一个子菜单将加载到该菜单区域中。

如果menu_area指定下拉菜单或图像磁贴菜单,则操作可以是星号 (*)。这会导致显示菜单;下拉菜单和图像磁贴菜单在调用时不会自动显示。

注意:在 Windows 中,仅显示带有星号的(光标)菜单和图像磁贴菜单。适用于 Mac 的 AutoCAD 不支持图像拼贴菜单。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)
)

路过

雷人

握手

鲜花

鸡蛋

最新评论

AutoCAD二次开发.NET源码资料

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 )

GMT+8, 2024-5-7 08:04

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部