Интерфейс bim
Version 69.1 by Bimit Administrator on 17.07.2023, 11:58
Основной интерфейс для получения и работы с данными. В данном интерфейсе доступны следующие методы:
- getProject - взятие проекта на котором выполняется плагин
- getProfile - получение данных о пользователе по его идентификатору Uuid
- getProjectModels - взятие всех активных моделей проекта на котором выполняется плагин
- getModelRevisions - взятие всех ревизий модели
- getProjectTasks - получение списка всех задач проекта
- getTaskComments - получение списка всех комментариев у задачи по идентификатору задач
- getTaskAttachments - получение списка всех вложений к задаче по идентификатору задач
- getElements - функция получения списка элементов с полной информацией
- getElement - функция получения полной информации о элементе
- getGeometryElement - функция получения полной информации о элементе и дополнительно параметры геометрии
- getGeometryElements - функция получения списка элементов с полной информацией и дополнительно параметры геометрии, на вход ей можно подать: условие поиска, сложное условие поиска
- getGeometryProject - взятие данных о проекта с добавленными данными по геометрии модели: границы и размеры границ по осям OX,OY,OZ
- getGeometryModel - взятие данных о модели по ее идентификатору с добавленными данными по геометрии модели: границы и размеры границ по осям OX,OY,OZ
- getGeometryElementA - специфичная функция получения полной информации о элементе и дополнительно параметры геометрии для расчета коллизий (сторона А, если существует)
- getGeometryElementB - специфичная функция получения полной информации о элементе и дополнительно параметры геометрии для расчета коллизий (сторона B, если существует)
- getGeometryObject - функция получения координат элемента для формирования объемной модели или отрисовки на экране
- showElements - функция отображения на экране списка элементов (выбор/подсветка на модели)
- createGroupElements - создание (объединение) элементов в группы с указанием цвета в формате HEX
- showGroupElements - функция отображения/подсветки на экране ранее созданных групп элементов
- createCondition - функция создания условия поиска элементов
- getProjectCollisions - функция получения списка коллизий проекта
- getModelCollisions - функция получения списка коллизий модели
- getCollisionsForReport() - функция получения списка коллизий для отчета
- getFilesDownloadLinks - получение списка ссылок на скачивание файлов, которые вложены в задачи проекта
- editTokenExpiredDate - позволяет изменить количество дней, через сколько токен для скачивания файлов станет недействительным
- createConditionFromId - функция создания условия поиска элементов по uuid
Справочники
- bim.getProject() - метод представляет следующую структуру
Пример использования:
def project = bim.getProject()
def editProjectDate = project.getEditDate()
console.info(editProjectDate.toString())
// -> “INFO: 2022-01-01 01:01:12.567 +0300”
def editProjectDate = project.getEditDate()
console.info(editProjectDate.toString())
// -> “INFO: 2022-01-01 01:01:12.567 +0300”
- bim.getProfile(Идентификатор пользователя)
Пример использования:
def profile = bim.getProfile(UUID.fromString("ef952aa8-7ddc-11ec-90d6-0242ac120003")
def profileUuid= profile.getUuid()
// console.info(profileUuid.toString()) -> “INFO: ef952aa8-7ddc-11ec-90d6-0242ac120003”
def profileUuid= profile.getUuid()
// console.info(profileUuid.toString()) -> “INFO: ef952aa8-7ddc-11ec-90d6-0242ac120003”
- bim.getProjectModels()
Пример использования:
def listModels = bim.getProjectModels()
for (Model model: listModels ) {
def modelUuid = model.getUuid()
// console.info(modelUuid .toString()) -> “INFO: 4e733308-7ddd-11ec-90d6-0242ac120003”
}
for (Model model: listModels ) {
def modelUuid = model.getUuid()
// console.info(modelUuid .toString()) -> “INFO: 4e733308-7ddd-11ec-90d6-0242ac120003”
}
- bim.getModelRevisions(Идентификатор модели)
Пример использования:
def listModelRevisions = bim.getModelRevisions(UUID.fromString("4e733308-7ddd-11ec-90d6-0242ac120003")
for (ModelRevision modelRevision: listModelRevisions ) {
def modelRevisionUuid= modelRevision.getUuid()
// console.info(modelRevisionUuid .toString()) -> “INFO: 697ba2b6-7ddd-11ec-90d6-0242ac120003”
}
for (ModelRevision modelRevision: listModelRevisions ) {
def modelRevisionUuid= modelRevision.getUuid()
// console.info(modelRevisionUuid .toString()) -> “INFO: 697ba2b6-7ddd-11ec-90d6-0242ac120003”
}
- getProjectTasks() метод, который возвращает структуру списка задач, каждая задача представляет из себя следующую структуру:
Пример использования
def listTasks = bim.getProjectTasks()
for (Task task: listTasks ) {
def taskUuid= task.getUuid()
// console.info(taskUuid .toString()) -> “INFO: c73df7aa-7ddd-11ec-90d6-0242ac120003”
}
for (Task task: listTasks ) {
def taskUuid= task.getUuid()
// console.info(taskUuid .toString()) -> “INFO: c73df7aa-7ddd-11ec-90d6-0242ac120003”
}
- bim.getTaskComments(UUID taskUuid)
Пример использования
def listComments = bim.getTaskComments(c73df7aa-7ddd-11ec-90d6-0242ac120003)
for (Comment comment: listComments ) {
def authorUuid= comment.setAuthorUuid()
for (Comment comment: listComments ) {
def authorUuid= comment.setAuthorUuid()
- bim.getTaskAttachments(UUID taskUuid)
Пример использования:
def listAttachments = bim.getTaskAttachments(c73df7aa-7ddd-11ec-90d6-0242ac120003)
for (Attachment attachment: listAttachments ) {
def createDate= attachment.setCreateDate()
// console.info(createDate.toString()) -> “INFO: 2022-01-21 10:01:12.567 +0300”
}
for (Attachment attachment: listAttachments ) {
def createDate= attachment.setCreateDate()
// console.info(createDate.toString()) -> “INFO: 2022-01-21 10:01:12.567 +0300”
}
- bim.getElements(Условие поиска)
- bim.getElements(Список идентификаторов элементов)
Примеры использования:
def conditionWall = bim.createCondition("class", "eq", "IfcWall")
def listWalls = bim.getElements (conditionWall )
for (Element element: listWalls ) {
def globalId = element.getGlobalId()
// console.info(globalId) -> “INFO: 0Dtdg2chjBhhgnQ7zCqZkk”
}
def listWalls = bim.getElements (conditionWall )
for (Element element: listWalls ) {
def globalId = element.getGlobalId()
// console.info(globalId) -> “INFO: 0Dtdg2chjBhhgnQ7zCqZkk”
}
def elements = new HashSet<UUID>()
elements.add(UUID.randomUuid())
def listElements = bim.getElements(elements)
for (Element element: listElements ) {
def globalId = element.getGlobalId()
// console.info(globalId) -> “INFO: 0Dtdg2chjBhhgnQ7zCqZkk”
}
elements.add(UUID.randomUuid())
def listElements = bim.getElements(elements)
for (Element element: listElements ) {
def globalId = element.getGlobalId()
// console.info(globalId) -> “INFO: 0Dtdg2chjBhhgnQ7zCqZkk”
}
- bim.getElement(Идентификатор элемента)
- bim.getElement(Идентификатор элемента как текст)
Примеры использования:
def element = bim.getElement(UUID.fromString("e5a114d0-7de1-11ec-90d6-0242ac120003"))
def globalId = element.getGlobalId()
// console.info(globalId) -> “INFO: 0Dtdg2chjBhhgnQ7zCqZkk”
def globalId = element.getGlobalId()
// console.info(globalId) -> “INFO: 0Dtdg2chjBhhgnQ7zCqZkk”
def element = bim.getElement("e5a114d0-7de1-11ec-90d6-0242ac120003")
def globalId = element.getGlobalId()
// console.info(globalId) -> “INFO: 0Dtdg2chjBhhgnQ7zCqZkk”
def globalId = element.getGlobalId()
// console.info(globalId) -> “INFO: 0Dtdg2chjBhhgnQ7zCqZkk”
- bim.getGeometryElement(Идентификатор элемента)
- bim.getGeometryElement(Идентификатор элемента как текст)
Структура границ Bounds:
Пример использования:
def geometryElement = bim.getGeometryElement(UUID.fromString("e5a114d0-7de1-11ec-90d6-0242ac120003")
def globalId = geometryElement .getGlobalId()
// console.info(globalId) -> “INFO: 0Dtdg2chjBhhgnQ7zCqZkk”
def volumeElement = geometryElement .getVolume()
// console.info(volumeElement.toString()) -> “INFO: 0.1”
def globalId = geometryElement .getGlobalId()
// console.info(globalId) -> “INFO: 0Dtdg2chjBhhgnQ7zCqZkk”
def volumeElement = geometryElement .getVolume()
// console.info(volumeElement.toString()) -> “INFO: 0.1”
- bim.getGeometryElements(Условие поиска)
- bim.getGeometryElements(Список идентификаторов элементов)
Примеры использования:
def conditionWall = bim.createCondition("class", "eq", "IfcWall")
def listWalls = bim.getGeometryElements (conditionWall )
for (Element geometryElement: listWalls ) {
def globalId = geometryElement.getGlobalId()
// console.info(globalId) -> “INFO: 0Dtdg2chjBhhgnQ7zCqZkk”
def volumeElement = geometryElement .getVolume()
// console.info(volumeElement.toString()) -> “INFO: 0.1”
}
def listWalls = bim.getGeometryElements (conditionWall )
for (Element geometryElement: listWalls ) {
def globalId = geometryElement.getGlobalId()
// console.info(globalId) -> “INFO: 0Dtdg2chjBhhgnQ7zCqZkk”
def volumeElement = geometryElement .getVolume()
// console.info(volumeElement.toString()) -> “INFO: 0.1”
}
def elements = new HashSet<UUID>()
elements.add(UUID.randomUuid())
def listElements = bim.getGeometryElements(elements)
for (Element geometryElement: listElements ) {
def globalId = geometryElement.getGlobalId()
// console.info(globalId) -> “INFO: 0Dtdg2chjBhhgnQ7zCqZkk”
def volumeElement = geometryElement .getVolume()
// console.info(volumeElement.toString()) -> “INFO: 0.1”
}
elements.add(UUID.randomUuid())
def listElements = bim.getGeometryElements(elements)
for (Element geometryElement: listElements ) {
def globalId = geometryElement.getGlobalId()
// console.info(globalId) -> “INFO: 0Dtdg2chjBhhgnQ7zCqZkk”
def volumeElement = geometryElement .getVolume()
// console.info(volumeElement.toString()) -> “INFO: 0.1”
}
- bim.getGeometryProject()
Структура границ Bounds:
Пример использования:
def geometryProject = bim.getGeometryProject()
def bounds = geometryProject.getBounds()
def bounds = geometryProject.getBounds()
- bim.getGeometryModel()
Структура границ Bounds:
Пример использования:
def geometryModel = bim.getGeometryModel(UUID.fromString("ac178efe-7e8d-11ec-90d6-0242ac120003")
def bounds = geometryModel.getBounds()
def bounds = geometryModel.getBounds()
- bim.getGeometryElementA()
Пример использования:
def geometryElement = bim.getGeometryElementA()
def globalId = geometryElement .getGlobalId()
// console.info(globalId) -> “INFO: 16BLvbdfv9tvbtZs9KMly$”
def volumeElement = geometryElement .getVolume()
// console.info(volumeElement.toString()) -> “INFO: 1.34”
def globalId = geometryElement .getGlobalId()
// console.info(globalId) -> “INFO: 16BLvbdfv9tvbtZs9KMly$”
def volumeElement = geometryElement .getVolume()
// console.info(volumeElement.toString()) -> “INFO: 1.34”
- bim.getGeometryElementB()
Пример использования:
def geometryElement = bim.getGeometryElementB()
def globalId = geometryElement .getGlobalId()
// console.info(globalId) -> “INFO: 16BLvbdfv9tvbtZs9KMly$”
def volumeElement = geometryElement .getVolume()
// console.info(volumeElement.toString()) -> “INFO: 1.01”
def globalId = geometryElement .getGlobalId()
// console.info(globalId) -> “INFO: 16BLvbdfv9tvbtZs9KMly$”
def volumeElement = geometryElement .getVolume()
// console.info(volumeElement.toString()) -> “INFO: 1.01”
- bim.getGeometryObject(Идентификатор элемента)
- bim.showElements(Условие поиска)
- bim.showElements(список глобальных идентификаторов элементов)
- bim.showElements(список идентификаторов элементов)
- bim.showElements(список элементов)
- bim.showElements(элемент1,элемент2,...)
- bim.showElement(элемент) - показ одного элемента
Примеры использования:
def conditionWall = bim.createCondition("class", "eq", "IfcWall")
def conditionDoor = bim.createCondition("class", "eq", "IfcDoor")
bim.showElements(conditionWall | conditionDoor )
def conditionDoor = bim.createCondition("class", "eq", "IfcDoor")
bim.showElements(conditionWall | conditionDoor )
bim.showElements(["dhb487dbcsndb","salndhkjfnjkenkjsd","sdfsdfadsdfsad"])
bim.showElements([UUID.fromString("ac178efe-7e8d-11ec-90d6-0242ac120003",UUID.fromString("e5a114d0-7de1-11ec-90d6-0242ac120003"])
def elementCondition = bim.createCondition("attribute","width", "gt", "1000")
def elements = bim.getElements(elementCondition)
bim.showElements(elements)
def elements = bim.getElements(elementCondition)
bim.showElements(elements)
- bim.createGroupElements (Цвет, Условие поиска)
- bim.createGroupElements (Цвет, список элементов)
- bim.createGroupElements (Цвет, список идентификаторов элементов)
Примеры использования:
def conditionDoor = bim.createCondition("class", "eq", "IfcDoor")
bim.createGroupElements("#FF9933", conditionDoor )
bim.createGroupElements("#FF9933", conditionDoor )
def conditionDoor = bim.createCondition("class", "eq", "IfcDoor")
def elements = bim.getElements(conditionDoor)
bim.createGroupElements("#FF9933", elements)
def elements = bim.getElements(conditionDoor)
bim.createGroupElements("#FF9933", elements)
bim.createGroupElements("#FF9933", ["dhb487dbcsndb","salndhkjfnjkenkjsd","sdfsdfadsdfsad"] )
- bim.showGroupElements()
Пример использования:
bim.showGroupElements()
- bim.createCondition(параметр поиска, операторы сравнения ,значение для поиска)
- bim.createCondition(параметр поиска по атрибуту, наименование атрибута, операторы сравнения,значение поиска атрибута)
- bim.createCondition(параметр поиска по атрибуту, наименование группы атрибутов,наименование атрибута, операторы сравнения,значение поиска атрибута)
Примеры использования:
def conditionWall = bim.createCondition("class", "eq", "IfcWall")
def conditionDoor = bim.createCondition("class", "eq", "IfcDoor")
bim.showElements(conditionWall | conditionDoor )
def conditionDoor = bim.createCondition("class", "eq", "IfcDoor")
bim.showElements(conditionWall | conditionDoor )
def elementCondition = bim.createCondition("attribute","width", "gt", "1000")
bim.showElements(elementCondition)
bim.showElements(elementCondition)
def elementCondition = bim.createCondition("attribute","BaseQuantities","width", "gt", "1000")
bim.showElements(elementCondition)
bim.showElements(elementCondition)
- bim.getProjectCollisions()
- bim.getProjectCollisions(Статус коллизии)
Примеры использования:
def listCollisions = bim.getProjectCollisions()
for (def collsion: listCollisions ) {
def globalAId = collsion.getGlobalAId()
// console.info(globalAId) -> “INFO: 0Dtdg2chjBhhgnQ7zCqZkk”
def globalBId = collsion.getGlobalBId()
// console.info(globalBId) -> “INFO: js89njhsihd9ffsd3kmll9hln0”
}
for (def collsion: listCollisions ) {
def globalAId = collsion.getGlobalAId()
// console.info(globalAId) -> “INFO: 0Dtdg2chjBhhgnQ7zCqZkk”
def globalBId = collsion.getGlobalBId()
// console.info(globalBId) -> “INFO: js89njhsihd9ffsd3kmll9hln0”
}
def listCollisions = bim.getProjectCollisions("NEW")
for (def collsion: listCollisions ) {
def globalAId = collsion.getGlobalAId()
// console.info(globalAId) -> “INFO: 0Dtdg2chjBhhgnQ7zCqZkk”
def globalBId = collsion.getGlobalBId()
// console.info(globalBId) -> “INFO: js89njhsihd9ffsd3kmll9hln0”
}
for (def collsion: listCollisions ) {
def globalAId = collsion.getGlobalAId()
// console.info(globalAId) -> “INFO: 0Dtdg2chjBhhgnQ7zCqZkk”
def globalBId = collsion.getGlobalBId()
// console.info(globalBId) -> “INFO: js89njhsihd9ffsd3kmll9hln0”
}
- bim.getModelCollisions(Идентификатор модели)
- bim.getModelCollisions(Идентификатор модели, Статус коллизии) (см.Статусы коллизий)
Примеры использования:
def listCollisions = bim.getModelCollisions(UUID.fromString("ac178efe-7e8d-11ec-90d6-0242ac120003")
for (def collsion: listCollisions ) {
def globalAId = collsion.getGlobalAId()
// console.info(globalAId) -> “INFO: 0Dtdg2chjBhhgnQ7zCqZkk”
def globalBId = collsion.getGlobalBId()
// console.info(globalBId) -> “INFO: js89njhsihd9ffsd3kmll9hln0”
}
for (def collsion: listCollisions ) {
def globalAId = collsion.getGlobalAId()
// console.info(globalAId) -> “INFO: 0Dtdg2chjBhhgnQ7zCqZkk”
def globalBId = collsion.getGlobalBId()
// console.info(globalBId) -> “INFO: js89njhsihd9ffsd3kmll9hln0”
}
def listCollisions = bim.getModelCollisions(UUID.fromString("ac178efe-7e8d-11ec-90d6-0242ac120003", "NEW")
for (def collsion: listCollisions ) {
def globalAId = collsion.getGlobalAId()
// console.info(globalAId) -> “INFO: 0Dtdg2chjBhhgnQ7zCqZkk”
def globalBId = collsion.getGlobalBId()
// console.info(globalBId) -> “INFO: js89njhsihd9ffsd3kmll9hln0”
}
for (def collsion: listCollisions ) {
def globalAId = collsion.getGlobalAId()
// console.info(globalAId) -> “INFO: 0Dtdg2chjBhhgnQ7zCqZkk”
def globalBId = collsion.getGlobalBId()
// console.info(globalBId) -> “INFO: js89njhsihd9ffsd3kmll9hln0”
}
- bim.getCollisionsForReport()
Пример использования:
def collisionList = bim.getCollisionsForReport()
def param = [:]
param.add(“pageSize”, 3)
param.add(“fontSize”, 12)
file.collisionsToPdf(template, collisionList, param)
def param = [:]
param.add(“pageSize”, 3)
param.add(“fontSize”, 12)
file.collisionsToPdf(template, collisionList, param)
- bim.getFilesDownloadLinks() - Данный метод предназначен для получения списка ссылок на скачивания файлов из задач по проекту.
Ссылка действительна в течении одного дня. Изменить данное время можно командой editTokenExpiredDate (см. ниже). Данный метод рекомендуется использовать при формировании отчетов.
Пример использования:
def tasks = bim.getProjectTasks()
def taskAttachments = []
for(def task : tasks) {
taskAttachments.push(bim.getTaskAttachments(task.uuid))
}
def uuids = []
for (def attachments : taskAttachments) {
for (def attachment : attachments) {
if (attachment != null)
uuids.push(attachment.uuid)
}
}
def downloadLinks = bim.getFilesDownloadLinks(uuids)
console.info(downloadLinks) -> INFO [
6201ced9-b873-4a7d-8266-537f1566c543.docx,
687ac450-75e2-42f6-9fbe-7c608912c079.png
]
def taskAttachments = []
for(def task : tasks) {
taskAttachments.push(bim.getTaskAttachments(task.uuid))
}
def uuids = []
for (def attachments : taskAttachments) {
for (def attachment : attachments) {
if (attachment != null)
uuids.push(attachment.uuid)
}
}
def downloadLinks = bim.getFilesDownloadLinks(uuids)
console.info(downloadLinks) -> INFO [
6201ced9-b873-4a7d-8266-537f1566c543.docx,
687ac450-75e2-42f6-9fbe-7c608912c079.png
]
- bim.editTokenExpiredDate()
Пример использования:
UUID uuid = UUID.fromString('94e8e236-510b-4325-8b3a-15e317924bb2')
bim.editTokenExpiredDate (uuid, 2)
bim.editTokenExpiredDate (uuid, 2)
- bim.createCondition(параметр поиска, операторы сравнения, идентификатор для поиска (uuid))
- bim.createCondition(параметр поиска, операторы сравнения, идентификатор для поиска (uuid), значение для поиска)
Примеры использования:
def conditionWall = bim.createCondition("class", "eq", "IfcWall")
def conditionDoor = bim.createCondition("class", "eq", "IfcDoor")
bim.showElements(conditionWall | conditionDoor )
def conditionDoor = bim.createCondition("class", "eq", "IfcDoor")
bim.showElements(conditionWall | conditionDoor )
def elementCondition = bim.createCondition("attribute","width", "gt", "1000")
bim.showElements(elementCondition)
bim.showElements(elementCondition)
СПРАВОЧНИКИ
Операторы сравнения
eq | Равно |
noteq | Не равно |
cont | Содержит |
notcont | Не содержит |
gt | Больше |
gteq | Больше или равно |
lt | Меньше |
lteq | Меньше или равно |
ex | Имеет значение ex |
notex | Не имеет значение notex |
Параметры поиска
model | поиск по названию модели в структуре проекта |
floor | поиск по названию этажа |
class | поиск по названию ifc класса (ifc тип) |
zone | поиск по названию зоны, объединяющей элементы |
layer | поиск по названию слоя объединяющего элементы |
attribute | поиск по значению атрибута |
geometry | параметры поиска по значению рассчитанной геометрии, на текущий момент доступно только площадь(ключ атрибута =”area”) и объем(ключ атрибута =”volume”) |
Статусы коллизий
NEW | запрос коллизий в статусе новые |
WORK | коллизии в работе |
SOLVED | решенные коллизии |
ALLOWED | допустимые коллизии |