Как сделать макрос в autocad

Обновлено: 06.07.2024

В предыдущей статье - Автоматизация работы в AutoCAD при помощи сценариев, мы рассмотрели автоматизацию повторяющихся процедур в AutoCAD при помощи сценариев. В настоящей статье речь пойдет об автоматизации с применением макросов. Попытаемся сравнить возможности, достоинства и недостатки обоих способов автоматизации.

  • Сценарий AutoCAD – представляет собой текстовый файл формата ASCII. Этот файл имеет расширение *.SCR и содержит последовательность команд для командной строки AutoCAD.
  • Макрокоманда (макрос) AutoCAD – это также список инструкций для AutoCAD, но макрос запускается из AutoCAD UI (кнопкой, расположенной на панели инструментов или в выпадающем меню; или сочетанием клавиш).

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

Сценарии AutoCAD

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

Сценарии, написанные на LISP работают только в полноценных версиях AutoCAD или вертикальных решениях, например, AutoCAD Electrical, но не работают в AutoCAD LT.

Отрицательные моменты: Требуются определенные навыки для загрузки сценариев и знание места, где они хранятся.

AutoCAD Макросы

Положительные моменты: Макрос AutoCAD может быть запущен кнопкой, расположенной на инструментальной палитре, что делает доступ к макросу более простым и понятным. Макрос может содержать LISP - код, а также содержать DIESEL - код, что удобно для пользователей AutoCAD LT. Макрос может содержать паузы для ввода данных пользователем, но будьте внимательны, в макросах нет обработчика ошибок.

Отрицательные моменты: Макросы довольно долго создавать, и порой весьма сложно отлаживать их работу. Кроме того, при обновлении версии AutoCAD придется создавать макросы для новой версии сначала.

Для достижения наилучшего результата можно макрокомандой вызывать необходимый сценарий.

Автоматизация вывода на печать

В предыдущей статье, мы научились создавать сценарии, изучая команды и ответы на запросы AutoCAD в командной строке. В итоге был получен сценарий, автоматизирующий получение чертежа в формате *.PDF.

Сценарий печати в PDF для AutoCAD

Для перевода сценария в макрокоманду необходимо написать то же самое, но в одну строку, используя в качестве разделителей, точку с запятой (;):

^C^C-ПЕЧАТЬ;д;;DWG to PDF.pc3;ISO A4 (210,00 х 297,00 мм);м;а;н;г;в;ц;д;monochrome.ctb;д;о;;н;д;

Обратите внимание, что, вместо переноса строки в макросах используют точку с запятой. В тех местах где нажимается Пробел или Enter также ставят точку с запятой.

^C^C – в начале команды, аналогично двойному нажатию Esc на клавиатуре. Эта операция должна отменить любые другие команды, которые выполнялись перед вашим макросом.

Запуск и отладка макросов

Используя сочетание клавиш CTRL + 3, откроем Инструментальные палитры.

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

Создание новой палитры

Эта инструкции предназначена для AutoCAD 2014 или более поздней версии. Предыдущие версии могут иметь некоторые отличия в названии команд и окон.

Щелкните правой кнопкой мыши по любой пустой области новой палитры и выберите Адаптация команд…. Это вызовет появление окна Адаптация пользовательского интерфейса.

Адаптация команд…

Наберите «сценарий» в поле поиска, чтобы найти команду Сценарий.

Перетащите команду Сценарий из окна Адаптация пользовательского интерфейса на вашу палитру. Нажмите ОК в окне Адаптация пользовательского интерфейса, чтобы его закрыть.

Добавление кнопки Сценарий на Инструментальную палитру

Конечно, теоретически, вы не должны использовать команду Сценарий для тестирования макроса, но в AutoCAD нет команды Выполнить макрос.

Чтобы добавить свою макрокоманду к новой кнопке на панели инструментов, щелкните правой кнопкой мыши на кнопке палитры инструментов Сценарий, и в контекстном меню выберите Свойства объекта.

Редактирование свойств кнопки

В открывшемся окне Свойства инструмента, вы можете вставить свой макрос в строку: Командная строка, добавить Название и Описание вашей кнопке, поменять изображение значка кнопки и т.д.

Добавление макроса и настройка свойств кнопки

Нажмите OK, чтобы закрыть диалог и сохранить макрос.

Теперь можно нажать на новую кнопку и посмотреть, что происходит!

Отладка макросов весьма увлекательный процесс!

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

