Модель данных Industry Foundation Classes (IFC ) является предназначен для описания данных об архитектуре, строительстве и строительстве.
Это независимая от платформы спецификация открытого формата файла, которая не контролируется одним поставщиком или группой поставщиков. Это объектно-ориентированный формат файла с моделью данных , разработанный buildingSMART (ранее Международный альянс по взаимодействию, IAI) для облегчения взаимодействия в архитектура, инженерия и строительство (AEC), и это широко используемый формат сотрудничества в проектах на основе информационного моделирования зданий (BIM). Спецификация модели IFC открыта и доступна. Он зарегистрирован ISO и является официальным международным стандартом ISO 16739-1: 2018.
Из-за своей ориентации на простоту взаимодействия между программными платформами, датское правительство сделало использование формата (ов) IFC обязательным для общественных строительных проектов. Кроме того, финская государственная компания по управлению объектами Senate Properties требует использования IFC-совместимого программного обеспечения и BIM во всех своих проектах. Кроме того, норвежское правительство, организации здравоохранения и обороны требуют использования IFC BIM во всех проектах, а многие муниципалитеты, частные клиенты, подрядчики и проектировщики интегрировали IFC BIM в свой бизнес.
Инициатива IFC началась в 1994 году, когда Autodesk сформировал отраслевой консорциум для консультирования компании по вопросам разработки набора классов C ++, которые могли бы поддерживать интегрированную разработку приложений. К консорциуму присоединились двенадцать американских компаний. Эти компании включали ATT, HOK Architects, Honeywell, Carrier, Tishman and Butler Manufacturing. Первоначально названный Промышленным альянсом по совместимости, в сентябре 1995 года Альянс открыл членство для всех заинтересованных сторон, а в 1997 году изменил свое название на Международный альянс по взаимодействию. Новый альянс был преобразован в некоммерческую отраслевую организацию с целью публикации Industry Foundation Class (IFC) в качестве нейтральной модели продукта AEC, отвечающей жизненному циклу здания AEC. Дальнейшее изменение названия произошло в 2005 году, и теперь спецификация IFC разрабатывается и поддерживается buildingSMART.
IFC определяет несколько форматов файлов, которые могут использоваться, поддерживая различные кодировки одних и тех же базовых данных.
IFC имеет формат ASCII, который, хотя и удобочитаемый, страдает от общих проблем с файлами ASCII, поскольку размеры файлов слишком большие, файлы должны быть прочитаны последовательно от начала до конца, извлечение промежуточных файлов невозможно, файлы обрабатываются медленно, а определения не иерархичны. Помимо ifcXML и ifcZIP, усилия по модернизации включают разработку ifcOWL (на основе тройного языка Terse RDF ), ifcJSON (JavaScript Object Notation, широко доступный) и ifcHDF5 (Hierarchical Формат данных v5, двоичный). В 2020 году у buildingSmart было два проекта JSON в стадии реализации: ifcJSON v4 (прямое сопоставление с IFC v4 на основе EXPRESS) и ifcJSON v5, а также исследовательский проект, экспериментирующий с преобразованием IFC в двоичный формат.
IFC определяет основанную на EXPRESS модель отношения сущностей, состоящую из нескольких сотен сущностей, организованных в объектно-ориентированную иерархию наследования. Примеры объектов включают строительные элементы, такие как IfcWall, геометрию, такую как IfcExtrudedAreaSolid, и базовые конструкции, такие как IfcCartesianPoint.
На самом абстрактном уровне IFC делит все объекты на корневые и некорневые. Сущности с корневым доступом происходят от IfcRoot и имеют концепцию идентичности (имеющую GUID ) вместе с атрибутами для имени, описания и контроля версий. Некорневые объекты не имеют идентичности, и экземпляры существуют только в том случае, если на них прямо или косвенно ссылаются корневые экземпляры. IfcRoot подразделяется на три абстрактных понятия: определения объектов, отношения и наборы свойств:
IfcObjectDefinition разбивается на экземпляры объектов и типы объектов. IfcObject фиксирует вхождения объекта, например установку продукта, имеющую серийный номер и физическое размещение. IfcTypeObject фиксирует определения типов (или шаблоны), например, тип продукта, имеющий конкретный номер модели и общую форму. Вхождения и типы далее подразделяются на шесть основных понятий: субъекты («кто»), элементы управления («почему»), группы («что»), продукты («где»), процессы («когда») и ресурсы (« как").
IfcRelationship фиксирует отношения между объектами. Существует пять основных типов отношений: композиция, назначение, связь, ассоциация и определение.
IfcPropertyDefinition фиксирует динамически расширяемые наборы свойств. Набор свойств содержит одно или несколько свойств, которые могут быть одним значением (например, строка, число, единица измерения), ограниченным значением (имеющим минимум и максимум), перечислением, списком значений, таблицей значений или данными состав. Хотя IFC определяет несколько сотен наборов свойств для определенных типов, пользовательские наборы свойств могут быть определены поставщиками приложений или конечными пользователями.
IfcProduct является базовый класс для всех физических объектов и подразделяется на пространственные элементы, физические элементы, элементы структурного анализа и другие концепции. Продукты могут иметь связанные материалы, представления формы и размещение в пространстве. Пространственные элементы включают IfcSite, IfcBuilding, IfcBuildingStorey и IfcSpace. К физическим элементам здания относятся IfcWall, IfcBeam, IfcDoor, IfcWindow, IfcStair и т. Д. Элементы распределения (HVAC, электрические, водопровод ) имеют понятие портов, в которых элементы могут иметь специальные соединения для различных служб и соединяться вместе с помощью кабелей, труб или каналов для образования системы. Различные взаимосвязи используются для строительных элементов, таких как стены, в которых есть проемы, заполненные дверьми или окнами.
Материалы могут быть определены для продуктов в целом или как слои, профили или составные части для определенных частей.
Представления могут быть определены для явной трехмерной формы и, необязательно, как параметрические ограничения. Каждое представление идентифицируется IfcShapeRepresentation с хорошо известным именем.
Размещение может указывать положение, вертикальный угол и горизонтальный угол.
Количество может быть определено для целей взлета, таких как общая площадь, общая Объем, вес брутто, вес нетто и т. Д. IFC определяет различные количества, специфичные для каждого типа элемента, и метод расчета в соответствии с геометрией и взаимосвязями.
IfcProcess - это базовый класс для процессов, который подразделяется на задачи, события и процедуры. Процессы могут иметь продолжительность и планироваться на определенные периоды времени. Процессы могут быть упорядочены таким образом, что последующая задача может запускаться после завершения предыдущей задачи в соответствии с методом критического пути. Процессы могут быть вложены в подпроцессы для сводной сводки. Процессы могут быть присвоены продуктам с указанием результатов, полученных в результате выполненной работы.
IfcResource - это базовый класс ресурсов, который подразделяется на материалы, рабочую силу, оборудование, субподряды, бригады и т. Д. Ресурсы могут иметь разную стоимость и календари доступности. Ресурсы могут быть вложены в подресурсы для детального распределения. Ресурсы могут быть назначены процессам, указывающим на задачи, выполняемые от имени ресурса.
IfcProject инкапсулирует проект в целом и указывает имя проекта, описание, единицы измерения по умолчанию, валюту, систему координат и другую контекстную информацию. Допустимый файл IFC всегда должен включать в себя ровно один экземпляр IfcProject, с которым все остальные объекты связаны прямо или косвенно. Проект может включать несколько зданий, нескольких участников и / или несколько этапов в зависимости от конкретного использования.
В дополнение к информации, относящейся к конкретному проекту, IfcProject может также ссылаться на внешние проекты, из которых могут быть импортированы общие определения, такие как типы продуктов. Каждый внешний проект инкапсулируется с использованием IfcProjectLibrary [IFC2x4] вместе с IfcRelAssociatesLibrary и IfcLibraryInformation для идентификации конкретной версии импортированной библиотеки проекта.
Проекты поддерживают контроль версий, где любой объект на основе IfcRoot имеет уникальный идентификатор и может быть помечен как добавленный, измененный, удаленный или не имеющий изменений. Такая возможность позволяет детерминированно объединять несколько файлов IFC, обеспечивая целостность данных без вмешательства человека.