Пользовательский интерфейс системы AutoCAD. Адаптация существующих меню, создание новых меню, изменение функций элементов, страница 8

(menucmd   "P10.2=~")

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

Отметка пункта меню не препятствует его отключению. Программное обеспечение системы AutoCAD контролирует состояние большинства пунктов группы ACAD и не дает возможности отключать ил пользовательским программам.

20. Восстановление пункта меню                                

Для того чтобы восстановить обычное состояние пункта падающего меню (снять отметку и отключение), нужно выполнить следующую операцию:

(menucmd  "Р10.2=")                                                           

Данное действие восстановит пункт с номером 2 из десятого меню.

21. Замена меню

Возможна замена падающего меню на другое, которое еще не фигурирует в пользовательском интерфейсе. Схема замены следующая:                                                                                    

(menucmd   "P1O=RITM.POP13")                    

Данная операция заменит десятое падающее меню в пользовательском интерфейсе на меню из раздела POPI3 группы RITM. Можно при замене опускать имя группы, если вместо предыдущего меню    вставляется меню из группы базового меню, например:

(menucmd   "Р10=РОР12")                    

Если в качестве базового в данный момент выбрано стандартное меню системы AutoCAD, то в этом случае десятое меню заменится на меню из раздела РОР12 группы ACAD. Вместо имени раздела (РОР13, РОР12) можно было использовать имена меню, которые следуют с префиксом из двух звездочек за строкой с именем раздела (например, в листинге 4.1, имя меню, находящегося в разделе РОР11, — help).

Примеры:                                                             

_      (menucmd   "P10=RITM.GENHULL")         

_      (menucmd   "P10=HELP")        

22. Справка о состоянии пункта меню

Справку о состоянии пункта можно получить с помощью функции «menucmd», используя знак вопроса в качестве значения параметра <действие>.

Пример:

(menucmd   "P11.1=?")

Это выражение выводит состояние первого пункта одиннадцатого падающего меню.

Возвращается "~", если пункт 1 одиннадцатого падающего меню отключен; "!", если пункт содержит отметку слева от наименования; "", если пункт находится в обычном состоянии (включен и без отметки); nil, если нет падающего меню с таким номером. Если пункт и отключен и отмечен, то возвращается "~!" или  "!~"  в зависимости от порядка действий, выполненных над пунктом.

Возможно выполнение операции расширенной справки, для чего перед знаком вопроса следует добавлять символ #

(menucmd   "P11.!=#?")

Это выражение возвращает состояние пункта, но с префиксом, например:

"Р11.1="   ИЛИ   "Р11.1=!"

23. Каскадные меню

Падающие меню могут быть многоуровневыми, образуя каскадные меню. На рис. 4.15 показано падающее меню с трехуровневым каскадом. В листинге 4.3.приведен фрагмент раздела РОРЗ группы ACAD.

 Листинг 4.3. Фрагмент раздела РОРЗ файла acad.mnu

ID_MnDisplay   [->0тобра&жение]                  

ID__MnUCSicon   [->&Пиктограмма ПСК]           

ID_UcsiconOn    [$ (if,$ (and, $ (getvar,ucsicon), 1) , ! . ) &Вкл]+$M=$ (if, $ (and, $ (getvar,ucsicon) , 1), ^C^C_ucsicon _off, ^C^C_ucsicon _on)                                                                      

ID_JcsicoriOr     [<-$(if,$ (and,$(getvar,ucsicon) ,2), !.)&Начало]+ $M=$(if,$(and,$(getvar,ucsicon}, 2) ,^C^C_ucsicon _no,^C^C_ucsicon _or)                                                               

ID_MnAttribu   [->&Атрибуты]                                            

ID_AttdispNo [$(if,$(eq,$(getvar,attmode) , 1) , !.)&Нормальное]+ '_attdisp_n

[--]