Вот примеры макросов, которые можно использовать для ускорения некоторых операций в Autocad Electrical, например:

Расчленить все блоки на простые геометрические и текстовые объекты с сохранением заданных значений текстовых атрибутов.

Добавляем в предыдущую команду зуммирование в реальном времени.

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

Специальные символы, применяемые в макрокомандах

(обратная косая черта)

(прямая косая черта)

_

Для чего нужны макросы?

Написание макросов для AutoCAD может быть интересным и увлекательным занятием. Вы можете создавать простые макросы, которые помогут вам экономить время на рутинные операции. Вы можете создать макросы для построения рисунков по нажатию всего одной кнопки. Можно при помощи макроса добавить на чертеж форматку вашего предприятия и стандартные слои, стили и т.п. Или вы можете создать на Инструментальной палитре кнопки для вызова макросов команд, которые вы наиболее часто используете. Да мало ли чего еще. Дерзайте!

Создание, тестирование и отладка макроса в AutoCAD Electrical 2018

Как создавать, тестировать и редактировать макросы в AutoCAD Electrical 2018 смотрите в следующем видео:

Надеюсь, вы уже ознакомились с первой и второй частями моего рассказа о макросах в AutoCAD (если нет, то лучше сделать это перед прочтением данной статьи). Мы научились создавать свои кнопки и понимать синтаксис макрокоманд. В заключительной третьей части я приведу еще несколько примеров макросов, которые часто использую в своей работе. С одной стороны, эти примеры полезны сами по себе, а с другой — мы еще раз потренируемся, чтобы вы лучше усвоили тему. Поехали!

Макросы в AutoCAD часть 3

[Выноска с фиксированным содержимым]

Если вам довольно часто приходится расставлять выноски с одинаковым содержимым (например, подписывать оборудование или какие-то повторяющиеся объекты на чертежах), обратите внимание на данный макрос. Пользователю нужно будет указать только местоположение стрелки и местоположение начала текста, а содержимое выноски задано в самом теле макроса:

*^C^C_mleader;\\Ваш текст;
*^C^Cмвыноска;\\Ваш текст;

Сначала мы вызвали команду, после чего идут два пользовательских ввода — первый для указания положения стрелки и второй для указания положения текста, а далее написан сам текст. Как обычно — вы сами вольны выбирать какой из вариантов из вариантов использовать: русско- или англо- язычный. Вместо Ваш текст можно поместить любое нужное слово или фразу. Можно создать любое количество таких макросов с разным содержимым в виде кнопок на палитре. У меня таких сделано 6.

Обратите внимание на звездочку * в начале кода — ее наличие заставляется макрос работать в цикле, то есть повторяться до тех пор, пока пользователь не нажмет Esc. Выглядит это вот так:

Если циклическое воспроизведение не требуется, просто сотрите звездочку * в начале. Внешний вид выноски будет определяться текущим стилем мультивыносок и текущим слоем.

Подробности для энтузиастов:

Слой созданной выноски можно было бы задать в свойствах инструмента палитры. Но тут в Автокаде обнаружилась недоработка: если макрос работает в цикле, то первый объект будет создаваться в слое, указанном в свойствах инструмента палитры, а вот последующие уже в текущем слое, что довольно странно и неудобно. Возможно, такой баг есть именно в моей версии и в будущем его исправят. При желании, обойти это можно немного усложнив наш макрос. Для этого используем команду _change (ИЗМЕНИТЬ), и с ее помощью будем изменять слой последнего созданного объекта (это как раз наша выноска) на нужный. В примере целевой слой — это Примечание. Вот что получилось:

*^C^C_mleader;\\Ваш текст;_change;_l;;_p;_la;Примечание;;

Вне зависимости от того, какой слой выбран текущим, выноска сразу после создания будет перенесена в слой Примечание. Разберемся как это работает:

  • сначала создается выноска (она создается в текущем слое)
  • вызываем команду Изменить _change;
  • команда запрашивает объекты для изменения, мы указываем ключ _l; (от слова last — «последний») — будет выбран последний созданный объект и завершаем запрос выбора еще одной точкой с запятой ;
  • дальше мы указываем, что хотим работать со свойствами объекта - ключ _p; (от слова properties — «свойства»)
  • изменить нужно слой - ключ _la; (от layer — «слой»)
  • указываем имя нужного слоя и подтверждаем его Примечание; (для корректной работы макроса, указанный слой должен существовать в вашем чертеже)
  • ставим еще одну точку с запятой, чтобы завершить работу команды ;

