BIMIT

Разработка плагинов

Модуль "Плагин" представляет из себя инструментарий по написанию небольших программ на языке 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).

Каждый из интерфейсов содержит набор методов.

Copyright © 2026