Строки макросов команд

Строки макросов команд указывают AutoCAD, какие команды и системные переменные необходимо выполнить вместе с ожидаемыми значениями ввода, разрешенными в командной строке. В строки макросов команд также можно включать специальные символы, выражения DIESEL и программный код AutoLISP.

Прим.: AutoLISP не поддерживается в AutoCAD LT.

Можно создавать пользовательские строки макросов команд, позволяющие:

Для настройки и редактирования строк макросов команд используются:

Основы работы со строками макросов команд

Строка макроса команд — это набор команд, ожидаемых параметров и значений со специальным синтаксисом. Она аналогична вводу в командной строке AutoCAD. При взаимодействии с пользовательским интерфейсом программы, например, при нажатии кнопки на ленте или выборе параметра в контекстном меню, выполняется строка макроса команды. Синтаксис макроса команды может как представлять собой просто имя команды (например, КРУГ), так и содержать специальные символы (например, ^C^C_.circle \1).

Ниже перечислены часто используемые специальные символы в строках макросов команд.

Ниже приведены примеры команды КРУГ для построения окружности с радиусом 5 с помощью командной строки AutoCAD и этой же операции в виде строки макроса команды.

Последовательность набора в командной строке Эквивалент синтаксиса строки макроса
Command: CIRCLE
Specify center point for circle or [3P/2P/Ttr (tan tan radius)]:
Specify radius of circle or [Diameter] <2.5000>: 5
CIRCLE;
\
5;

Окончательный вид строки макроса команды:



Объект Синтаксис Описание
1 ^C^C ^C^C означает, что перед выполнением макроса следует дважды нажать клавишу ESC.
2 ._CIRCLE; Запуск команды КРУГ независимо от текущего пакета локализации AutoCAD.
3 \ Запрос на указание центра для построения окружности.
4 5; Задание радиуса окружности и завершение команды КРУГ.

Предыдущую строку макроса также можно записать следующим образом без точек с запятой, так как пробел в макросе аналогичен нажатию клавиши ПРОБЕЛ в командной строке AutoCAD.

^C^C_.circle \5
Прим.: Использование точек с запятой в строках макросов облегчает чтение и позволяет понять, когда предполагается нажатие клавиши ENTER, поскольку пробел может указывать на фактический пробел ввода для предыдущей команды или системной переменной.

Ниже приведен еще один пример использования команды MOCORO для копирования и последующего поворота скопированных объектов в командной строке AutoCAD, а также показан вид набора команд в качестве строки макроса команды.

Последовательность набора в командной строке Эквивалент синтаксиса строки макроса
Command: MOCORO
Select objects:
Specify opposite corner:
Select objects:
Base point:
[Move/Copy/Rotate/Scale/Base/Undo]<eXit>: C
Second point of displacement/Undo/<eXit>:
Second point of displacement/Undo/<eXit>: 
[Move/Copy/Rotate/Scale/Base/Undo]<eXit>: R
Second Point or Rotation angle:
[Move/Copy/Rotate/Scale/Base/Undo]<eXit>:
MOCORO;
\
\
;
\
C;
\
; 
R;
\
;

Окончательный вид строки макроса команды:



Объект Синтаксис Описание
1 ^C^C ^C^C означает, что перед выполнением макроса следует дважды нажать клавишу ESC.
2 ._MOCORO; Запуск команды MOCORO независимо от текущего пакета локализации AutoCAD.
3 \\; Запрос на выбор объектов; две обратные косые черты позволяют указать две точки для выбора рамкой или секущей рамкой.
4 \ Запрос на указание базовой точки, которую следует использовать для копирования выбранных объектов.
5 _C; Использование параметра «Копировать».
6 \; Запрос на указание второй точки смещения.
7 _R; Использование параметра «Поворот».
8 \ Запрос на ввод угла поворота.
9 ; Завершение команды MOCORO.

Отмена активной команды

Если кнопка в интерфейсе пользователя нажата, макрос, назначенный ей, все равно выполняется в текущем контексте программы. Это значит, что макрос будет пытаться ответить на текущий запрос. Если требуется убедиться, что ни одна команда не активна при выполнении макроса, поставьте перед макросом префикс последовательности команд^ C. Для отмены большинства команд достаточно ввести ^C один раз; для возврата к командной строке из команды простановки размеров необходимо ввести ^C^C; в зависимости от текущего параметра команды СЛОЙ может потребоваться ввести ^C^C^C. ^C^C обеспечивает отмену большинства последовательностей команд, поэтому рекомендуется широко использовать эту последовательность.

Использование в макросах встроенных команд

Команды, которые являются частью AutoCAD или программ на ее основе, должны начинаться с точки (.). Пробел позволяет использовать стандартные команды даже в том случае, если определение команды аннулировано с помощью команды НЕТКОМ. Эти меры предосторожности позволяют избежать непредвиденных результатов при работе макроса, когда он используется на других компьютерах, задействующих тот же файл адаптации (CUI/CUIx).

Прим.: В AutoCAD LT нельзя выполнять отмену определений команд.

Проверка символов макроса

При написании макросов значимым является каждый символ, даже пробел. Пробел интерпретируется как нажатие клавиши ПРОБЕЛ. Это может привести к появлению символа пробела при вводе или нажатию клавиши ENTER. Результат аналогичен результату использования команды или системной переменной в командной строке.

Прим.: Размещение пробела в конце макроса интерпретируется как нажатие клавиши ПРОБЕЛ для завершения команды.

Международная поддержка для макросов

При первом создании макроса обычно используются имена команд и значения параметров на знакомом пользователю языке программы. Команды и параметры имеют собственные локальные и глобальные имена, что позволяет использовать макросы на других языках. Поддержка локализованных элементов не требует много дополнительной работы. Перед командой или параметром необходимо просто вставить знак подчеркивания (_). Он указывает программе на то, что перед выполнением имя команды или значение параметра необходимо перевести на локальный язык программы.

Использование режима выбора одного объекта

Метод выбора объектов "Единственный" отменяет повторение запроса о выборе объектов в командной строке. После выбора одного объекта и ответа на другие запросы команда завершается.

Рассмотрим следующий пример:

^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, чтобы подавить отображение всех запросов и ввод из журнала командной строки.