Автоматизация работы в nanoCAD с помощью Visual Basic for Applications
В статье рассмотрен один из вариантов автоматизации работы проектировщиков в САПР nanoCAD, позволяющий в значительной степени использовать параметризацию построений и сокращать сроки выполнения различных задач.
Многие проектировщики используют MS Excel для выполнения математических вычислений в табличной форме. Однако, функционал программы этим не ограничивается. С помощью встроенного в продукты Microsoft Office языка программирования Visual Basic for Applications (VBA) можно взаимодействовать с объектной моделью nanoCAD (и другими продуктами на её платформе). В данной статье мы на простом и универсальном примере продемонстрируем такую возможность — создадим и настроим слои, начертим прямоугольник, проставим к нему размеры и добавим текст, содержащий значение площади фигуры.
В примере используются MS Excel 2010 и nanoCAD 5.0, но версия программных продуктов не имеет особого значения.
Для начала необходимо запустить Excel и подготовить данные для построения:
Данные в ячейках B1 и B2 записаны простым числом, но они могут быть вычислены и с помощью формулы. Теперь необходимо переключиться на встроенную в Excel систему разработки и отладки программного кода — нажимаем Alt + F11. Появляется окно среды разработки:
Для удобства отладки кода необходимо подключить определённые библиотеки: в меню Tools выбираем пункт References… и подключаем nanoCAD Type Library (NCAuto.dll) и OdaX Type Library (OdaX_csd.dll). По умолчанию обе библиотеки расположены в папке: C:\Program Files\Nanosoft\nanoCAD 5.0\bin\.
Теперь необходимо создать модуль. Правый клик в дереве проекта по папке Microsoft Excel Objects, в выпадающем списке выбираем Insert – Module:
В появившемся окне подготовим основу будущей программы:
После явного объявления переменных работать с ними становится значительно удобнее: достаточно ввести имя переменной, поставить точку и программа подскажет все параметры и методы, относящиеся к объекту данного типа. Текст после апострофа – комментарии к коду. Объявим переменные с параметрами будущей фигуры и присвоим им значения:
Создадим новый слой, назначим ему толщину и цвет:
Предложим пользователю выбрать координаты вставки объекта:
Построение прямоугольника, состоящего из четырёх отрезков:
Вычислим площадь фигуры и вставим МТекст в центр прямоугольника:
Завершение базовой функции:
Для запуска написанной программы достаточно нажать F5 (после этого не забудьте указать точку вставки в nanoCAD). Результат работы программы представлен на картинке:
Пример демонстрирует возможность создания базовых примитивов. Больше информации по объектной модели nanoCAD можно найти на просторах сети интернет, в частности, на сайтах: vbamodel.narod.ru и www.alex160570.narod.ru/AcadVBA/vba01.htm
Стоит отметить, что писать так много строк однотипного кода, чтобы построить одну линию, трудоёмко и скучно, велика вероятность допустить ошибки. Для большего удобства можно создать пользовательские функции для построения отдельных примитивов. В качестве примера, рассмотрим функцию построения отрезка. Функция получает в качестве параметров координаты X и Y начала и конца отрезка и строит его:
Дополнительные пользовательские функции необходимо расположить после базовой функции, т.е. после строки End Sub, относящейся к базовой функции. Теперь для построения прямоугольника можно использовать сокращённый код:
Аналогичные пользовательские функции можно написать для любых задач, которые необходимо выполнить больше одного раза. В тоже время, пользователю доступно множество операторов, таких как If. Then. Else, For. Next, Do. Loop и т.п. Для тех пользователей, которые только знакомятся с программированием, разобраться с возможностями языка не составит большого труда – для этого есть справка и многочисленные сайты с примерами решённых задач.
Для удобства запуска созданной программы можно расположить кнопку прямо на листе Excel. Для этого на вкладке «Разработчик» нужно выбрать «Вставить» – «Элемент управления формы» – «Кнопка»:
В появившемся окне выбрать нашу базовую функцию, после чего разместить кнопку на листе.
В один модуль можно добавить любое количество функций, создать для каждой функции кнопку и запускать их все из одного места.
Иногда возникает необходимость имитировать ввод каких-то команд в командную строку. Для этого можно использовать следующую конструкцию:
Данная команда построит окружность с центром в точке X:100, Y:100, Z:0 с радиусом 1000 единиц чертежа.
Для отладки создаваемых программ можно выводить данные в виде всплывающих окон или в командную строку nanoCAD. После выполнения следующего кода:
Появится диалоговое окно со значением переменной x1:
Для вывода текста в командную строку nanoCAD можно использовать следующий код:
На основе данного подхода нами разработана программа для автоматизации построения развёрток монолитных железобетонных стен. После задания исходных данных (около 30 параметров), на выходе получаем практически готовый чертёж стены с учётом фактической геометрии, наличия проёмов, примыкания других стен:
Такой подход к работе позволяет не только сократить время на подготовку документации в десятки, если не в сотни, раз, но и полностью исключить необходимость в её проверке.
В этой статье мы описали способы построения новых примитивов. Но объектная модель nanoCAD позволяет редактировать и существующие в чертеже примитивы, в том числе объекты nanoCAD СПДС — этому будет посвящена следующая статья.
Дмитрий Руденко, главный инженер проекта проектного бюро «Фордевинд»
Update (2014-10-06): Видео с демонстрацией работы подобного скрипта: