Макросы команд могут содержать команды, специальные символы, выражения DIESEL, или программные коды AutoLISP.
Можно определить и затем назначить макросы команде, изменив свойство "Макрос" команды в редакторе адаптации пользовательского интерфейса (Windows) или диалоговом окне "Адаптация" (Mac OS).
Макрос определяет действие, которое должно выполняться в том случае, если используется элемент интерфейса пользователя. Он может быть такой же простой, как команды (например, circle), и включать специальные символы (например, ^C^C).
Например, макрос ^C^C_.circle \1 строит окружность с радиусом, равным 1 единице. Компоненты, определяющие этот макрос, описаны в следующей таблице.
Компоненты макроса CIRCLE |
||
---|---|---|
Компонент |
Тип компонента |
Результат |
^C^C |
Последовательность специальных управляющих символов |
Эта последовательность аналогична двойному нажатию клавиши ESC. |
_ |
Специальный управляющий символ |
Указание того, что выполняемая команда будет использовать глобальное имя команды, а не локализованное. |
. |
Специальный управляющий символ |
Указание того, что выполняемая команда будет использовать встроенное определение команды, а не повторное определение команды, которая уже существует. |
КРУГ |
Команда |
Запуск команды КРУГ. |
Специальный символ |
Оставляет столько же места, сколько при нажатии клавиши ПРОБЕЛ при использовании команды. |
|
\ |
Специальный управляющий символ |
Формирование паузы для ввода данных пользователем; в данном примере это пауза для центра окружности. |
1 |
Специальный управляющий символ |
Ответ на запрос радиуса круга; в данном примере это значение 1. |
Если кнопка в интерфейсе пользователя нажата, макрос, назначенный ей, все равно выполняется в текущем контексте программы. Это значит, что макрос будет пытаться ответить на текущий запрос. Если требуется убедиться, что ни одна команда не активна при выполнении макроса, поставьте перед макросом префикс последовательности команд^ C. Для отмены большинства команд достаточно ввести ^C один раз; для возврата к командной строке из команды простановки размеров необходимо ввести ^C^C; в зависимости от текущего параметра команды СЛОЙ может потребоваться ввести ^C^C^C. ^C^C обеспечивает отмену большинства последовательностей команд, поэтому рекомендуется широко использовать эту последовательность.
При написании макросов значимым является каждый символ, даже пробел. Размещение пространства в конце макроса интерпретируется как нажатие клавиши ПРОБЕЛ или ENTER для завершения команды.
Команды, которые являются частью AutoCAD или программ на ее основе, должны начинаться с точки (.). Пробел позволяет использовать стандартные команды даже в том случае, если определение команды аннулировано с помощью команды НЕТКОМ. Эти меры предосторожности позволяют избежать непредвиденных результатов при работе макроса, когда он используется на других компьютерах, задействующих тот же файл адаптации (CUI/CUIx).
При первом создании макроса обычно используются имена команд и значения параметров на знакомом языке пользователю. У каждой команды и параметра имеется локальное и глобальное имя, что позволяет использовать макросы на разных языках, поддерживаемых AutoCAD. Поддержка локализованных элементов не требует много дополнительной работы. Перед командой или параметром необходимо просто вставить знак подчеркивания (_). Знак подчеркивания сигнализирует AutoCAD, что имя команды или значение параметра должны быть преобразованы перед выполнением.
Метод выбора объектов "Единственный" отменяет повторение запроса о выборе объектов в командной строке. После выбора одного объекта и ответа на другие запросы команда завершается.
Рассмотрим следующий пример:
^C^C._erase single
Этот макрос прерывает текущую команду и вызывает команду СТЕРЕТЬ в режиме выбора одного объекта. После запуска макроса, можно либо выбрать единичный объект, либо щелкнуть в пустой области чертежа и указать секущую рамку/рамку выбора. Все объекты, выбранные с помощью следующих методов стираются.
После создания макроса, возможно, потребуется использовать его несколько раз перед использованием другой команды. В макросе можно поставить символ звездочки (*), указывающий на то, что команда макроса должна повторяться до тех пор, пока не будет нажата клавиша ESC или использовать другой макрос, который начинается с ^C.
Приведенный ниже пример иллюстрирует повторный вызов команд в макросе:
*^C^C._move Single *^C^C._copy Single *^C^C._erase Single *^C^C._stretch Single Crossing *^C^C._rotate Single *^C^C._scale Single
Для завершения некоторых макросов требуются специальные символы. Например, команда ТЕКСТ для завершения требует нажатия клавиши ENTER, а не ПРОБЕЛ, а некоторые другие команды требуют нескольких нажатий клавиши ПРОБЕЛ (или ENTER).
Для решения этих проблем приняты два специальных соглашения.
Сравним следующие макросы:
ucs ucs ;
Первый пример начинается с команды ПСК, так как строка заканчивается пробелом, моделируется нажатие клавиши ПРОБЕЛ. В командной строке появится следующий запрос:
Начало ПСК или [Грань/Именованная/Объект/Предыдущая/Вид/Мир/X/Y/Z/Z ось] <Мир>:
Второй пример начинается с команды ПСК, имитируется нажатие клавиши ПРОБЕЛ, а затем нажатие клавиши ВВОД, принимается значение по умолчанию ("Мир").
Символы макроса дублируются в командном запросе, как если бы они были введены с клавиатуры. Дублирование на экране называется “эхо-выводом“. Можно подавить эхо-вывод макроса с помощью системной переменной MENUECHO. Если эхо-вывод и запросы для элемента меню включены, их можно временно отключить в макросе с помощью последовательности ^P. Можно также использовать в макросе последовательность ^Q, чтобы подавить отображение всех запросов и ввод из журнала командной строки.