Найти в Дзене
Let's manage #BIM

Как читать IFC?

Берем документацию (2x3 или 4x3) и открываем через блокнот нашу модель. Я пользуюсь Notepad ++, кто-то Visual Studio Code (я пока не доросла) - выбирайте сами. Но совместно с Open IFC Viewer (для продвинутого пользователя: можно посмотреть все параметры и связи, но через отдельное окно) и Larix.Manager (для простого пользователя: отображает все нужные параметры элемента и материалов в свойствах). Например, хотим узнать всё про любой элемент модели: Давайте разбираться, что тут написано. #154=IFCWALL('3I61EuYrT5wfnJ$oBYREqo',$,'constituent-set',$,$,#179,#160,$,.MOVABLE.) Кратко: это стена, без указанных метаданных, имеющая имя "constituent-set", с геометрией в #160, размещением в #179 и типом MOVABLE, то есть мобильная/перемещаемая стена. А если подробно и по полочкам: $ означает, что значение не указано Едем дальше, а какие тут есть связи? #179=IFCLOCALPLACEMENT(#66,#178); IfcLocalPlacement — это способ задать положение объекта (в данном случае стены) в пространстве относительно друго
Оглавление

Берем документацию (2x3 или 4x3) и открываем через блокнот нашу модель. Я пользуюсь Notepad ++, кто-то Visual Studio Code (я пока не доросла) - выбирайте сами. Но совместно с Open IFC Viewer (для продвинутого пользователя: можно посмотреть все параметры и связи, но через отдельное окно) и Larix.Manager (для простого пользователя: отображает все нужные параметры элемента и материалов в свойствах).

Например, хотим узнать всё про любой элемент модели:

  • Выделяем в окне Визуализации или в дереве модели элемент
  • ПКМ вызываем контекстное меню
  • Tree View
-2

-3

Давайте разбираться, что тут написано.

#154=IFCWALL('3I61EuYrT5wfnJ$oBYREqo',$,'constituent-set',$,$,#179,#160,$,.MOVABLE.)

Кратко: это стена, без указанных метаданных, имеющая имя "constituent-set", с геометрией в #160, размещением в #179 и типом MOVABLE, то есть мобильная/перемещаемая стена. А если подробно и по полочкам:

$ означает, что значение не указано

-4

Едем дальше, а какие тут есть связи?

Object Placement

#179=IFCLOCALPLACEMENT(#66,#178);

IfcLocalPlacement — это способ задать положение объекта (в данном случае стены) в пространстве относительно другого объекта или системы координат.

-5

Положение стены описывается этажом со смещением согласно строчке #178. Положение этажа, на котором расположена стена описывается зданием со смещением согласно строчке #65. и тд

Стена #179 = IfcLocalPlacement(#66, #178)
Этаж #66 = IfcLocalPlacement(#60, #65)
Здание #60 = IfcLocalPlacement(#54, #59)
Площадка #54 = IfcLocalPlacement($, #53) ← глобальная система ($)

#54 — корневая локальная система, она не привязана ни к чему. То есть она стоит непосредственно в глобальной системе координат проекта.

#53 = IfcAxis2Placement3D(#50, #51, #52)

Итого: Стена стоит в определённом месте модели, которое вычисляется через 4 вложенных преобразования координат.

Representation

#160=IFCPRODUCTDEFINITIONSHAPE($,$,(#161));

IfcProductDefinitionShape - определяет всю информацию о форме (геометрии), которая относится к IfcProduct. Что означают значения через запятую:

-6
#161=IFCSHAPEREPRESENTATION(#15,'Body','Tessellation',(#162));

IFCShapeRepresentation — это контейнер геометрии. Что означают значения через запятую:

-7
-8

Tessellation — это тип геометрического представления, где поверхность, представленная только через тесселяцию — то есть сетку из полигонов (чаще всего треугольников или квадов)

Итого: стена имеет ровно одно геометрическое представление, а если быть точнее геометрия объекта представлена полигонизированной сеткой.

HasAssociations

-9

IfcRelAssociatesMaterial - это связь, которая назначает материал (или набор материалов) объекту.

#171=IFCRELASSOCIATESMATERIAL('2wlWdQBjL7CfO$0swdh_G6',$,$,$,(#154),#170)

2wlWdQBjL7CfO$0swdh_G6 (GUID)

$,$,$, (не заданы OwnerHistory, Name, Description)

#154 (список объектов с данным материалом, в данном случае одна стена)

#170 сам материал (Бывает разных типов IfcMaterial / IfcMaterialList / IfcMaterialLayerSet / IfcConstituentSet / IfcProfileSet)

В данном примере 1 ассоциация, а может быть больше, например:

  • IfcRelAssociatesClassification → классификатор (OmniClass, UniClass, ГОСТ)
  • IfcRelAssociatesDocument → документы
  • IfcRelAssociatesLibrary → библиотеки

Подробнее про типы читай в статье:

Итого: на стену назначен перечень материалов (почему-то в этой модели тип для сложных составных объектов, а должен быть IfcMaterialLayerSet) без доп. свойств материала.

IfcMaterialProperties

Набор свойств материала. В примере выше он отсутствует. А вот пример объекта, где заполнены свойства материала:

-10

IfcRelContainedInSpatialStructure

Связь, которая определяет, в каком пространственном элементе находится объект.

-11
#154=IFCWALL('3I61EuYrT5wfnJ$oBYREqo',$,'constituent-set',$,$,#179,#160,$,.MOVABLE.) -> ContainedInStructure (1) -> #68=IFCRELCONTAINEDINSPATIALSTRUCTURE('0R09gE1zT6EO5XPEuFreHI',$,$,$,(#67,#102,#154,#196,#239),#43)

Итого: у стены есть ровно одна пространственная ассоциация, 5 элементов содержатся в одном и том же пространстве на таком-то этаже.

Другие атрибуты и связи

Казалось бы всё, но только для данного примера, ещё несколько примеров:

-12

UnitsInContext

IsTypedBy

IsDefinedBy

и т.д.

Полезные шпаргалочки от клуба IFC - на десерт

Заключение

На первый взгляд всё выглядит очень пугающе, но если посидеть и покопаться, вооружившись нужными инструментами, то всё уже не так страшно!

Особого вывода нет, так как статья по факту не закончена, ведь столько всего не раскрыто ещё! Пиши в комментариях, про что ещё написать