09 апреля, 2015

Программный отчет средствами VBA (аналог spequipmentlist СПДС)

Результатом деятельности  конструктора, как правило, является выпущенная документация, графическая и текстовая.
И если создание графики автоматизации поддается в очень ограниченных пределах, то заполнение текстовой информацией, всевозможных таблиц, автоматизируется достаточно просто, при условии, что исходные  данные для отчетов есть в самом чертеже или вспомогательных файлах.

 В СПДС GraphiCS задача сбора данных с чертежа, легко решается табличными автоотчетами.
Достоинства табличных автоотчетов состоят в:
  • легкости и гибкости настройки пользователем;
  • возможности собирать объекты отчетов с разных файлов AutoCAD
  • объектам СПДС GraphiCS, блокам и примитивам AutoCAD;
  • возможность редактирования объектов СПДС GraphiCS отчета из таблицы
Конечно, не обошлось и без недостатков, при большом количестве объектов отчета, если при этом таблица выполняет вычисления и логическую обработку, AutoCAD начинает заметно «подвисать-подтормаживать». Обычно это решается отключением «автотчетов» или вставкой таблиц-отчетов на чертеж в последнюю очередь.
CSoft в СПДС GraphiCS 9 добавил интересные программные отчеты, один из них «Спецификация оборудования».

В принципе даже если не учитывать, что сама таблица сделана не по ГОСТ 21.110-2013 СПДС.

Хотя это и решается простым редактированием шаблона отчета, тем не менее не по ГОСТ изначально.
Сам отчет формируется достаточно неаккуратно, как по стилю, так и по содержанию:

 Новые  разделы не отделены от данных пустыми строками, одинаковые объекты с разными позициями попадают в разные строки, есть еще ряд недоработок, на досуге можете сами протестировать.
Главный же недостаток этого отчета в том, что он жестко настроен на сбор данных с маркера «ТХ_Позиция». Выборку маркеров делает только по одной активной вкладке (Модель или лист).
Пользователи активно пишут свои маркеры и программируют объекты, и хотелось бы такой же быстрый отчет, как сделал CSoft, желательно, что бы он при этом формировался по ГОСТ и собирал объекты со всего чертежа. Это собственно постановка задачи, которая была успешно решена средствами VBA.
Предлагаемый скрипт аналогично CSoft собирает отчет по маркеру «ТХ_Позиция» (этот маркер гарантированно есть у всех пользователей СПДС GraphiCS), но при необходимости может быть перенастроен на любой объект СПДС GraphiCS, об этом ниже.
Скрипт выполняет сортировку данных по разделам и внутри раздела по оборудованию, одинаковые детали группирует с простановкой общего количества и позиционных обозначений. Причем если одна и та же деталь встречается несколько раз, но с разным позиционным обозначением (например: «поз.1» «поз.2»), то записаны в спецификацию будут обе позиции через запятую: поз.1,поз.2.
Выборка объектов отчета может производиться, как по всему документу AutoCAD, так и по активной вкладке.
Результат работы скрипта:


Для того, что бы запустить макрос его надо загрузить в AutoCAD из меню:

Или командой VBAMAN.
В результате появится окно диспетчера VBA.

  1. По кнопке «Загрузить», появится стандартное окно «Выбор проектов VBA», где нужно выбрать проект «MC_9_V051_TX.dvb»
  2. Затем по кнопке «Редактор Visual Basic» переходим в редактор скрипта, заходим в меню «Tools-> References»
И подключаем необходимые библиотеки, нам нужна библиотека: «MechaniCS COM2 type library». Которую можно найти пролистав список ниже или нажав кнопку «Browse..» и явно указав расположение файла McCOM2.dll, который как правило располагается в «c:\Program Files\CSoft\СПДС GraphiCS 9\mg9x64\McCOM2.dll» или где-то рядом.


В принципе все готово для генерации отчетов. Но для того, что бы было красиво необходимо в базу СПДС GraphiCS загрузить шаблон таблицы (в загрузке).
Теперь размещаем на чертеже маркеры «ТХ_Позиция» и запускаем макрос «R1»-для отчета по текущей вкладке, или «R2»-отчет по всему документу.
Запустить скрипт можно введя в командной строке команду «-vbarun» а затем имя макроса «R1» или «R2», либо через меню:


Возможно в дальнейшем вы захотите адаптировать макрос «под себя», настроить выборку по другим объектам и другими параметрами, для этого в макросе есть модуль «Options» в котором можете провести все необходимые изменения. В скрипте имеются все необходимые комментарии поэтому сложностей настройка под себя вызвать не должна ни у кого.
При желании макрос можно адаптировать, что бы он выводил отчет не в таблицу СПДС, а допустим в документ Word или Excel, но это уже отдельная тема.
Не у всех пользователей есть возможность запускать VBA из под AutoCAD. Но если очень хочется, то в архиве лежит файл Excel с адаптированным макросом из которого то же можно формировать табличный отчет в AutoCAD.
Из настроек для Excel требуется дополнительно в «Tools-> References» подключить библиотеку «AutoCAD 2012 type library», как на рисунке ниже.


По этой ссылке вы можете, скачать файлы макросов и таблицы.
______________________________________________________
Отдельная благодарность swell{d} за придание мне начального ускорения.

Комментариев нет :

Отправить комментарий