Включить или отключить отдельные пункты раскрывающихся и контекстных меню можно таким же образом, как и обычные подменю. Это называется адресацией в меню.
К пунктам раскрывающихся и контекстных меню можно обращаться двумя способами: относительно и абсолютно. При относительной адресации указываются группа настройки и код элемента. При абсолютной адресации указывается абсолютное положение пункта в иерархии меню. Рекомендуется использовать относительную адресацию, т.к. она по своей природе динамична и не зависит от текущего состояния меню.
Относительная адресация команд раскрывающегося и контекстного меню
menucmd. С помощью следующего синтаксиса выполняется адресация элемента меню на основании кода элемента.
Чтобы выполнить адресацию элемента раскрывающегося или контекстного меню на основании группы настройки и кода элемента, используйте функцию AutoLISP(menucmd "Gгруппа_меню.код_элемента=значение")
ID_Line, который находится в группе настройки sample, используется синтаксис относительной адресации. Пункт меню можно одновременно сделать недоступным и пометить.
В следующем примере для отключения элемента меню(menucmd "Gsample.ID_Line=~")
Если известно, что находится в основном файле НПИ, можно создать частичный файл НПИ с дополнительным элементом меню, который выполняет адресацию в основной файл. Таким образом, обеспечивается согласованность работы частичных файлов НПИ и файлов основного меню.
Абсолютное обращение к раскрывающимся и контекстным меню
$Pn=xxx. Для этого используется формат:
Включить или отключить отдельные пункты меню можно с помощью синтаксиса$Pn.i=xxx
$ можно загрузить раздел меню; Pn задает активный раздел меню (от 0 до 16); i задает номер пункта меню; xxx (если присутствует) задает недоступность или пометку.
С помощью$Pn=xxx в следующем примере помечается пункт 1 раздела POP7.
С помощью синтаксиса$P7.1=!.
menucmd. Следующий синтаксис нельзя будет применять во всех случаях, так как файлы настройки по своей природе динамичны (в результате загрузки частичных файлов НПИ).
В следующем примере для выполнения адресации элемента раскрывающегося или контекстного меню используется функция AutoLISP(menucmd "P1.2=~")
POP1 командой НПИЗАГР.
Синтаксис основывается на заданном положении элемента меню и не работает в случаях, когда новый элемент меню подставлен перед разделомНесмотря на иерархичность меню, нумерация элементов меню последовательна.
При адресации элементов меню (независимо от их местоположения в иерархической структуре) можно пользоваться следующими формами:
Выполняет адресацию текущей или наиболее часто выбираемой команды.
Таким образом обеспечивается согласованность работы базового меню и фрагментов меню.
Доступ к состоянию пунктов из AutoLISP
menucmd воспринимает строки команд $Pn=xxx, но без начального символа $. Для этих функций элемент xxx может иметь специальные значения.
Функция AutoLISP~ для недоступного пункта, !. для помеченного пункта, "" для пункта, который доступен и не помечен).
Возвращает состояние недоступности и пометки указанного элемента в виде строки (например,Pn.i=?, но с добавлением префикса Pn.i= префикс. Это очень удобно в сочетании с формами @, поскольку возвращается фактический номер меню и номер элемента.
Возвращает такую же строку, как иPOP6 отключен, следующий код вmenucmd возвращает показанные ниже строковые значения.
Например, если пятый элемент в разделе(menucmd "P6.5=?") возвращает "~"
(menucmd "P6.5=#?") возвращает "P6.5=~"