Русский вариант я писать не буду. Если хотите, попробуйте сделать это самостоятельно. Запустите команду Изменить и внимательно отвечайте на запросы, записывая в блокноте нужные ключи команд и ответы — так пишется любой макрос.

Единственное, что у меня так и не получилось сделать, это поместить в такой макрос двухстрочный текст для выноски. Если у вас такое получится, дайте знать, как вы этого добились? Управляющие коды \p или \n (которые работают в Мтексте) здесь просто прерывают макрос. Для себя я подобную задачу решил через LISP.

[Текст вперед - штриховки назад]

Обычно этот способ применяют для одиночных объектов — например, если нужно перенести на передний план Маскировку.

Но если объектов сотни, то вручную оправлять все штриховки на задний план, а тексты на передний — дело хлопотное. Более опытные пользователи используют для этой цели Быстрый выбор, но есть более удобный способ: разработчики позаботились о нас и добавили 2 специальные команды! Итак, встречайте:

_TEXTTOFRONT (ТЕКСТПЕРПЛАН) — команда позволяет перенести на передний план объекты определенного типа (тексты, размеры или выноски), либо вообще все текстовые объекты, о чем выводится соответствующий запрос:

Обратите внимание, что опция <вСе> расположена в треугольных скобках — это значит, что она является значением по умолчанию. Поэтому в макросе ключ с нам не пригодится, мы просто добавим еще одну ; (ввод) после вызова команды. Получится _texttofront;;

_HATCHTOBACK (русского аналога я не нашел) — команда переносит все штриховки в документе на задний план. Опций у данной команды нет.

Из этих команд можно «состряпать» замечательный макрос:

^C^C_hatchtoback;_texttofront;;_regenall

Обычно я запускаю его по завершении работы над проектом. Регенерация в конце добавлена на всякий случай. В командной строке выводится отчет о работе макроса (если он вам не нужен, добавьте в начало макроса ключ ^Q):

Напомню, что порядок прорисовки никак не связан со списком слоев — слои автоматически сортируются в алфавитном порядке.

[Горизонтальная и вертикальная прямая]

Ну и под конец, совсем простенький макрос для быстрого рисования прямых — горизонтальной и вертикальной. Команда _xline (ПРЯМАЯ) обычно запрашивает первую точку, после чего проводит через эту точку бесконечную прямую, которая будет вращаться до тех пор, пока не указана вторая точка. Кнопка вызова данной команды находится здесь:

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

^C^C_xline;_h;
^C^C_xline;_v;

Макрос с ключом _h запускает отрисовку горизонтальной прямой, а макрос с ключом _v — вертикальной. Русский вариант макроса будет таким:

^C^Cпрямая;г;
^C^Cпрямая;в;

Кстати, вот так выглядит моя основная рабочая палитра:

На ней размещены макросы, динамические блоки и кнопки запуска LISP-приложений. Все «авторские» иконки — это .jpg изображения размером 64×64 пикселя (их можно нарисовать в Paint или в Фотошопе).

Пожалуй, это все, что я хотел рассказать про макрокоманды в AutoCAD! Надеюсь, что проработав материал данного цикла статей, вы научились писать макросы под свои нужды. Сложного в этом ничего нет, требуется лишь терпение, внимательность и понимание основных принципов, которые я (хочется верить) изложил довольно подробно.

alt

Сегодня с вами будем разговаривать про создание команд в AutoCAD, а точнее макросов, т.е. объединение нескольких команд в одну или соединение нескольких субопций одной команды. Мы также создадим отдельную кнопку и вынесем ее на панель инструментов. А рассматривать создание команды в Автокаде будем на примере команды "ОЧИСТИТЬ". Создадим макрос AutoCAD для удаления всех элементов, которые не присутствуют в графическом пространстве, но при этом загружают файл.


Первое, что необходимо сделать - это понять из каких элементов состоит команда. Набираем в командной строке "-ОЧИСТИТЬ". При таком вызове команды диалоговые окна не появляются, а все субопции выбираются из командной строки. Напомню, что мы рассматриваем команду удаления всех неиспользуемых элементов чертежа. Поэтому я выберу субопцию "Все". Далее нас просят ввести имена удаляемых элементов, нажмем enter, чтобы удалились все. Запрашивать подтверждение на удаление каждого элемента - "Нет".

После такой чистки обычно файлы заметно уменьшаются в размере и не тормозят.

Создание макроса Автокад.

