OpenBIM
Das IFC-Schema: Ein Blick ins Innere einer IFC-Datei – Struktur und Entitäten (Teil 2)
Grigorios Anagnostopoulos
Grigorios Anagnostopoulos
September 24, 2025
6 min

Inhaltsverzeichnis

01
Die Struktur einer IFC-Datei
02
Data-Abschnitt
03
Einheiten in IFC
04
Beispiel-Walkthrough: Eine Wand im Kontext
05
Warum Entitäten wichtig sind
06
Fazit (Teil 2)

Im vorherigen Artikel haben wir uns mit der Geschichte von IFC und den Grundlagen der Schema- und Dateiformate beschäftigen. Damit haben wir uns einen Überblick über die wichtigsten Aspekte verschafft und können nun einen Blick in eine IFC-Datei werfen, um zu sehen, wie die Informationen strukturiert sind.

Dieser Artikel konzentriert sich auf die allgemeine Organisation von IFC-Dateien und ihre Kernentitäten – die digitalen Bausteine, die Wände, Räume, Gebäude und mehr darstellen. In Teil 3 werden wir uns tiefer mit Eigenschaften und Beziehungen beschäftigen.

Die Struktur einer IFC-Datei

Bei der Arbeit mit IFC-Schemas in openBIM-Projekten ist es für Architekten, Ingenieure und BIM-Koordinatoren von entscheidender Bedeutung, die Struktur von IFC-Dateien zu verstehen. Eine IFC-Datei mag in einem Texteditor wie ein Block aus kryptischem Text aussehen, folgt jedoch einer klaren Logik. Sie ist in zwei Hauptteile unterteilt: 📂

  • Header-Abschnitt – Metadaten über die Datei selbst.
  • Data-Abschnitt – die eigentlichen Projektdaten: Entitäten, Attribute und deren Verbindungen.

Header-Abschnitt

Der Header definiert den Kontext einer IFC-Datei. Er teilt der empfangenden Software mit, um welche Art von Datei es sich handelt. Typische Inhalte sind: 📝

  • Dateibeschreibung: Zweck, Ursprungssystem, Schemaversion.
  • Dateiname: Projektname, Autor, Organisation, Zeitstempel.
  • Dateischema: gibt an, welche IFC-Version verwendet wird (z. B. IFC2x3, IFC4).

Ohne den Header wüsste die Software nicht, welche Regeln auf die folgenden Daten anzuwenden sind. Der Header ist beispielsweise entscheidend für die Interpretation der IFC-Schema-Version und die Gewährleistung der Kompatibilität. Stellen Sie sich den Header wie das Deckblatt eines technischen Berichts vor – ohne ihn ist der Rest viel schwieriger zu interpretieren.

ISO-10303-21;
HEADER;FILE_DESCRIPTION(('no view'),'2;1'); FILE_NAME('C://der/
pfad/zur/datei.ifc',('Linda'),('Software Name', 'Konrad-Zu 1,
Germany'), 'EDMsix Version 2.0100.09 Sep 7 2016',
'Allplan 2019.1 24.06.2019 16:10:06',''); FILE_SCHEMA(('IFC4'));
ENDSEC;

Data-Abschnitt

Der IFC-Datenabschnitt enthält die aktuellen Projektinformationen. Jedes Objekt im Projekt wird als Instanz einer Entität aus dem Schema dargestellt. 📊

Jede Instanz erhält:

  • eine Zeilennummer (als Referenz innerhalb der Datei),
  • eine GUID (Globally Unique Identifier)
  • und eine Reihe von Attributen (Geometrie, Platzierung, Material usw.).

Hier ist ein vereinfachtes Beispiel für eine Wand in STEP-Syntax:

#42 = IFCPROJECT('2C45vBrGbB_w_CB97snkya', ...);
#101 = IFCBUILDING('0oHfLk3df5wPq6', ...);
#201 = IFCBUILDINGSTOREY('3K9xGv4C5T$zQq', ...);
#301 = IFCWALLSTANDARDCASE('1Lm8y2FfH9R7Ts', 'Wall-001', ...);

