Адресация раскрывающихся и контекстных меню

Включить или отключить отдельные пункты раскрывающихся и контекстных меню можно тем же способом, что и вложенные меню. Это называется адресация.

Обращаться к раскрывающимся и контекстным меню можно двумя разными способами, которые называются относительная адресация и абсолютная адресация. При абсолютной адресации указывается абсолютное положение элемента в иерархии меню. При относительной адресации указывается имя группы адаптации и код элемента. Относительная адресация рекомендуется в связи с ее динамической природой, но отсутствует в AutoCAD LT.

Абсолютная адресация

Включить или отключить отдельные элементы меню можно с помощью следующего синтаксиса:

$Pn.i=xxx

С помощью $ можно загрузить раздел меню; Pn задает активный раздел меню (от 0 до 16); i задает номер элемента меню; xxx (если присутствует) задает недоступность или пометку.

С помощью синтаксиса $Pn=xxx в следующем примере помечается пункт 1 меню с псевдонимом POP7.

$P7.1=!.

В следующем примере для выполнения адресации элемента раскрывающегося или контекстного меню в AutoCAD используется функция AutoLISP menucmd . Так как файлы адаптации являются динамическими (благодаря загрузке файлов частичной адаптации CUIx), приведенный ниже синтаксис будет работать не во всех случаях.

(menucmd "P1.2=~")

Синтаксис основывается на заданном положении элемента меню и не работает в случаях, когда новый элемент меню подставлен перед разделом POP1 командой НПИЗАГР.

Несмотря на иерархичность меню, нумерация элементов меню последовательна.

При адресации элементов меню (независимо от их местоположения в иерархической структуре) можно пользоваться следующим:

$P@.@=xxx

Выполняет адресацию текущей или наиболее часто выбираемой команды.

$P@.n=xxx

Таким образом обеспечивается согласованность работы базового меню и фрагментов меню.

Относительная адресация (недоступно в AutoCAD LT)

Чтобы выполнить адресацию элемента раскрывающегося или контекстного меню на основании группы адаптации и кода элемента, используйте функцию AutoLISP menucmd . С помощью следующего синтаксиса выполняется адресация элемента меню на основании кода элемента.

(menucmd "Gcustomizationgroup.element_id=value")

В следующем примере синтаксис относительной адресации используется для отключения элемента меню ID_Line, который находится в группе адаптации ACAD. Элемент меню можно одновременно сделать недоступным и пометить.

(menucmd "GACAD.ID_Line=~")

Если известно, что содержится в основном файле адаптации (CUIx), можно создать файл частичной адаптации (CUIx) с дополнительным элементом меню, ссылающимся на основной файл CUIx. Таким путем обеспечивается согласованность работы файлов частичной адаптации CUIx и определенных основных файлов адаптации.

Доступ к статусу меток из AutoLISP (отсутствует в AutoCAD LT)

Функция AutoLISP menucmd воспринимает строки команд $Pn=xxx, но без начального символа $. Для этих функций элемент xxx может иметь специальные значения.

Pn.i=?

Возвращает состояние недоступности и пометки указанного элемента в виде строки (например, ~ для недоступного пункта, !. для помеченного элемента, "" для элемента, который доступен и не помечен).

Pn.i=#?

Возвращает строку того же типа, что и для , однако с Pn.i= префикс. Это очень удобно в сочетании с формами @, поскольку возвращается фактический номер меню и номер элемента.

Например, если пятый элемент в разделе POP6 отключен, следующий код в menucmd возвращает показанные ниже строковые значения.

(menucmd "P6.5=?")     returns  "~" 
(menucmd "P6.5=#?")    returns  "P6.5=~"