Не запускается макрос autocad

Обновлено: 03.07.2024

COM-автоматизация – технология, с помощью которой приложения, написанные на различных языках программирования, могут получать функциональность программных систем (AutoCAD, Word, Excel и др.). Объектная модель приложения определяет иерархию объектов. Доступ к какому-либо свойству (или методу) конкретного объекта осуществляется через указание всех объектов в иерархической последовательности от корневого объекта (Application) и ниже.

Например, возможность обращения к командной строке из программы, написанной на языке VB, реализуется через метод SendCommand объекта ActiveDocument:

Ниже рассматривается простейший пример программы с загрузкой системы AutoCAD и управление через свойства и методы объекта Circle непосредственно из VB приложения.

В Visual Studio создайте VB проект c прототипом Windows Forms Application. На форме разместите 4 командных кнопки. При запуске VB приложения загружается диалоговое окно и запускается AutoCAD. При выборе кнопок в последовательности сверху вниз соответственно выполняются действия:


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


Для решения задачи создается VB проект, который обеспечивает запуск AutoCAD, загрузку и запуск 2-х VLisp приложений.

В файле mod3d.lsp описывается создание 3D модели объекта, файле pro3.lsp – создание комплексного чертежа из 3-х проекций и аксонометрии объекта.


Структура приложения позволяет разрабатывать комплексный чертеж для любого пространственного объекта. При этом модифицируется только лишь файл mod3d.lsp.

Задание: Модифицируйте файл mod3d.lsp, обеспечив создание в AutoCAD модели в соответствии с вариантом задания.

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

Откройте в AutoCAD чертеж Винт.dwg.

Создайте VB проект с формой, на которой размещены две командные кнопки. Одна из кнопок запускает процесс нарезания резьбы, вторая выгружает AutoCAD и закрывает форму. Подключите к проекту библиотеку AutoCAD. Для этого выберите кнопки меню Project>References и отметьте флажок AutoCAD 20… Type Library.

Скопируйте листинг программы (см. ниже) в окно кода. Ознакомьтесь с описанием программы, модифицируйте ее, если необходимо. Протестируйте программу.

Запустите AutoCAD и откройте чертеж-прототип Винт.dwg. При запуске программы (загрузке формы) и нажатии кнопки cmdStart устанавливается связь с этим чертежом-прототипом.

Язык программирования VisualBasic for Applications (VBA) является такой же встроенной в AutoCAD средой, как и VisualLISP среда. VBA обеспечивает более удобную среду для создания диалоговых окон по сравнению с совместным использованием для этой цели языков VLISP и DCL. Однако, VLISP более прост для программирования графических операций. К тому же графические действия выполняются на VBA медленнее, поскольку они осуществляются опосредовано через интерфейс COM-автоматизации.

Различия между VBA и VB:

  • VBA запускается в том же самом рабочем пространстве, как и AutoCAD, обеспечивая очень быструю среду программирования.
  • VBA имеет собственный набор объектов, ключевых слов, констант, и т. д., который обеспечивает управление, отладку и выполнение программы.
  • VBA не поддерживает создание выполнимых (executables) программ.
  • VBA обеспечивает связь с активным рисунком в текущем AutoCAD сеансе через объект ThisDrawing. Используя ThisDrawing Вы получаете непосредственный доступ к текущему объекту Document, всем методам, свойствам, и другим объектам в иерархии.

Если VBA не поддерживает создание выполнимых (executables) программ. Тогда возникает вопрос, каким образом запускается VBA приложение? Прежде всего, введем новый термин Макрокоманда (Macros) – это VBA подпрограмма, записанная в модуле ThisDrawing или Module. Каждая подпрограмма, записанная в этих модулях, может запускать VBA приложение. Для запуска приложения необходимо выделить имя макроса в диалоговом окне Macros (вызывается из среды AutoCAD кнопками меню Tools>Macro>Macros) и щелкнуть на кнопке Run.

Макросы можно запустить не только из диалогового окна, но и с командной строки, например:

Предварительно командой VBALOAD должен быть загружен проект, запускаемый макросом.

VLISP также позволяет запустить VBA (функция vl-vbarun), однако данные одной среды (переменные и константы) не могут быть видимы из другой среды. В этом случае существует единственная возможность обмена информацией – запись данных в файл одной программой и считывание данных из другой программы.

В предыдущей статье - Автоматизация работы в 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 смотрите в следующем видео:

alt

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


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

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

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

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


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

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


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


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

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


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

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

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


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

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

Visual Basic for Applications (VBA) - это язык программирования, встроенный во многие приложения, включая офисные программы, САПР, графические редакторы и многие другие. VBA является упрощенной версией языка Visual Basic, имеет схожий с ним синтаксис. Среда программирования VBA обычно встроена в саму программу, поэтому пользователь может сразу начинать писать программы или загружать готовые приложения для работы.

Visual Basic

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

Из преимуществ языка VBA можно отметить легкость его освоения и простоту использования, универсальность (изучив VBA для AutoCAD пользователь без труда изучит, например, VBA для Microsoft Word или Excel). Главный недостаток языка VBA – проблемы с обратной совместимостью разных версий.

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

Важным отличием VBA для AutoCAD от VBA для других программ является то, что в нем программы хранятся не внутри файлов, а во внешних файлах с расширением DVB.

В последних версиях AutoCAD модуль VBA Enabler не входит в дистрибутив и не устанавливается вместе с самим AutoCAD. Чтобы получить возможность работать с VBA в AutoCAD, вам необходимо скачать и установить AutoCAD VBA Enabler со специальной страницы в интернете

 AutoCAD VBA

Важно то, что при выборе модуля VBA Enabler нужно обратить внимание на версию AutoCAD и его разрядность. Например, модуль VBA для AutoCAD 2018 32-x не будет работать в среде AutoCAD 2018 64-x.

После скачивания, распаковки и установки модуля AutoCAD VBA Enabler в программе AutoCAD появится возможность работать с приложениями на языке VBA.

Окно редактора VBA (VBA IDE) запускается командой VBAIDE.

Окно редактора VBA

Оно стандартное для языка VBA и ничем не отличается от VBA в других программах.

Обратите внимание, что двоичный формат файлов проектов VBA в AutoCAD не совместим с форматом проектов Visual Basic. Однако, в VBA для AutoCAD можно импортировать формы, модули и классы, хранящиеся в файлах форматов FRM, BAS и CLS соответственно.

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