Der obige Ausschnitt zeigt, wie IFC-Entitäten referenziert und verschachtelt werden, was ein charakteristisches Merkmal des IFC-Schemas ist. Beispielsweise gehört die Wand (#301) zu einem Stockwerk (#201), das zu einem Gebäude (#101) gehört, das wiederum zum Projekt (#42) gehört.

Die IFC-Schemaebenen

Um dies zu verstehen, ist es hilfreich zu wissen, wie IFC intern aufgebaut ist. Entitäten befinden sich nicht alle auf derselben Ebene – sie sind in einer Hierarchie von Ebenen organisiert, die aufeinander aufbauen:

  • Kernel (unterste Ebene): Die Grundlage. Definiert die allgemeinsten Entitäten und Konzepte, die überall verwendet werden. Beispiele: IfcRoot, IfcObjectDefinition, IfcRelationship.
  • Core Layer: Fügt grundlegende Definitionen für Objekte und Prozesse hinzu. Hier finden wir IfcObject, IfcTypeObject, IfcProduct und IfcProcess. Diese Entitäten unterscheiden physische Objekte von Aktivitäten, Steuerungen oder Gruppen.
  • Interoperability Layer (gemeinsame Ebene): Definiert Elemente, die mehreren Domänen gemeinsam sind. Beispiele hierfür sind IfcWall, IfcSlab, IfcBeam, IfcDoor und IfcWindow. Diese werden häufig in den Bereichen Architektur, Statik und MEP verwendet.
  • Domänenebenen (über Interop): Spezialisierte Entitätssätze für bestimmte Disziplinen (Architektur, Statik, HLK, Elektrik usw.).

schema layers
Abbildung 1: Wie IFC-Schema-Ebenen (Kern, Shared, Domain) mit der Vererbungshierarchie verknüpft sind, dargestellt anhand von IfcWall (Quelle: BIMcert Handbook, Edition 2024)

Diese Schichten (Kernel, Core, Interoperability, Domain) bilden das Fundament des Industry Foundation Classes (IFC)-Schemas und gewährleisten sowohl Flexibilität als auch Interoperabilität zwischen BIM-Tools. Diese Schichtung macht IFC sowohl flexibel und erweiterbar (neue Domänen können neue Entitäten hinzufügen) als auch konsistent (alles teilt einen gemeinsamen Kernel).

Datenvererbung in IFC

Zusätzlich zur Schichtung nutzt das IFC-Schema in hohem Masse die Vererbung – ein Konzept, das aus der objektorientierten Programmierung übernommen wurde. IFC-Entitäten existieren nicht isoliert, sondern übernehmen Attribute und Verhalten von übergeordneten Entitäten.

Nehmen wir das Beispiel IfcWall:

  • An der Spitze gibt IfcRoot jedem Objekt eine GlobalId, eine Eigentümerhistorie und eine grundlegende Identifikation.
  • Von IfcObjectDefinition übernimmt es die Fähigkeit, Teil von Beziehungen zu sein.
  • Von IfcObject erhält es einen Namen, eine Beschreibung und eine Typverknüpfung.
  • Von IfcProduct übernimmt es die geometrische Darstellung und Platzierung.
  • Von IfcElement übernimmt es konstruktionsbezogene Attribute (Tag, Verbindungen).
  • Schliesslich fügt es als IfcWall (in der gemeinsamen/Interoperabilitätsschicht) wandspezifische Bedeutungen und Geometrieregeln hinzu.

inheritance ifcwall
Abbildung 2: Darstellung der Vererbungsbeziehung der Entität IfcWall im IFC-Schema (Quelle: BIMcert Handbook, Edition 2024)

Diese hierarchische Vererbung hat zwei große Vorteile:

  • Konsistenz: Alle Entitäten haben gemeinsame Attribute wie GlobalId, Eigentumsverhältnisse und Platzierung.
  • Wiederverwendbarkeit: Neue Entitäten können durch Erweiterung bestehender Entitäten definiert werden, anstatt das Rad neu zu erfinden.

Der Nachteil? IFC-Dateien können dadurch abstrakt und ausführlich aussehen, da Attribute nicht immer dort definiert sind, wo man sie erwartet – sie können aus drei Ebenen höher in der Vererbungskette stammen.

Einheiten in IFC

Entitäten sind das Fundament von IFC. Jede Entität beschreibt eine bestimmte Art von Objekt oder Konzept und definiert, welche Attribute es haben kann (z. B. IfcWall, IfcDoor). 🧱

Wir können Entitäten in drei Hauptkategorien einteilen: physikalische Elemente, räumliche Struktur und Ressourcen.

Physische Elemente

Physische Elemente sind die wichtigsten Bestandteile des IFC-Schemas, da sie direkt den Bauelementen in BIM-Modellen zugeordnet werden können. Beispiele hierfür sind:

  • IfcWall / IfcWallStandardCase: Standard-Vertikalwände.
  • IfcDoor / IfcWindow: Öffnungen und Verschlüsse.
  • IfcBeam / IfcColumn / IfcSlab: Strukturelemente.
  • IfcStair / IfcRoof / IfcCovering: zusätzliche architektonische Elemente.

Geometrische Darstellungen

Eine der Schwierigkeiten bei IFC besteht darin, dass Geometrien auf verschiedene Arten definiert werden können:

  • Extrudierte Volumenkörper: am häufigsten, z. B. eine Wand, die durch ein vertikal extrudiertes 2D-Profil definiert ist.
  • Ausgefeilte Volumenkörper: Objekte, die durch Verschieben eines Profils entlang einer Linie definiert werden (z. B. Handläufe).
  • Grenzflächenrepräsentationen (BRep): exakte 3D-Flächen, in der Regel aus CAD oder Freiformgeometrien.
  • Abgebildete Geometrie: Wiederverwendung von Geometriedefinitionen, z. B. sich wiederholende identische Fenster.

Hier ist eine einfache Wand mit extrudierter Geometrie:

#100 = IFCCARTESIANPOINT((0.0,0.0));
#101 = IFCAXIS2PLACEMENT2D(#100, $);
#102 = IFCRECTANGLEPROFILEDEF(.AREA., 'Wall Profile', #101, 200.0, 3000.0);
#103 = IFCDIRECTION((0.0,0.0,1.0));
#104 = IFCAXIS2PLACEMENT3D(#100, #103, $);
#105 = IFCEXTRUDEDAREASOLID(#102, #104, #103, 3000.0);
#106 = IFCSHAPEREPRESENTATION(#context, 'Body', 'SweptSolid', (#105));
#107 = IFCPRODUCTDEFINITIONSHAPE($,$,(#106));
#108 = IFCWALLSTANDARDCASE('1Lm8y2FfH9R7Ts', 'Wall-001', $, $, #localplacement, #107, $);

Im obigen Beispiel wird eine Wand geometrisch durch ein extrudiertes rechteckiges Profil (200 mm × 3000 mm × 3000 mm) dargestellt:

  • #100–#101 definieren ein 2D-Koordinatensystem.
  • #102 definiert ein rechteckiges Wandprofil: 200 mm dick, 3000 mm lang.
  • #103–#104 definieren die Extrusionsrichtung (Z-Achse).
  • #105 erstellt den extrudierten Körper mit einer Höhe von 3000 mm.
  • #106–#107 verpacken den Körper in eine Formdarstellung.
  • #108 definiert die Wand-Entität unter Bezugnahme auf die Geometrie.

Platzierung im 3D-Raum

Die Geometrie sagt uns, wie ein Element aussieht, aber nicht, wo es im Gebäude hingehört. Dafür verwendet IFC eine Platzierungshierarchie.

Jedes Element hat eine lokale Platzierung, die definiert ist durch:

  • IfcLocalPlacement → definiert Position und Ausrichtung relativ zu einem anderen Objekt.
  • Dies verweist auf eine IfcAxis2Placement (2D oder 3D) mit einem Ursprungspunkt und Richtungsvektoren.

Platzierungen sind in der Regel verkettet:

  • Eine Wand wird relativ zu ihrem Stockwerk platziert.
  • Das Stockwerk wird relativ zum Gebäude platziert.
  • Das Gebäude wird relativ zum Standort platziert.
  • Der Standort wird in Weltkoordinaten platziert (z. B. reale Georeferenzierung mit IfcMapConversion).

Diese Hierarchie spiegelt die reale Konstruktion wider: Eine Wand schwebt nicht einfach im 3D-Raum, sondern hat einen definierten Standort innerhalb eines Stockwerks, innerhalb eines Gebäudes, auf einem Standort.

Hier ist ein Beispiel für eine Wand, die in einem Stockwerk platziert wurde:

#200 = IFCCARTESIANPOINT((0.0,0.0,0.0));
#201 = IFCAXIS2PLACEMENT3D(#200, $, $);
#202 = IFCLOCALPLACEMENT($, #201); -- Placement of Ground Floor storey
#210 = IFCCARTESIANPOINT((5000.0,2000.0,0.0));
#211 = IFCAXIS2PLACEMENT3D(#210, $, $);
#212 = IFCLOCALPLACEMENT(#202, #211); -- Placement of Wall relative to Storey
#220 = IFCBUILDINGSTOREY('3K9xGv4C5T$zQq', 'Ground Floor', $, $, #202, $, $);
#230 = IFCWALLSTANDARDCASE('1Lm8y2FfH9R7Ts', 'Wall-001', $, $, #212, #geometry, $);
  • #202 definiert die Positionierung des Stockwerks „Erdgeschoss“.
  • #212 definiert die Positionierung der Wand relativ zum Stockwerk.
  • #230 ist die Wand selbst, verbunden mit ihrer Positionierung und Geometrie.

Dieses Positionierungssystem ist ein Grund dafür, dass die IFC-Dateistruktur für digitale Bauabläufe zuverlässig ist – vom Entwurf bis zur Ausführung vor Ort.

Räumliche Struktur

Räumliche Entitäten bilden das hierarchische Rückgrat jeder IFC-Datei und sind ein wesentlicher Bestandteil des IFC-Schemas. Sie sind für die Organisation aller physischen Elemente zwingend erforderlich.

Die Hierarchie sieht in der Regel wie folgt aus:

  • IfcProject → der gesamte Projektkontext.
  • IfcSite → geografische Lage und Gelände.
  • IfcBuilding → das/die Gebäude auf dem Gelände.
  • IfcBuildingStorey → einzelne Stockwerke oder Ebenen.
  • IfcSpace → Funktionsbereiche (Räume, Zonen).

Jedes Element im Modell muss durch Beziehungen in dieser Hierarchie enthalten sein. Beispielsweise sind Wände und Decken in einem Stockwerk „enthalten”, das zu einem Gebäude gehört.

Ressourcen

Ressourcen in IFC sind Entitäten, die Hilfsinformationen definieren, die von mehreren Elementen verwendet werden.

Einige wichtige Beispiele:

  • IfcMaterial – definiert Materialien (z. B. Beton, Stahl, Holz).
  • IfcProfileDef – definiert Querschnitte (rechteckig, kreisförmig, I-Profil) für Träger und Stützen.
  • IfcTypeObject – wiederverwendbare Objekttypen (z. B. „Türtyp D01”), die dann mehrfach instanziiert werden können.
  • IfcActor / IfcOrganization – Ressourcen, die die Beteiligten eines Projekts beschreiben (Unternehmen, Personen).

Durch die Trennung von Ressourcen und physischen Elementen können IFC-Dateien Konsistenz und Wiederverwendbarkeit im gesamten IFC-Schema gewährleisten. Wenn sich die Materialdefinition ändert (z. B. Wechsel von Beton C30/37 zu C35/45), können alle Elemente, die dieses Material verwenden, entsprechend aktualisiert werden.

Beispiel-Walkthrough: Eine Wand im Kontext

Um die IFC-Dateistruktur besser zu verstehen, sehen wir uns ein einfaches, aber vollständiges Beispiel an: eine Wand, die im Kontext innerhalb eines Gebäudegeschosses positioniert ist. 🧱📐

#10 = IFCPROJECT('2C45vBrGbB_w_CB97snkya', $, 'Demo Project', $, $, $, $, (#50));
#20 = IFCSITE('0oHfLk3df5wPq6', 'Main Site', $, $, #100, $, $, $, .ELEMENT., $);
#30 = IFCBUILDING('1abCDeFgHiJkLmNo', 'Building A', $, $, #110, $, $, $, .ELEMENT., $);
#40 = IFCBUILDINGSTOREY('3K9xGv4C5T$zQq', 'Ground Floor', $, $, #120, $, $, $, .ELEMENT., $);
#100 = IFCLOCALPLACEMENT($, #200); -- Placement of site
#110 = IFCLOCALPLACEMENT(#100, #210); -- Placement of building relative to site
#120 = IFCLOCALPLACEMENT(#110, #220); -- Placement of storey relative to building
#130 = IFCLOCALPLACEMENT(#120, #230); -- Placement of wall relative to storey
#200 = IFCAXIS2PLACEMENT3D(#500, $, $);
#210 = IFCAXIS2PLACEMENT3D(#501, $, $);
#220 = IFCAXIS2PLACEMENT3D(#502, $, $);
#230 = IFCAXIS2PLACEMENT3D(#503, $, $);
#500 = IFCCARTESIANPOINT((0.0,0.0,0.0));
#501 = IFCCARTESIANPOINT((0.0,0.0,0.0));
#502 = IFCCARTESIANPOINT((0.0,0.0,0.0));
#503 = IFCCARTESIANPOINT((5000.0,2000.0,0.0)); -- Wall offset 5 m X, 2 m Y
#600 = IFCCARTESIANPOINT((0.0,0.0));
#601 = IFCAXIS2PLACEMENT2D(#600, $);
#602 = IFCRECTANGLEPROFILEDEF(.AREA., 'Wall Profile', #601, 200.0, 3000.0);
#603 = IFCDIRECTION((0.0,0.0,1.0));
#604 = IFCAXIS2PLACEMENT3D(#500, #603, $);
#605 = IFCEXTRUDEDAREASOLID(#602, #604, #603, 3000.0);
#700 = IFCSHAPEREPRESENTATION(#50, 'Body', 'SweptSolid', (#605));
#710 = IFCPRODUCTDEFINITIONSHAPE($,$,(#700));
#800 = IFCWALLSTANDARDCASE('1Lm8y2FfH9R7Ts', 'Wall-001', $, $, #130, #710, $);
#900 = IFCRELAGGREGATES('rel-1', $, $, #10, (#20)); -- Project contains site
#901 = IFCRELAGGREGATES('rel-2', $, $, #20, (#30)); -- Site contains building
#902 = IFCRELAGGREGATES('rel-3', $, $, #30, (#40)); -- Building contains storey
#903 = IFCRELCONTAINEDINSPATIALSTRUCTURE('rel-4', $, $, (#800), #40); -- Storey contains wall
  1. IfcProject definiert das Gesamtprojekt.
  2. IfcSite definiert den geografischen Standort.
  3. IfcBuilding ist mit dem Standort verknüpft.
  4. IfcBuildingStorey definiert das „Erdgeschoss”.
  5. IfcWallStandardCase repräsentiert die Wand.
  6. Die Wand ist über IfcRelContainedInSpatialStructure mit dem Stockwerk verknüpft.
  7. Die Wand hat eine Materialdefinition über IfcRelAssociatesMaterial.
  8. Die Wand hat eine durch eine Extrusion definierte Geometrie.

wall in context
Abbildung 3: Übersichtsdiagramm, das zeigt, wie eine Wand in den Kontext einer IFC-Datei passt (Quelle: BIMcert Handbook, Edition 2024)

Diese Kette von Entitäten und Referenzen gibt der Wand ihre Bedeutung. Es handelt sich nicht nur um einen 3D-Block, sondern um eine bestimmte Wand in einem bestimmten Stockwerk mit einem definierten Material, das die Software konsistent interpretieren kann.

Warum Entitäten wichtig sind

Entitäten können zwar abstrakt erscheinen, aber sie sind es, die IFC von einem 3D-Modell in einem CAD-Tool unterscheiden. IFC besteht nicht nur aus Formen – es handelt sich um strukturierte Informationen mit Identität, Hierarchie und Bedeutung: ⚙️

  • Identität: Jedes Element hat eine GUID.
  • Hierarchie: Jedes Element gehört irgendwo in die räumliche Struktur.
  • Konsistenz: Ressourcen wie Materialien und Typen können wiederverwendet werden.
  • Flexibilität: Geometrien können auf verschiedene Weise dargestellt werden, sind aber an dieselbe Entitätsdefinition gebunden.

Aus diesem Grund ist IFC so ausführlich und manchmal schwer zu lesen – aber auch deshalb ist es so leistungsstark.

Fazit (Teil 2)

Das IFC-Schema ist mehr als nur ein Dateiformat – es ist die strukturierte Grundlage für die Interoperabilität von openBIM.

In diesem Artikel haben wir die IFC-Datei geöffnet und uns ihre Gesamtstruktur (Header und Daten) sowie die darin enthaltenen Entitäten angesehen: physikalische Elemente, räumliche Hierarchie und Ressourcen. ✅📌

Im nächsten Artikel (Teil 3) werden wir uns mit den Eigenschaften und Beziehungen befassen, die Entitäten bereichern und miteinander verbinden. Hier zeigt IFC seine wahre Stärke: Es verwandelt unverbundene Objekte in ein integriertes digitales Modell.

Wenn Sie Fragen haben, zögern Sie nicht, unten einen Kommentar zu hinterlassen!


Tags

#IFC#BIM

Teilen


Ähnliche Beiträge

Anwendung von openBIM in der Praxis: Von IFC-Workflows zur digitalen Zusammenarbeit
October 20, 2025
4 min

Lassen Sie uns in Kontakt bleiben

Folgen Sie uns und informieren Sie sich über unsere Produkte, Blogartikel und Sonderangebote.