Разработка плагинов
Модуль "Плагин" представляет из себя инструментарий по написанию небольших программ на языке Groovy для работы с BIM-моделью проекта. Поддерживаются 8 типов плагинов:
Тип (PluginType) | Название в интерфейсе | Назначение |
|---|---|---|
SAMPLE | Выборка | выбор и подсветка элементов на модели |
REPORT | Отчеты | файл-отчёт XLSX, XLS, DOCX, PDF или TXT |
ANALYTICAL_REPORT | Аналитический отчет | интерактивная таблица в интерфейсе с выгрузкой в XLSX |
SMETA | Сметы | файл по данным сметы |
WORM | Ворм | файл по данным ведомости объёмов работ |
COLLISION | Коллизии | правило поиска коллизий или проверки модели |
WIDGET | Виджеты | плавающее окно с формой и данными |
BUSINESS_PROCESS | Бизнес процессы | реакция на события задач и запуск по расписанию |
Для написания программ, разработано специальное API. API модуля "Плагин" (Плагин API) облегчает доступ до ключевых данных системы BIM: проектов, моделей, элементов, геометрии, задач и т.п. Плагин API упрощает взаимодействие между пользователем и системой, позволяя, не программистам реализовать простые сценарии проверки модели, получения и отображения данных.
Точки входа
def start()- основная функция, вызывается при запуске плагина. Обязательна для всех типов.def form()- необязательная функция, описывает форму параметров, которую пользователь заполняет перед запуском. Значения полей формы приходят в params.- В плагинах «Бизнес процессы» дополнительно объявляются обработчики событий:
onCreate(task),onStatusChange(task),onDailyScheduler()и другие.
def form() {
form.addSelectCondition("condition")
}
def start() {
def elements = bim.getElements(params.get("condition") ?: 'entity = "IfcWall"')
console.info("Найдено элементов: " + elements.size())
return bim.showElements(elements)
}
Доступные интерфейсы
Интерфейсы доступны в плагине как готовые переменные. В start() во всех типах плагинов доступны console, params, bim, bimutils, ifcql, calc, notify, process, storage; остальные - в зависимости от типа:
| Тип плагина | Дополнительно в start() |
|---|---|
| Выборка | - |
| Отчеты | file, template |
| Аналитический отчет | table |
| Сметы, Ворм | file |
| Коллизии | form, collision, collisionType и константы SKIP, OK, FAIL, BASE, VALIDATE |
| Виджеты | form, widget |
| Бизнес процессы | file, template |
null, и обращение к нему завершается ошибкой NullPointerException.- Внутри
form()доступны толькоconsole,params,bim,bimutils,ifcql,form(а такжеcollisionиcollisionTypeв плагинах «Коллизии»,widgetв «Виджетах»).calc,notify,process,storage,file,table,templateтам равныnull. - В обработчиках событий бизнес-процессов доступны
console,params,bim,bimutils,calc,notify,file,template,collision;ifcql,process,storage,form,tableравныnull.
Для пользователей в API доступны специальные интерфейсы:
- bim - получение данных проекта, моделей, элементов и задач
- bimutils - вспомогательные геометрические расчёты (смежность, контакт элементов)
- calc - геометрические и математические вычисления
- collision - формирование списка коллизий и результатов проверок
- console - вывод отладочной информации
- file - создание и заполнение файлов отчётов
- form - форма параметров плагина
- ifcql - работа с выражениями IFCQL
- notify - отправка уведомлений
- params - входные параметры запуска
- process - индикатор выполнения
- storage - постоянное хранилище данных проекта
- table - таблица аналитического отчёта
- template - заполнение шаблона отчёта
Кроме того, в плагинах «Виджеты» доступен интерфейс widget (окно виджета), а в плагинах «Коллизии» - переменная collisionType с видом правила (BASE - коллизии, VALIDATE - проверки, см. collision).
Каждый из интерфейсов содержит набор методов.