Вкладка "Управление" - панель "Адаптация" - инструмент "Пользов.ательский интерфейс". Появляется окно "Адаптация пользовательского интерфейса". Здесь выбираем кнопку "Создание новой команды".


Даем новой команде Автокад имя. Я назову "Очистить все". Можете заполнить описание, чтобы в дальнейшем понять что это за команда.

Самое главное - это поле "макросы". В данном поле по умолчанию стоит: "^С^С". Это означает 2 нажатия клавиши Esc. Т.е. при вызове команды предыдущую команду необходимо закончить. Далее ставим вызов команды без диалогового окна "-очистить". Далее мы нажимали "Enter", в коде он обозначается пробелом. Затем мы выбирали субопцию "все", в коде ставим ключ вызова субопции "в". Далее опять "Enter", а в коде ставим пробел. После нас просили ввести имена элементов, которые хотим удалить, и мы нажимали "Enter", поэтому в коде я еще раз ставлю пробел. И на запрос подтверждать ли удаление каждого элемента, мы выбирали "нет", в коде поэтому я ставлю букву "н". И в конце кода макроса еще раз пробел, чтобы вызвать завершение команды. Вот что получилось.


В разделе Значок выберем значок команды очистить. Изменим его и пересохраним, чтобы у нас был отдельный значок для только что созданного нами макроса AutoCAD. Я изменил значок вот таким образом (см. рисунок).


Далее нажимаем Экспорт и даем название иконке. Иконка сохранена, а в данном редакторе я нажимаю закрыть и не сохранять.

Теперь меняем изображение для команды. Малое и большое изображения - выбираем новую иконку.


И теперь мы можем применить изменения в диалоговом окне "Адаптация пользовательского интерфейса".

Вывод новой команды Автокад на панель быстрого доступа.

Находим новую команду в списке. Она называется "Очистить все". И далее перетаскиваем ее зажатой кнопкой мыши на панель быстрого доступа.


Нажимаем "Применить" - "Ок". Проверьте, команда Автокад работает.

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

alt

Если вы используете сторонние приложения lisp и скрипты, то стоит задуматься о создании кнопки в AutoCAD. Не всегда удобно обращаться к инструменту через командную строку. Если вы часто пользуетесь каким-то инструментом, то лучше его вынести в виде кнопки. Это ускорит работу в программе.

Рис. 1 – Новая команда AutoCAD

Мы рассматривали LISP-приложения для Автокада и как загружать дополнительные скрипты. Теперь разберём, как создать кнопку в Автокаде с новой командой и разместить её на ленте для быстрого доступа.

Создание кнопки доп. скрипта имеет некоторые нюансы. Разберём их на примере.

Создаем новые кнопки в Автокаде для запуска LISP

Чтобы добавить кнопку в Автокад для новой команды, нужно:

1. Прописать путь к файлу, который содержит загружаемое приложение. Такие файлы могут иметь расширение *.arx, *.crx, *.lsp, *.dvb, *.dbx, *.vlx, *.fas.

Вызовите диалоговое окно «Настройки» (можно через командную строку «_options»). Перейдите во вкладку «Файлы», выберите папку «Доверенные местоположения». Затем нажмите кнопку «Добавить». Появится дополнительное поле, в котором необходимо прописать путь.

Далее нажмите "Обзор". Найдите на компьютере папку, в которой хранятся ваши файлы-lisp. После того как путь пропишется в этом диалоговом окне, нажмите "ОK".

2. Вызвать окно адаптации пользовательского интерфейса Автокад (можно через командную строку «_СUI»). Создать новую команду.

Рис. 3 – Создание новой команды AutoCAD

Задать название и макрос. Код макроса следует искать в самом файле приложения. Открыть его можно через обычный блокнот.

Рис. 4 – Макрос для команды LISP можно найти в исходном файле *.lsp

Выберите иконку для кнопки. Можно создать новую или отредактировать уже имеющуюся картинку. Подробнее - в видеоуроке «Создание макрос в AutoCAD».

3. Заключительный этап создания новой кнопки для AutoCAD – это размещение в ленте программы. Для этого нужно воспользоваться поиском: найти вновь созданную кнопку, захватить её левой кнопкой мыши и переместить в подходящую панель. В этом примере: ACAD → Лента → Панели → Главная 2D Рисование → Строка 3.

Как видите, добавить кнопку в Автокад для LISP-приложения не так уж и сложно. Если вы часто используете тот или иной скрипт – обязательно примите это к сведению.

Читайте также: