В AutoCAD используются понятия базового меню и фрагментов меню. Базовым называется меню, которое было загружено последним с помощью команды МЕНЮ. Фрагментом называется меню, которое было загружено с помощью команды МЕНЮЗАГР. Команда МЕНЮЗАГР загружает фрагменты меню, позволяя добавлять и упорядочивать элементы строки меню. Вместе с фрагментом меню в AutoCAD загружаются все связанные с ним элементы интерфейса. Для того чтобы отдельные падающие меню отображались в строке меню, их нужно явно добавить туда с помощью вкладки «Активные меню» диалогового окна «Адаптация меню» или с помощью AutoLISP. В процессе загрузки фрагментов меню работает ранее описанная процедура создания MNC, MNR и MNS файлов. AutoCAD также загружает соответствующие файлы MNL и DLL (файл ресурсов), если такие имеются.
При выходе из AutoCAD запоминаются имя базового меню, имена фрагментов меню (до 24) и имена падающих меню, входящих в строку меню (до 24). Это обеспечивает постоянство интерфейса AutoCAD при его перезагрузке.
Концепция фрагментов меню позволяет пользователям и программистам эффективно манипулировать различными меню. AutoCAD обеспечивает удобный способ управления отдельными пунктами меню. Каждый пункт имеет свой идентификатор, а каждому файлу меню соответствует имя группы меню. Включить или отключить любой пункт меню, а также проверить его статус можно, указав его идентификатор и имя группы меню, которой он принадлежит.
Фрагменты меню позволяют придавать более совершенный вид приложениям на AutoLISP. Установить, загружен ли конкретный файл меню, можно с помощью следующего выражения:
(menucmd "Gимя_группы.идентификатор=?")
Если файл загружен, возвращается непустое значение; если не загружен — значение nil. Более подробно об этом можно узнать в разделе «Обращение к падающим и контекстным меню» .
После того, как приложение установило наличие нужного меню, можно выполнять с ним дальнейшие действия.
Пользователь загружает фрагменты меню с помощью диалогового окна «Адаптация меню» команды МЕНЮЗАГР. Приложение при загрузке фрагмента меню работает с вариантом МЕНЮЗАГР для командной строки. В следующем примере для вызова команды МЕНЮЗАГР и загрузки фрагмента меню из файла testmenu используется функция command.
(command "_menuload" "testmenu")
Приложение размещает падающие меню, описанные во вновь загруженных фрагментах меню, с помощью функции menucmd, как показано в следующих примерах.
(menucmd "P6=+sample.pop1")
(menucmd "Gsample.pop1=+sample.pop2")
Первый пример соответствует вставке меню POP1 из группы SAMPLE непосредственно перед падающим меню, находившимся ранее в шестой позиции (считая слева). Во втором примере меню POP2 из группы SAMPLE устанавливается непосредственно перед меню POP1 из группы SAMPLE (в синтаксисе используются глобальные ссылки).
Более подробно о синтаксисе можно узнать в разделе «Обращение к падающим и контекстным меню» .
Команда МЕНЮВЫГР выгружает фрагменты меню из базового меню и удаляет соответствующие падающие меню из строки меню. Для того чтобы удалить отдельные падающие меню, не обязательно выгружать группу меню целиком. Синтаксис операции подобен используемому для добавления падающих меню:
(menucmd "Gsample.pop1=-")
(menucmd "Gsample.pop2=-")
С помощью этих выражений из строки меню удаляются отдельные падающие меню, но их группа меню остается загруженной.
Частое изменение пользовательского меню приводит к ухудшению понимания интерфейса приложения. Динамическое изменение строки меню оправдано только в случаях, когда пользователь выполняет требующие этого серьезные операции. Так, например, после выгрузки некоторого приложения из строки меню можно убрать относящиеся к нему меню.
Меню полностью перестраивается (с потерей всех загруженных ранее фрагментов меню) после выполнения команды МЕНЮ , которая загружает новый файл базового меню. При этом также теряются связи, установленные ранее для идентификаторов пунктов меню.
Файл меню состоит из нескольких разделов, описывающих различные области интерфейса AutoCAD. В зависимости от выполняемых функций, каждая область меню описывается одним или несколькими разделами. Внутри разделов меню описываются пункты меню (их внешний вид и выполняемые ими функции). Описание пункта меню включает в себя следующие элементы: идентификатор, имя и макрос меню. Пункты меню, описываемые в различных разделах, аналогичны по структуре и функциональности, но отличаются синтаксической структурой имен.
Не обязательно описывать в одном файле компоненты всех разделов меню. В него необходимо включать только те из них, которые используются данным приложением. Рекомендуется разбить меню на несколько файлов меньшего размера, каждый из которых можно при необходимости загрузить с помощью команды МЕНЮЗАГР. Это не только обеспечивает более эффективное использование ресурсов системы, но и облегчает разработку и использование приложения, так как в этом случае в процесс вовлечены относительно небольшие по размеру фрагменты меню.
Каждый раздел файла меню имеет заголовок в формате ***имя_раздела. Заголовки и соответствующие им разделы перечислены в следующей таблице.
Заголовки разделов меню |
|
Заголовок раздела |
Область меню |
***MENUGROUP |
Имя группы файла меню |
***BUTTONSn |
Кнопочные меню устройства указания |
***AUXn |
Меню системного устройства указания |
***POPn |
Падающие/контекстные меню |
***TOOLBARS |
Описания панелей инструментов |
***IMAGE |
Графическое меню |
***SCREEN |
Экранное меню |
***TABLETn |
Планшетное меню |
***HELPSTRINGS |
Текст, выводимый в строке состояния для выделенных пунктов падающих и контекстных меню, а также кнопок панелей инструментов, на которые указывает курсор. |
***ACCELERATORS |
Описания клавиш быстрого вызова |
В файл меню можно включать пояснения, упоминания об авторских
правах и другие комментарии. Строки, начинающиеся с двух косых черт
(//), игнорируются компилятором:
//Это — строка комментария
Все пункты меню, независимо от раздела, имеют одинаковый общий синтаксис. Их описания (за исключением раздела Image, в котором идентификаторы пунктов меню не используются) включают в себя идентификатор, имя и макрос меню. Как правило, описание пункта меню записывается в одну строку и имеет следующий формат:
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.