Не запускается макрос autocad
В предыдущей статье - Автоматизация работы в AutoCAD при помощи сценариев, мы рассмотрели автоматизацию повторяющихся процедур в AutoCAD при помощи сценариев. В настоящей статье речь пойдет об автоматизации с применением макросов. Попытаемся сравнить возможности, достоинства и недостатки обоих способов автоматизации.
- Сценарий AutoCAD – представляет собой текстовый файл формата ASCII. Этот файл имеет расширение *.SCR и содержит последовательность команд для командной строки AutoCAD.
- Макрокоманда (макрос) AutoCAD – это также список инструкций для AutoCAD, но макрос запускается из AutoCAD UI (кнопкой, расположенной на панели инструментов или в выпадающем меню; или сочетанием клавиш).
А раз и в том и в другом случае это всего лишь последовательность команд, то для автоматизации AutoCAD нам достаточно четко понимать последовательность команд, которые нужно выполнить, чтобы получить требуемый результат.
Специальные символы, применяемые в макрокомандах
(обратная косая черта)
(прямая косая черта)
_
Кнопка на запуск макроса с вызовом .dvb
Нашел как на кнопку повесит команду на запуск команды из лиспа, если лисп не загружен. Например, «^C^C(if (null UNF-MText)(load «change text styles (cts) 1.9.LSP»));UNF-MText;»
А какую команду надо записать на кнопку, чтоб запустить макрос из проекта, чтоб сперва запустился проект, а потом макрос обратился к этому проекту.
Например, пишу: «^C^C(if (null _-vbarun Other.Quick_calc_select)(_-vbaload «Project.dvb»));_-vbarun Other.Quick_calc_select;». Пишет ошибка: слишком много аргументов.
Команду «^C^C_-vbarun Project.dvb!Other.Quick_calc_select» не предлагать. При запуске данной команды, диалоговое окно макроса висит где-то сбоку и большое не настроенное по габаритам, видимо, с размерами по умолчанию. Если же я сперва загружу файл «Project.dvb» через «загрузка/выгрузка приложений», и потом выполню «_-vbarun Project.dvb!Other.Quick_calc_select», то диалоговое окно нормально открывается (с нужными размерами и в нужном месте).
Как я понял, Вам не нравиться что настойки окна не сохраняются между сеансами автокада, однако я не понимаю, что Вам запрещает сохранять и загружать эти настройки. не понял я в чем проблема. код для кнопки вы и так привели. Странный топик.
Offtop: Практически всегда, при использовании VBA появляются проблемы и два возможных решения:
1. Смириться
2. Не использовать VBA
Как я понял, Вам не нравиться что настойки окна не сохраняются между сеансами автокада, однако я не понимаю, что Вам запрещает сохранять и загружать эти настройки. не понял я в чем проблема. код для кнопки вы и так привели. Странный топик.
Offtop: Практически всегда, при использовании VBA появляются проблемы и два возможных решения:
1. Смириться
2. Не использовать VBA
Да, не нравится, что окно непонятно где выскакивает.
Поясню проблему. Offtop: Извините за мой немецкий, мож не совсем точно выразился ранее.
Автоматизация вывода на печать
В предыдущей статье, мы научились создавать сценарии, изучая команды и ответы на запросы AutoCAD в командной строке. В итоге был получен сценарий, автоматизирующий получение чертежа в формате *.PDF.
Для перевода сценария в макрокоманду необходимо написать то же самое, но в одну строку, используя в качестве разделителей, точку с запятой (;):
^C^C-ПЕЧАТЬ;д;;DWG to PDF.pc3;ISO A4 (210,00 х 297,00 мм);м;а;н;г;в;ц;д;monochrome.ctb;д;о;;н;д;
Обратите внимание, что, вместо переноса строки в макросах используют точку с запятой. В тех местах где нажимается Пробел или Enter также ставят точку с запятой.
^C^C – в начале команды, аналогично двойному нажатию Esc на клавиатуре. Эта операция должна отменить любые другие команды, которые выполнялись перед вашим макросом.
Не работают макросы автокад
Не запускается макрос VBA для Autocad 2015. Хотя в версии Autocad 2010 все работает, работает также и в Autocad 2008. Запуск макроса осуществляется: Загрузить проект — Запустить макрос VBA. Появляется фатальная ошибка: Unhandled Access Violation Writing 0xbda53ac Exception at bda53ach и вылетает Автокад. Возможно, макрос vba не адаптирован под новую версию автокада. Как запустить макрос vba в Autocad 2015?
Не запускается макрос VBA для Autocad 2015. Хотя в версии Autocad 2010 все работает, работает также и в Autocad 2008. Запуск макроса осуществляется: Загрузить проект — Запустить макрос VBA. Появляется фатальная ошибка: Unhandled Access Violation Writing 0xbda53ac Exception at bda53ach и вылетает Автокад. Возможно, макрос vba не адаптирован под новую версию автокада. Как запустить макрос vba в Autocad 2015?
3. Если макрос не адаптирован, то вероятно он не будет работать. Так что обращайтесь к разработчику макроса.
Alexander Rivilis / Александр Ривилис
Programmer & Teacher & Helper / Программист — Учитель — Помощник
Facebook | Twitter | LinkedIn
Решение
Начиная с AutoCAD 2009, в рекордере операций появились версии команд. Функция управления версиями команды позволяет AutoCAD отслеживать итерацию команд, которая будет использоваться при выполнении макроса операции, файла сценария или макроса команды. В результате этого изменения для некоторых команд в макросе команды может потребоваться использование последовательности управления ^R.
С помощью ^R-последовательности операций AutoCAD начинает работать с самой последней версией команды. Если контрольная последовательность ^R не используется, используется самая старая версия команды. Например, в AutoCAD 2009 следующий макрос команды завершается после задания значения радиуса, которое не будет происходить в AutoCAD 2008. Следующий макрос команды отображает команду СОПРЯЖЕНИЕ, используя параметр «Несколько» и задав радиус 0,1:
Этот макрос команды в AutoCAD 2009 работает некорректно, поскольку команда СОПРЯЖЕНИЕ интерпретируется для использования ее устаревшего режима работы команды, последовательности запросов и параметров. В следующем окне отображается командная строка для предыдущей версии команды СОПРЯЖЕНИЕ:
Текущие настройки: Режим = ОБРЕЗАТЬ, Радиус = 0,1000
Выберите первый объект или [оТменить/Полилиния/Радиус/Обрезка/Несколько]:
Для использования самой последней версии команды добавьте последовательность управления «^R» перед командой макроса. Ниже приведен тот же макрос команды, который использует новую последовательность управления ^R:
Командная строка и параметры для предыдущего макроса команды выглядят следующим образом:
Текущие настройки: Режим = ОБРЕЗАТЬ, Радиус = 0,1000
Выберите первый объект или [оТменить/Полилиния/Радиус/Обрезка/Несколько]:
Запуск макроса команды с управляющей последовательностью ^R и командой СОПРЯЖЕНИЕ приводит к тому, что это действие выполнено в AutoCAD 2008.
Примечание. Не для всех макросов команд необходима последовательность управления ^R. Настоятельно рекомендуется использовать последовательность CTRL + R при создании макросов команд, в которых задаются параметры и вводятся в последовательность команд. Например, использование ^R с макросом команды «^C^C^R_fillet» приводит к тому же результату, что и «^C^C_fillet», поскольку в макросе команды не указаны параметры команды или входные данные.
Ниже приведен список некоторых часто используемых команд для макросов команд, на которые влияет управление версиями команд.
При использовании AutoLISP можно управлять версией команды, используемой в предыдущей версии команды с помощью функции InitCommandVersion.Синтаксис функции InitCommandVersion выглядит следующим образом:
где определение версии команды, которая должна использоваться для предыдущей команды, выполняемой с помощью функции «Команда».
В следующем примере демонстрируется использование версии 1 (или самой старой версии) команды СОПРЯЖЕНИЕ:
(InitCommandVersion 1)
(команда «Сопряжение»)
При использовании версии 1 команды СОПРЯЖЕНИЕ отображаются следующие запросы:
Текущие настройки: Режим = TRIM, Радиус = 0,1000
Выберите первый объект или [оТменить/полИлиния/раДиус/Обрезка/Несколько]:
Версия 2 команды СОПРЯЖЕНИЕ является второй (или текущей, последней) версией команды и эквивалентна использованию последовательности управления ^R в макросе команды.
При использовании второй версии команды СОПРЯЖЕНИЕ отображаются следующие запросы:
Текущие настройки: Режим = TRIM, Радиус = 0,1000
Выберите первый объект или [Отменить/Полилиния/Радиус/Обрезать/Несколько]:
Запуск макроса в AutoCad из Excel
Тема: Запуск макроса в AutoCad из Excel
Пытаюсь сделать обработку dwg файлов из Excel. (2000 офис, 2005 Autocad)
Библиотека «AutoCAD 2005 Type Library» подключена
Не получается запустить макрос из проекта.
Код в AutoCAD:
На последней строке выдает ошибку.
Пытался по-всякому ее изменять, но никак.
Также попытался непосредственно из excel печатать в командной строке. Вместо строки, где должен выполняться макрос (и где выдает ошибку) пытался написать следующее:
Оба кода не работают.
Помогите разобраться с проблемой.
> Loner Wanderer
Наверное автокад не может понять, что это за команда: «z-clear-empty-text»
Кстати, что это за команда?
Это запуск лиспа по очистке чертежей от пустых текстов. Но это не важно.
Ругается (как я понял) именно на метод
.SendCommand
А вот как правильно написать (и можно ли вообще это сделать из Excel) — я не знаю.
Может я некорректно написал, но сам макрос в Autocad работает без проблем (из автокада). Проблема в его запуске из Excel.
Настройка и ремонт техники © 2022
Внимание! Информация, опубликованная на сайте, носит исключительно ознакомительный характер и не является рекомендацией к применению.
На последней строке выдает ошибку.
Пытался по-всякому ее изменять, но никак.
Также попытался непосредственно из excel печатать в командной строке. Вместо строки, где должен выполняться макрос (и где выдает ошибку) пытался написать следующее:
Оба кода не работают.
Помогите разобраться с проблемой.
> Loner Wanderer
Наверное автокад не может понять, что это за команда: "z-clear-empty-text"
Кстати, что это за команда?
Это запуск лиспа по очистке чертежей от пустых текстов. Но это не важно.
Ругается (как я понял) именно на метод
.SendCommand
А вот как правильно написать (и можно ли вообще это сделать из Excel) - я не знаю.
Может я некорректно написал, но сам макрос в Autocad работает без проблем (из автокада). Проблема в его запуске из Excel.
Sub MakeSpec()
Dim a As AcadDocument
For Each a In ThisDrawing.Application.Documents
a.Activate
'ThisDrawing.SendCommand "z-clear-empty-text" & vbCr
'ThisDrawing.SendCommand "-purge" & vbCr & "a" & vbCr & vbCr & "n" & vbCr
ThisDrawing.SendCommand "ai_selall" & vbCr
'ThisDrawing.SendCommand "attout_my" & vbCr
'ThisDrawing.SendCommand "qsave" & vbCr
ThisDrawing.SendCommand "close" & vbCr
Next
End Sub
Sub ЗагрузкаAcad()
Dim DwgFileName As String
Dim FileName As String
DwgFileName = "I:\InGeo\Convert\ee1.dwg"
Set AcadApp = CreateObject("AutoCAD.Application")
AcadApp.Documents.Open DwgFileName
Set AcadDoc = AcadApp.ActiveDocument
FileName = "I:\InGeo\Convert\Examples.dvb"
LoadDVB FileName
AcadApp.RunMacro "I:\InGeo\Convert\Examples.dvb!Module1.MakeSpec"
End Sub
'Проверено,этот вариант работает на ACAD 2004
'**************************************
' А это авторский вариант на сайте
' Неверно имя переменной strFileName (объявлено Dim DwgFileName As String
' И надо Set AcadApp=CreateObject("AutoCAD.Application")
'**************************************
'Sub ЗагрузкаAcad()
'Dim DwgFileName As String
'Dim FileName As String
'strFileName = "C:\test.dwg"
'CreateObject ("AutoCAD.Application")
'ACADApp.Documents.Open DwgFileName
'Set AcadDoc = ACADApp.ActiveDocument
'FileName = "C:\Proba.dvb"
'LoadDVB FileName
'AcadDoc.Application.RunMacro "Proba.dvb!Module1.MakeSpec"
'End Sub
Здравствуйте! Интересует вопрос как связать Excel и Autocad. Банальный пример: в Excel рассчитываются длины прямоуголльника в зависимости от различных исходных данных. Затем в Autocad требуется нарисовать этот прямоугольник. Как автоматизировать эти действия ?
Можно из макроса Excel управлять автокадом, можно наоборот - в autocad написать макрос, подгружающий из Excel данные, и рисующий прмоугольники
Пример кода, возможно, будет, если вы прикрепите исходный файл (Excel и автокад),
и объясните, что и как должно работать.
__ Полезные надстройки для Excel. Парсинг сайтов и файлов.
Макросы любой сложности на заказ. Мониторинг цен конкурентов
Office 10 / Autocad 11. Какой способ будет лучше: из Excel управлять автокадом или в автокаде создавать макрос ? В дальнейшем планируется рассчитываеть сложные конструкции зданий и подбирать расстояния, затем в автокаде чертить. Оформление линий по ГОСТ, толщина и т.д. Хотелось автоматизировать эту задачу. Ввели исходные данные, в экселе произведены все расчеты, подобраны расстония и в автокаде готов чертеж. Затем следующие данные и т.д.
doober
Да, спасибо. Но все таки хотелось бы углубиться в этот вопрос.
По опыту,если чертеж очень сложный.занимает много времени на работу Excel с Autocad,больше 40-50 секунд,то все работы надо делать в Автокаде.
Во вложении видео и модули с кодами.
Я так понимаю модули написаны для автокада на языке Visual Basic, то есть действия все происходят в автокаде. А почему макрос запускается с Excel ? и как научиться писать эти модули для конкретного случая. Что именно почитать ? в коде не вижу что то ссылок на Excel.
Спасибо. Будем изучать. Что посоветуете почитать. В планах именно создание крупномасштабных чертежей по расчетам, проделанным в Excel.
Посетить этот форум.набраться терпения,+ естественно геометрия.
прилагаю Хелп для 2008,2011 не нравиться,да и для моих задач очень тяжелый.
VBA везде одинаков.Там есть примеры кодов в принципе на все случаи.
Помните,сложный чертеж-работать только с Автокада,иначе ошибка будет через минуту.Это все Билл виноват
Будем стараться. В архиве Mod1 у вас модули содержаться именно в VBA Excel, и с него идет запуск автокада. Если же чертеж сложный нужно писать макрос именно в VBA Autocad, где точки являются ячейки Excel. Все верно ?
AutoCAD Макросы
Положительные моменты: Макрос AutoCAD может быть запущен кнопкой, расположенной на инструментальной палитре, что делает доступ к макросу более простым и понятным. Макрос может содержать LISP - код, а также содержать DIESEL - код, что удобно для пользователей AutoCAD LT. Макрос может содержать паузы для ввода данных пользователем, но будьте внимательны, в макросах нет обработчика ошибок.
Отрицательные моменты: Макросы довольно долго создавать, и порой весьма сложно отлаживать их работу. Кроме того, при обновлении версии AutoCAD придется создавать макросы для новой версии сначала.
Для достижения наилучшего результата можно макрокомандой вызывать необходимый сценарий.
AutoCAD
Примеры макросов
Вот примеры макросов, которые можно использовать для ускорения некоторых операций в Autocad Electrical, например:
Расчленить все блоки на простые геометрические и текстовые объекты с сохранением заданных значений текстовых атрибутов.
Добавляем в предыдущую команду зуммирование в реальном времени.
Очистка чертежа от неиспользуемых элементов, таких как определения блоков, слои, типы линий и т.п.
Проблема
Создание, тестирование и отладка макроса в AutoCAD Electrical 2018
Как создавать, тестировать и редактировать макросы в AutoCAD Electrical 2018 смотрите в следующем видео:
Вообще-то, это баловство. И не имеет никакого смысла. Вот в DOS был смысл запускать NC или DN, или ME из под AutoCAD.
Вообще-то, это баловство. И не имеет никакого смысла. Вот в DOS был смысл запускать NC или DN, или ME из под AutoCAD.
__________________ --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
А зачем макросы? Прописать в acad.pgp и все.
Для Кулик Алексей aka kpblc.
А я вот возьмусь утверждать: запускать ICQ из AutoCAD - совершенно нелепое баловство.
А зачем макросы? Прописать в acad.pgp и все.
Для Кулик Алексей aka kpblc.
А я вот возьмусь утверждать: запускать ICQ из AutoCAD - совершенно нелепое баловство.
Возьмусь утверждать больше - запуск любого приложения вручную, через Автокад - баловство, а acad.pgp (ДОС-секция) - чистый рудимент.
Ну тем не менее сам Autodesk таким баловством занимается в ADT (Content Browser - отдельный ехе-шник, запускается из-под ADT спец.командой и висит отдельным процессом).
__________________ --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
Ну тем не менее сам Autodesk таким баловством занимается в ADT (Content Browser - отдельный ехе-шник, запускается из-под ADT спец.командой и висит отдельным процессом).
Основная задача этого приложения - взаимодействие с Автокадом, при том, что изредка оно может использоваться и отдельно, так что в данном случае это не совсем внешнее приложение, с точки зрения работы пользователя.
Ну тогда получается, что внешний текстовый редактор (типа notepad ) теоретически тоже можно отнести к такому "не совсем внешнему" приложению.
__________________ --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
Ну тогда получается, что внешний текстовый редактор (типа notepad ) теоретически тоже можно отнести к такому "не совсем внешнему" приложению.
Thượng Tá Quân Đội Nhân Dân Việt Nam
Действительно, запуск внешних приложений из acad.pgp - рудимент.
Действительно, в DOS он имел большое значение. Особенно в AutoCAD-10, когда было только "чёрное" главное меню, а имена файлов для открытия надо было руками писать.
Вот тогда делали хитрые оболочки, позволявшие иметь окружение для комфортной работы. Соответственно и хитрые bat-файлы и интенсивное использование acad.pgp, и .scr.. Тогда и ACAD умел "съёживаться" в памяти аж до 5КБ.
Внешние приложения, конечно, иногда надо и из современного Автокада запускать, особеноо когда надо передать вычисляемый аргумент командной строки. Но тут уж функция (startup . ) и ей подобные помогут. Но не PGP.
Для чего нужны макросы?
Написание макросов для AutoCAD может быть интересным и увлекательным занятием. Вы можете создавать простые макросы, которые помогут вам экономить время на рутинные операции. Вы можете создать макросы для построения рисунков по нажатию всего одной кнопки. Можно при помощи макроса добавить на чертеж форматку вашего предприятия и стандартные слои, стили и т.п. Или вы можете создать на Инструментальной палитре кнопки для вызова макросов команд, которые вы наиболее часто используете. Да мало ли чего еще. Дерзайте!
Запуск и отладка макросов
Используя сочетание клавиш CTRL + 3, откроем Инструментальные палитры.
Щелкните правой кнопкой мыши по любой пустой области на палитре и выберите Создать палитру, чтобы создать новую пустую палитру, которую мы будем использовать для тестирования нашего макроса. Вы можете сразу задать имя вашей палитре, например, Моя.
Эта инструкции предназначена для AutoCAD 2014 или более поздней версии. Предыдущие версии могут иметь некоторые отличия в названии команд и окон.
Щелкните правой кнопкой мыши по любой пустой области новой палитры и выберите Адаптация команд…. Это вызовет появление окна Адаптация пользовательского интерфейса.
Наберите «сценарий» в поле поиска, чтобы найти команду Сценарий.
Перетащите команду Сценарий из окна Адаптация пользовательского интерфейса на вашу палитру. Нажмите ОК в окне Адаптация пользовательского интерфейса, чтобы его закрыть.
Конечно, теоретически, вы не должны использовать команду Сценарий для тестирования макроса, но в AutoCAD нет команды Выполнить макрос.
Чтобы добавить свою макрокоманду к новой кнопке на панели инструментов, щелкните правой кнопкой мыши на кнопке палитры инструментов Сценарий, и в контекстном меню выберите Свойства объекта.
В открывшемся окне Свойства инструмента, вы можете вставить свой макрос в строку: Командная строка, добавить Название и Описание вашей кнопке, поменять изображение значка кнопки и т.д.
Нажмите OK, чтобы закрыть диалог и сохранить макрос.
Теперь можно нажать на новую кнопку и посмотреть, что происходит!
Отладка макросов весьма увлекательный процесс!
AutoCAD 2005. Почему не работает макрос, написанный в AutoCAD 2004?
Форумы CADUser → Программирование → VBA → AutoCAD 2005. Почему не работает макрос, написанный в AutoCAD 2004?
Тема: AutoCAD 2005. Почему не работает макрос, написанный в AutoCAD 2004?
Здравствуйте.
Вопрос вот такого плана. Написал некий макрос на ВБА, который нормально
работал в AutoCad 2004. Но при попытке использовать этот макрос в AutoCad 2005
случается ошибка. Причем, на разных компьютерах ошибки возникают разные. Ну я
бы ещё понял, если бы ошибки на разных машинах получались одинаковые, но тут совсем не ясная ситуация. Может кто сможет объяснить это дело.
Сценарии AutoCAD
Положительные моменты: AutoCAD скрипты могут содержать длинные списки инструкций для AutoCAD. Все файлы сценариев AutoCAD можно хранить в одном месте на сервере. Если вам необходимо обновить или изменить файл сценария, достаточно изменить его в одном месте для всех пользователей. Сценарии AutoCAD могут содержать комментарии, напоминающие, что делает скрипт или его отдельные строки.
Сценарии, написанные на LISP работают только в полноценных версиях AutoCAD или вертикальных решениях, например, AutoCAD Electrical, но не работают в AutoCAD LT.
Отрицательные моменты: Требуются определенные навыки для загрузки сценариев и знание места, где они хранятся.
Читайте также: