| Thema |
|---|
| Tutorial Natives-IFC |
| Niveau |
| Fortgeschrittene/Könner |
| Bearbeitungszeit |
| 60 Minuten |
| Autoren |
| yorik |
| FreeCAD-Version |
| 1.0 |
| Beispieldateien |
| Siehe auch |
| None |
FreeCAD, eine freie und quelloffene (FOSS) 3D-CAD-Modellierungsplattform, die seit vielen Jahren mit dem Arbeitsbereich Arch BIM-Werkzeuge anbietet. Ab Version 1.0, die im November 2024 veröffentlicht wurde, wurden die Arch-Werkzeuge erweitert und in den Arbeitsbereich umbenannt sowie um ein neues natives IFC-System erweitert. Dieses Tutorial führt durch die verschiedenen Konzepte, die in nativem IFC verwendet werden, und zeigt anhand eines Beispielmodells, wie diese angewendet werden können.
Man kann nicht über natives IFC sprechen, ohne zuvor etwas über die Industry Foundation Classes, besser bekannt als IFC, zu sagen. IFC ist ein Dateiformat, aber auch und vor allem ein Datenformat. Es handelt sich um einen Standard (eine registrierte ISO-Norm (19650)), der festlegt, wie die verschiedenen Komponenten eines Gebäudes digital dargestellt werden sollen, welche Eigenschaften jede von ihnen haben soll, welche Beziehungen sie zu anderen Elementen haben kann oder haben soll usw. Kurz gesagt, es ist eine Anleitung zur digitalen Beschreibung eines Gebäudes.
Das IFC-Format hat viele interessante Eigenschaften. Zunächst einmal ist es offen und öffentlich (es wird wie das HTML-Format von einem Konsortium gepflegt), es leitet sich vom STEP-Format ab, einem bekannten, äußerst stabilen 3D-Geometrieformat, das in der Maschinenbauindustrie weit verbreitet ist, es ist für Menschen lesbar (es kann mit einem Texteditor geöffnet werden) und die Daten können nicht nur in einem, sondern in mehreren Dateiformaten geschrieben und sogar als Datenbank verwendet werden.
Diese Eigenschaften machen das Format dank seines STEP-(Ur-)Vaters geometrisch zuverlässig, aber auch zu einer sehr klugen Wahl, um die Daten anzuvertrauen, denn auch in 50 Jahren wird man noch in der Lage sein, IFC-Dateien zu öffnen und die Daten wiederherzustellen, selbst wenn die BIM-Anwendung nicht mehr existiert. IFC-Dateien werden auch zunehmend zum bevorzugten Dateiformat, das von Behörden bei der Erteilung von Baugenehmigungen verlangt wird.
Bislang wurde das IFC-Format jedoch hauptsächlich als Exportformat verwendet. Designer speicherten ihre Projekte weiterhin im nativen Dateiformat ihrer BIM-Anwendung und exportierten IFC-Dateien bei Bedarf. Das ist gut genug, um die Arbeit zu präsentieren, aber ziemlich schlecht, wenn andere Personen ebenfalls mit diesem Modell arbeiten müssen, da es zu erheblichen Datenverlusten kommt und die Daten bei jedem Export vollständig neu geschrieben werden, sodass die Verwendung einer neuen Version des Modells für andere Personen oft Kopfzerbrechen bereitet.
Mit nativem IFC wollen wir das ändern.
Die Idee stammt aus einem Artikel von Bruno Postle, in dem beschrieben wird, wie das IFC-Format nicht nur als Exportformat, sondern auch als Hauptprojektdatei anstelle der (in der Regel proprietären) Formate verwendet werden könnte, die von BIM-Anwendungen verwendet werden. Um dies zu erreichen, ist es unerlässlich, dass BIM-Anwendungen das IFC-Format nativ verarbeiten, d. h. anstatt ihre eigenen Inhalte jedes Mal aus ihrem internen Format in IFC zu konvertieren, sollten sie IFC-Daten direkt bearbeiten.
Bild aus Bruno Postles Artikel
Konkret bedeutet dies, dass man in FreeCAD IFC-Modelle öffnen oder erstellen kann, sie untersuchen, ihren Inhalt ändern können und jede Änderung klar registriert, auffindbar, identifizierbar und rückgängig zu machen ist. Änderungen, die andere während der Arbeit vorgenommen haben, können zusammengeführt werden, selbst wenn diese mit anderen (nativen IFC-)Anwendungen arbeiten.
Das Bild oben zeigt eine kompakte und begrenzte Änderung an einer Datei beim Hinzufügen einer neuen Wand.
Die Arbeit an nativem IFC in FreeCAD ist noch nicht abgeschlossen, aber es ist bereits vollständig für 'echte Arbeit' einsetzbar. Wenn man bereits mit den BIM-Werkzeugen von FreeCAD vertraut ist, gibt es nur sehr wenig Neues zu lernen, da der Großteil des Arbeitsablaufs dieselben Werkzeuge verwendet.
Die Entscheidung liegt bei Ihnen. IFC ist ein strenges Format, bei dem jedes Element (eine Wand, ein Stockwerk, ein Fenster) sehr strenge Attribute und Merkmale hat, die nicht geändert werden können. Diese Standardisierung gewährleistet seine Kompatibilität und Zuverlässigkeit. Das bedeutet auch, dass man mit IFC nicht "machen kann, was man will". Man muss sich an die Vorgaben des Formats halten. Das ist bei der Zusammenarbeit mit anderen sehr willkommen und hervorragend, denn genau das erwarten wir von einem "Standard". Es gibt Garantien dafür, was man beim Öffnen einer IFC-Datei vorfindet, aber dies kann natürlich auch die Kreativität einschränken.
Eines der Grundprinzipien des Arbeitsbereichs BIM in FreeCAD ist es, der Kreativität keine Grenzen zu setzen. Alles ist möglich, jede geometrische Form ist möglich, jede parametrische Beziehung ist möglich. Wenn man mit dem Arbeitsbereichs BIM ohne natives IFC arbeitet, steht diese Freiheit zur Verfügung. Wenn man natives IFC aktiviert, wird diese Freiheit eingeschränkt. Ist das gut oder schlecht für das Projekt? Das hängt davon ab.
Ich persönlich würde empfehlen, ohne IFC zu arbeiten, wenn man alleine arbeitet und noch Konzepte entwickelt, damit man von maximaler Freiheit profitiert. Wenn sich das Projekt stabilisiert hat und andere Personen hinzukommen, könnte dies der richtige Zeitpunkt sein, um auf natives IFC umzusteigen, um von der Standardisierung zu profitieren. Daran denken, dass man jederzeit wechseln oder sogar ein nicht-natives IFC-Projekt jederzeit nach IFC exportieren kann. Es ist selten notwendig, sofort mit nativem IFC zu beginnen.
Wenn man noch nie mit IFC gearbeitet habt, sollte man sich zunächst einige Beispielmodelle genauer ansehen. Da es sich um ein offenes Format handelt, sind Beispielmodelle glücklicherweise sehr leicht im Internet zu finden. Eine einfache Suche nach "Beispiel-IFC-Modellen" wird weiterhelfen. Ich würde zum Beispiel dieses kanonische Beispielhaus empfehlen, das vom IFC-Konsortium bereitgestellt wird, aber auch mehrere andere Websiten haben Sammlungen von Beispieldateien zusammengestellt, wie zum Beispiel free-ifc-project-samples-for-architects-and-bim-enthusists/ dieses auf BIMPlot.
Es gibt viele Anwendungen zum Anzeigen von IFC-Dateien. Einige sind kostenlos, andere sogar frei und quelloffen (FOSS). Unter den proprietären, aber kostenlosen IFC-Betrachtern sind BIMVision oder der ODA IFC Viewer (läuft unter Win/Mac/Linux) empfehlenswert. Unter den FOSS-Betrachtern verwende ich häufig den einfachen IFC++, der in den Debian/Ubuntu-Repositorys enthalten ist. Sowohl FreeCAD als auch Bonsai sind ebenfalls gute und schnelle IFC-Betrachter.
Die Möglichkeit, IFC-Dateien in einer anderen Anwendung zu öffnen und anzuzeigen, ist bei der Arbeit mit IFC-Dateien von grundlegender Bedeutung, da man so überprüfen kann, ob die Dateien, die an den Kollegen oder Kunden gesendet werden, alle erforderlichen Informationen enthalten.
Das IFC-Format ist komplex, und BIM-Anwendungen, selbst die teuersten kommerziellen, sind bekanntermaßen schlecht oder sehr schlecht im Umgang mit IFC-Dateien. Daher können Erfahrungen variieren: Die IFC-Dateien, auf die ma stößt, können von sehr schlechter Qualität und voller Datenmüll sein, manchmal sogar so sehr, dass sie kaum noch zu verwenden sind. Dies wurde oft von Befürwortern proprietärer BIM-Anwendungen genutzt, um das IFC-Format zu diskreditieren und seine Ineffizienz zu demonstrieren.
Es ist jedoch nicht schwer, hochwertige IFC-Modelle zu erstellen. Man benötigt jedoch eine Anwendung, die das Format ernst nimmt und dem Benutzer die Kontrolle darüber lässt, was und wie exportiert wird.
Es gibt nur wenige Dinge, die man wissen sollte:
Wie vom STEP-Format übernommen, ist eine IFC-Datei eine Textdatei, in der jede Zeile ein Element darstellt und mit einer ID-Nummer beginnt. Beispiel:
#66=IFCWALL('3JmWkr',$,'MyWall',$,$,(#71),$,$,$,.SOLIDWALL.);
Die obige Zeile definiert ein Element der Klasse IfcWall mit der ID 66. Die Angaben in Klammern sind dessen Attribute. Mehr zu Attributen weiter unten.
Der wichtige Teil ist die Klasse (wie in 'Industry Foundation Classes'). Jedes Element hat eine Klasse, die den Typ des Elements definiert: eine Wand, ein Fenster, aber auch ein Boden, ein Raum oder sogar eine Linie, ein Kreis, ein Punkt im 3D-Raum oder sogar Konzepte wie ein Zeitpunkt oder eine zu erledigende Aufgabe. Die nützlichsten IFC-Klassen für Bauelemente leiten sich von der Klasse IfcBuildingElement ab.
IFC-Modelle folgen in der Regel einer strengen Struktur: In jeder Datei sollte es genau ein IfcProject geben. Das IfcProject ist die Wurzel aller Objekte innerhalb eines IFC-Modells. Unter dem IfcProject gibt es in der Regel mindestens ein IfcSite, das ein oder mehrere IfcBuildings enthalten kann, die wiederum in IfcBuildingStoreys unterteilt sind. Diese können weiter in IfcZones und IfcSpaces unterteilt werden.
Bauelemente wie IfcWalls oder IfcWindows stehen dann in einer Beziehung zu einer der oben genannten Strukturen, in der Regel zu einem IfcBuildingStorey, können aber auch mit einem anderen Bauelement in Beziehung stehen, sodass ein Element aus mehreren anderen Elementen bestehen kann. Diese Beziehungen werden in den IFC-Dateien immer explizit angegeben, sie sind niemals automatisch oder implizit.
IFC-Elemente, seien es Bauelemente wie Wände oder Fenster, Strukturelemente wie Standorte und Stockwerke oder eine der vielen anderen Elementklassen, die das IFC-Format bietet, verfügen alle über einen vordefinierten Satz von Attributen. Attribute sind beispielsweise Name, Position im Raum oder eindeutige ID-Nummer, die im Format definiert sind. Alle Entitäten derselben Klasse müssen dieselben Attribute aufweisen. Elemente können auch Eigenschaften haben. Im Gegensatz zu Attributen werden Eigenschaften nicht durch das IFC-Format definiert, sondern können vom Benutzer (oder der BIM-Anwendung) frei definiert werden. Betrachtet man sie als benutzerdefinierte Attribute. Das IFC-Format schlägt auch Standard-Eigenschaftssätze für viele Elementklassen vor. Für Balken gibt es beispielsweise einen Satz namens BimCommon, der eine Reihe von Eigenschaften enthält, die für Balken typisch sind.
Die Geometrie von IFC-Elementen wird in separaten Elementen definiert, die an jede Wand, jedes Fenster, jede Tür usw. angehängt sind. Sie kann auch von mehreren Elementen gemeinsam genutzt werden. Es gibt sehr viele Möglichkeiten, Geometrie zu definieren, und genau hier beginnen viele Probleme. Bauelemente können sowohl eine 3D-Geometrie als auch eine 2D-Geometrie (z. B. eine Draufsicht oder Grundfläche) und beispielsweise auch eine lineare Geometrie (die für Stabilitätsstudien nützlich ist) haben. Eine gute Geometrie ist in der Regel klar definiert und sinnvoll konstruiert. Die Geometrie einer einfachen Wand würde beispielsweise durch ein Rechteck auf dem Boden mit Breite und Länge definiert, das dann vertikal um eine bestimmte Höhe extrudiert wird, um die Wandform zu erzeugen. Dies sind 3 Zeilen in der IFC-Datei: das Rechteck, die Extrusion und die Position des endgültigen Objekts. Es ist für andere BIM-Anwendungen erkennbar, und die Parameter können geändert werden, beispielsweise die Breite des Basisrechtecks.
In einigen IFC-Dateien, die man erhält, können diese logischen Informationen vollständig verloren gehen, und die Wandgeometrie wird als eine Reihe von dreieckigen Facetten definiert. Dies ist häufig bei Dateien der Fall, die aus einem anderen Format in IFC konvertiert wurden. Es kann zu weiteren Problemen wie unvollständigen Beziehungen usw. kommen. Es genügt zu sagen, dass das IFC-Format eine Vielzahl von Möglichkeiten zur Definition von Geometrien bietet, von den 'einfachsten' (dreieckige Facetten) bis zu den 'intelligentesten' (NURBS-basierte Objekte), wobei der Schwerpunkt auf klar definierten Volumenkörpern (wie unserem extrudierten Rechteck) liegt. Glücklicherweise ist dies die Spezialität von FreeCAD.
In FreeCAD werden IFC-Dateien wie alle anderen Dateien über das Menü Datei → Öffnen geöffnet. Standardmäßig werden IFC-Dateien so geladen, dass nur ein Element in der Baumansicht angezeigt wird. Dies ist die schnellste Importmethode, mit der ein 100-MB-Modell in der Regel innerhalb von Sekunden importiert werden kann.
Die Einstellungen für den nativen IFC-Import können unter Bearbeiten → Einstellungen → BIM → Natives IFC geändert werden. Beispielsweise kann festgelegt werden, dass beim Import die gesamte Gebäudestruktur angezeigt wird oder dass man jedes Mal gefragt wird.
Um ein neues IFC-Modell zu erstellen, erstellt man zunächst ein neues IFC-Projekt im Menü 3D/BIM.
Die Konvertierung eines Nicht-IFC-FreeCAD-Modells in natives IFC kann einfach durch Exportieren nach IFC erfolgen, entweder über das Menü Datei → Exportieren oder über die Schaltfläche mit dem Schloss (mehr dazu weiter unten).
Standardmäßig wird beim Öffnen von IFC-Dateien nur das erste, äußere Element der Datei angezeigt. In der Regel ist dies IfcSite. Um den Inhalt dieses Elements und der nachfolgenden Elemente anzuzeigen, muss es erweitert werden. Das Erweitern erfolgt durch einen Doppelklick auf das Element in der Baumansicht oder alternativ über die Menüoption „Werkzeuge → IFC-erweitern”. Dieser Befehl kann angepasst und mit einer Tastenkombination belegt werden, sodass mit den Pfeiltasten in der Baumansicht navigiert werden und das Modell bei Bedarf vollständig über die Tastatur erweitert werden kann.
Durch Doppelklicken auf ein Element in der Baumansicht werden beim ersten Mal dessen untergeordnete Elemente angezeigt, beim zweiten Mal oder wenn keine weiteren untergeordneten Elemente mehr vorhanden sind, werden dessen vollständige Eigenschaften, Material und Form geladen.
Dadurch kann ein Modell so schnell wie möglich geladen und Elemente nach Bedarf erweitert/definiert werden. Dieses Verhalten kann unter Bearbeiten → Einstellungen → BIM → Natives IFC geändert werden.
Wenn ein IFC-Modell in FreeCAD geladen wird, kann es gesperrt oder entsperrt werden. Standardmäßig werden IFC-Dateien beim Öffnen gesperrt, während sie beim Importieren (über Datei → Importieren) entsperrt bleiben.
Das Sperren oder Entsperren erfolgt ganz einfach über die Sperrtaste in der FreeCAD-Statusleiste:
Der gesperrte Modus bedeutet vorsichtiger Modus: Wenn man eine Datei von jemand anderem öffnet, möchte man nichts beschädigen, sondern die Datei erkunden und vielleicht etwas korrigieren oder ein paar lokale Änderungen vornehmen. Man möchte sicherstellen, dass die von einem vorgenommenen Änderungen genau lokalisiert und nachvollziehbar sind.
In allen anderen Fällen gibt es keinen wirklichen Grund oder Vorteil, das Modell zu sperren. Man kann sogar das Standardverhalten so ändern, dass IFC-Modelle ungesperrt geöffnet werden, wenn man dies bevorzugt. Dazu auf Bearbeiten → Einstellungen → BIM → Natives IFC gehen.
Wenn man zu einem IFC-Modell wechselt, möchte man häufig überprüfen, was sich seit dem letzten Speichern in den IFC-Daten geändert hat. Dies geschieht über Werkzeuge → IFC Diff. Die Änderungen werden im Diff-Format dargestellt, wobei die Abschnitte rot und grün hervorgehoben sind. Dieses Format ist auch für Computersysteme wie Git verständlich, die große Änderungssätze verfolgen können und somit die IFC-Dateien unter solchen Systemen zu vollwertigen Bestandteilen machen.
Wie oben zu sehen ist, verwenden die meisten IFC-Dateien eine Standardstruktur Standort → Gebäude → Stockwerk. Diese Struktur ist so verbreitet, dass sie oft als obligatorisch angesehen wird, obwohl sie im IFC-Standard nicht ausdrücklich festgelegt ist. Man könnte durchaus alle Elemente direkt mit dem IfcProject verknüpfen. Da Standardisierung jedoch nur funktioniert, wenn sich alle für dasselbe System entscheiden, ist es ratsam, mindestens einen Standort, ein Gebäude und ein Stockwerk (in FreeCAD als Level bezeichnet) im Modell zu haben.
In FreeCAD kann man mit Hilfe von Gruppen die Objekte auf einer Ebene weiter organisieren. Beispielsweise könnte man im Erdgeschoss eine Gruppe 'Wände' erstellen, um alle Wände hinzuzufügen, eine Gruppe 'Zimmermannsarbeiten', um Holzbalken hinzuzufügen usw. Gruppen werden von IFC unterstützt, jedoch ist es nicht üblich, Gruppen innerhalb eines Gebäudestrukturelements wie einem Stockwerk zu platzieren. Aus diesem Grund werden Gruppen standardmäßig als IfcBuildingElementAssemblies statt als IfcGroups geschrieben. Bei FreeCAD sind wir jedoch der Meinung, dass ein solches Verhalten nützlich ist und erlaubt sein sollte. Daher gibt es eine Einstellungsoption, um dies zu ermöglichen. Die meisten BIM-Anwendungen öffnen problemlos Dateien mit Gruppen innerhalb anderer Elemente. Diese Einstellungsoption soll dazu beitragen, unsere Vision zu verbreiten und möglicherweise andere davon zu überzeugen.
Also, legen wir los und beginnen wir damit, unser Modell zu zerlegen...
Sobald wir ein Modell geöffnet haben, können wir mit der Bearbeitung seines Inhalts beginnen. Es ist zu beachten, dass es zum Zeitpunkt der Erstellung dieses Tutorials noch keinen grafischen Geometrie-Editor für IFC-Elemente gibt (dies ist jedoch in Planung und sollte bald verfügbar sein). Die Geometrie von Elementen kann durch Bearbeiten ihrer geometrischen Eigenschaften geändert werden.
Wenn IFC-Elemente aus der Datei geladen werden, werden ihre Attribute in der Eigenschaften-Ansicht unter der Gruppe IFC angezeigt. Dort können Dinge wie Name, Beschreibung oder sogar die Klasse der Elemente geändert werden.
Wenn man auf ein Element in der Baumansicht doppelklickt, werden zunächst die untergeordneten Elemente dieses Elements angezeigt. Wenn man ein zweites Mal darauf doppelklickt, werden zusätzliche Daten wie Eigenschaftssätze, benutzerdefinierte Eigenschaften, Materialien und Formdaten geladen. Außerdem wird ein Satz von Geometrieeigenschaften erstellt, mit denen man die Geometrie dieses Elements ändern kann. Diese Geometrieeigenschaften bilden auch die Grundlage für den zukünftigen grafischen Editor.
Alle diese zusätzlichen Eigenschaften können direkt geändert werden, und neue benutzerdefinierte Eigenschaften können über die beiden Schaltflächen unter dem Eigenschafteneditor hinzugefügt werden.
Die Position jedes Elements kann geändert werden, indem dessen Placement-Eigenschaft geändert wird (oder die Werkzeuge Bewegen oder Drehen genutzt werden).
Um die Geometrie, beispielsweise die Breite einer Wand, zu ändern, muss zunächst zweimal doppelgeklickt werden, um die Geometrieeigenschaften anzuzeigen. Wenn diese Wand auf die übliche Weise als extrudiertes Rechteck konstruiert wurde, werden unter diesen Eigenschaften die Breite und Länge des Rechtecks sowie die Extrusionshöhe angezeigt.
Natürlich hängt alles davon ab, wie die Wand in der IFC-Datei definiert wurde. Möglicherweise handelt es sich nicht um ein extrudiertes Rechteck. In diesem Fall sind möglicherweise weniger oder andere Geometrieeigenschaften verfügbar.
Wie man neue Objekte hinzufügt, hängt vom aktuellen Modus ab: gesperrt oder entsperrt. Im gesperrten Modus wird alles, was man zeichnet, z. B. eine Wand oder eine Säule, automatisch in der IFC-Datei selbst erstellt. Möglicherweise muss man es nach der Erstellung unter die richtige Ebene oder das richtige Gebäude verschieben. Dazu zieht man die neue Wand einfach in der Baumansicht unter die richtige Ebene.
Im entsperrten Modus ist die neue Wand noch kein IFC-Element. Man muss die Wand nach der Erstellung immer selbst an die richtige Stelle ziehen.
In IFC kann jedes Element durch einen [1] definiert werden. Ein Typ (z. B. IfcWallType, IfcWindowType) ist ein IFC-Element, das gemeinsame Merkmale, Eigenschaften oder sogar Geometrien enthalten kann, die automatisch von allen Objekten dieses Typs verwendet werden. In einigen BIM-Anwendungen wird dies manchmal als Familien bezeichnet.
In FreeCAD haben wir dies in Nicht-IFC-BIM-Projekten bisher mithilfe von Klonen durchgeführt. In nativem IFC werden Typen vollständig unterstützt. Um einen Typ zu definieren, erstellt man am einfachsten ein Objekt der gewünschten Klasse, beispielsweise eine Wand, klickt dann mit der rechten Maustaste in der Baumansicht darauf und wählt IFC → In Typ konvertieren.
Wenn ein Objekt in einen Typ konvertiert wird, wird es in eine spezielle Gruppe Typen unter dem Projekt verschoben. Es kann dann von jeder anderen Wand im Projekt referenziert werden.
Das obige Bild zeigt unsere Wand, die jetzt den Typ 'My Wall Type' verwendet.
In einem BIM-Projekt müssen häufig herunterladbare Inhalte hinzugefügt werden, wie beispielsweise Möbelstücke, Geräte oder Elemente wie vorgefertigte Fensterrahmen. Diese Elemente werden in der Regel von den Websites der Hersteller oder von BIM-Bibliotheks-Websites heruntergeladen.
In all diesen Fällen sind die Qualität und das Format der Elemente, die man herunterlädt, von Bedeutung. Man sollte (in dieser Reihenfolge) darauf achten, ein von FreeCAD gut unterstütztes Dateiformat zu verwenden, um Modelle mit guter geometrischer Qualität und ausreichenden Metadaten (Farbe, Materialien, Herstellerinformationen usw.) zu erhalten. Einige gute Ideen sind:
Eine FreeCAD-Datei, die ein natives IFC-Projekt enthält, egal ob gesperrt oder entsperrt, verfügt immer über eine angehängte IFC-Datei, in der die IFC-Daten gespeichert sind. Wenn man ein neues Projekt erstellt und die Datei noch nicht gespeichert hat, befinden sich die IFC-Inhalte im Speicher. Sobald man die Datei speichert, wird eine zugehörige IFC-Datei erstellt, die fortan an die FreeCAD-Datei angehängt ist.
Im gesperrten Modus enthält das FreeCAD-Dokument in seiner Eigenschaft IFC-Dateipfad den Pfad zur zugehörigen IFC-Datei. Da alles, was in FreeCAD geschieht, direkt in der IFC-Datei geschieht, wird die FreeCAD-Datei nicht mehr benötigt. Die Einträge 'Speichern' und 'Speichern unter' im FreeCAD-Dateimenü werden durch 'IFC-Datei speichern' und 'IFC-Datei speichern unter' ersetzt. Wenn man die Datei speichert, wird die IFC-Datei gespeichert, und es wird keine FreeCAD-Datei geschrieben. Man arbeitet also buchstäblich nur mit der IFC-Datei.
Im entsperrten Modus existiert im FreeCAD-Dokument ein Projekt-Objekt, das auch über eine IFC-Dateipfad-Eigenschaft verfügt, die auf die zugehörige IFC-Datei verweist. Wenn man die Datei an andere Personen weitergibt, muss man ihnen auch die IFC-Datei zur Verfügung stellen. Wenn man die IFC-Datei verschiebt, muss die IFC-Dateipfad-Eigenschaft des Projekt-Objekts entsprechend angepasst werden.
Es ist jedoch möglich, die FreeCAD-Datei ohne die IFC-Datei zu verteilen: Man setzt die Eigenschaft Shape Mode aller Objekte auf 'Shape'. Dadurch behält die FreeCAD-Datei die Form aller Objekte bei und lässt sich auch dann korrekt öffnen, wenn die IFC-Datei nicht vorhanden ist. Die Objekte sind in diesem Fall jedoch nicht editierbar.
2D-Ansichten, die auf TechDraw-Blättern platziert werden sollen, können weiterhin auf die gleiche Weise wie zuvor erstellt werden: Hinzufügen von Schnittebenen, Erstellen von 2D-Ansichten, Füllen dieser mit Anmerkungen und anschließendes Platzieren auf Blättern. Der Vorgang ist bei Nicht-IFC-BIM-Modellen genau derselbe wie bei nativen IFC-Modellen.
Standardmäßig werden native IFC-Objekte jedoch ohne ihre Form geladen (ihre Eigenschaft Shape Mode ist auf Coin gesetzt). Dies spart beim Laden viel Zeit. Die zum Erzeugen von 2D-Ansichten verwendeten Schnittalgorithmen benötigen jedoch die vollständige Form. Wenn man also native IFC-Objekte in eine Schnittebene einfügt, wird der Shape Mode automatisch auf 'Shape' gesetzt.
Das endgültige Blatt selbst kann derzeit zwar nicht in der IFC-Datei gespeichert werden, die 2D-Ansichten, Schnittebenen und deren Anmerkungen jedoch schon. Wenn man eine Schnittebene zu einem Projekt hinzufügt (durch Ziehen und Ablegen im entsperrten Modus oder automatisch im gesperrten Modus), wird automatisch eine Gruppe unter dem Projekt erstellt. Diese Gruppe stellt eine 2D-Ansicht dar (ihre Eigenschaft Objekttyp ist auf 'ZEICHNUNG' gesetzt), und alles, was man zu dieser Gruppe hinzufügt, wird Teil dieser 2D-Ansicht.
Derzeit werden Blätter nicht in der IFC-Datei gespeichert. Bei gesperrten Dateien müssen die Blätter daher neu erstellt werden.
Listen und alle Arten von Abfragen können für native IFC-Projekte genauso wie für Nicht-IFC-Projekte mit dem Listen-Werkzeug erstellt werden. Listen können auch zu einem nativen IFC-Projekt hinzugefügt werden. In diesem Fall wird die zugehörige Tabelle nicht in der IFC-Datei gespeichert und muss beim Öffnen der Datei neu erstellt werden.
IfcOpenShell ist die Softwarekomponente, die in allen IFC-bezogenen Vorgängen in FreeCAD verwendet wird. Der Arbeitsbereich BIM kann auch ohne sie funktionieren, aber in diesem Fall sind alle IFC-Vorgänge deaktiviert. IfcOpenShell ist für die Erstellung und Änderung von IFC-Dateien und IFC-Objekten sowie für die Erzeugung von BREP-Geometrien für die FreeCAD-Objekte verantwortlich, die IFC-Elemente darstellen. FreeCAD verwendet IfcOpenShell derzeit nur über seine Python-Schnittstelle.
IfcOpenShell bietet eine umfassende Dokumentation, in der die Verwendung ausführlich erklärt wird.
Man kann auch sowohl IfcOpenShell als auch ifc_tools verwenden, um IFC-Daten direkt zu bearbeiten. Nachfolgend findet man ein kurzes Beispiel dafür, wie man mit IfcOpenShell eine IFC-Datei öffnet und deren Inhalt analysieren kann:
import ifcopenshell
my_ifc_file = ifcopenshell.open("/path/to/some/file.ifc")
walls = my_ifc_file.by_type("IfcWall") # get a list of all IfcWalls
some_specific_object = my_ifc_file[66] # get an object by its ID
some_specific_object = my_ifc_file.by_id(66) # alternative way
print(some_specific_object.Name) # you can access attributes that way
IfcOpenShell selbst verfügt (noch) über keine spezifischen FreeCAD-Funktionen, sodass man es im Grunde genommen für Nicht-FreeCAD-Operationen an Objekten verwenden würde, z. B. zum Abrufen oder Ändern von Objekten und Attributen, zum Ändern von Attributen oder sogar zum direkten Hinzufügen von Objekten. Weitere Informationen findet man in der IfcOpenShell Python-Dokumentation.
In FreeCAD wird beim Laden einer IFC-Datei ein IfcOpenShell-Dateiobjekt erstellt und an das Projekt angehängt (das Projektobjekt für entsperrte Dateien oder das FreeCAD-Dokument selbst für gesperrte Projekte). Alles, was man in FreeCAD tut, manipuliert tatsächlich dieses Objekt. Man kann ganz einfach auf das IfcOpenShell-Dateiobjekt eines nativen FreeCAD-IFC-Projekts zugreifen und es manipulieren. Im gesperrten Modus geht man beispielsweise wie folgt vor:
import FreeCAD
my_doc = FreeCAD.loadFile("/path/to/some/file.ifc")
my_ifc_file = my_doc.Proxy.ifcfile
Im entsperrten Modus verfügt jedes Projekt-Objekt auch über ein Proxy.ifcfile-Mitglied.
Das Modul ifc_tools ist das wichtigste Werkzeug für die Verwendung von IfcOpenShell im BIM-Modul von FreeCAD. Es enthält viele Werkzeuge und Funktionen, um alles zu tun, was FreeCAD mit IFC-Dateien und -Objekten tun muss, wie z. B. neue Dateien erstellen, Dateien öffnen, Elemente erstellen, Attribute ändern usw.
Bei der Arbeit mit FreeCAD-Objekten ist die Verwendung von ifc_tools wesentlich komfortabler, da es alle Beziehungen zwischen dem FreeCAD-Objekt und dem IFC-Objekt, das es darstellt, für den Benutzer verwaltet. Beispiel:
from nativeifc import ifc_tools
selection = FreeCADGui.Selection.getSelection()
my_obj = selection[0] # just get the first selected object
project = ifc_tools.get_project(my_obj)
ifcfile = ifc_tools.get_ifcfile(project)
ifc_elem = ifc_tools.get_ifc_element(my_obj)
my_obj.LongName = "Changed long name" # this updates the IFC data too
print(ifc_elem.LongName)
ifc_tools bietet noch viel mehr, beispielsweise Dienstprogramme zum Erstellen und Ändern von FreeCAD-Objekten (und den zugrunde liegenden IFC-Elementen). Nachfolgend findet man einige einfache Beispiele für den Einstieg:
Standardmäßig wird beim Öffnen einer IFC-Datei nur eine vereinfachte 3D-Darstellung jedes Elements geladen. Um ernsthaft damit arbeiten zu können, müssen man möglicherweise die vollständige Form laden:
for obj in FreeCADGui.Selection.getSelection():
obj.ShapeMode = "Shape"
FreeCAD.ActiveDocument.recompute()
Eigenschaftssätze und die darin enthaltenen Eigenschaften werden in FreeCAD als Objekteigenschaften dargestellt. Sobald sie geladen sind, kann man die Werte einfach über den Eigenschaften-Ansicht in FreeCAD (oder über Python) bearbeiten:
from nativeifc import ifc_psets
for obj in FreeCADGui.Selection.getSelection():
ifc_psets.show_psets(obj)
my_object.FireResistanceClass = "1B" # manipulate properties once loaded
ifc_tools.save(project)
Das Werkzeug Projekt aus dem Arbeitsbereich BIM verwenden, um ein natives IFC-Projekt-Objekt zu erstellen. Es ist nicht zwingend erforderlich, das neue IFC-Projekt sofort zu speichern, aber es ist dennoch empfehlenswert. Wenn man dies vergisst, wird man benachrichtigt und kann es beim Speichern des FreeCAD-Dokuments nachholen.
doc = FreeCAD.ActiveDocument
new_project = ifc_tools.create_document(doc)
ifc_tools.save(new_project, "/path/for/our/new/file.ifc")
Das Ändern der Klasse ist sehr einfach, man kann einfach eine andere in der Eigenschaft Klasse des Objekts auswählen. Es ist zu beachten, dass sich dadurch auch die vordefinierten Attribute dieses Objekts ändern können, sodass einige Attribute möglicherweise verschwinden.
my_object.Class = "IfcWall"
Angenommen, wir haben eine neue Wand gebaut und müssen sie zu einem IFC-Projekt hinzufügen. Das können wir grafisch tun, indem wir sie per Drag & Drop in die Baumansicht des Projekts ziehen, aber mit Python ist es genauso einfach:
import Arch
my_new_wall = Arch.makeWall(None, 200, 20, 300)
ifc_tools.aggregate(my_new_wall, project)
Wenn man ein neues Projekt erstellt, kann man sich auch eine Grundstruktur automatisch erstellen lassen, indem man im angezeigten Dialogfeld mit 'Ja' antwortet. Das kann man aber auch ganz einfach in Python tun:
import Arch
doc = FreeCAD.ActiveDocument
project = ifc_tools.create_document(doc)
site = Arch.makeSite()
site = ifc_tools.aggregate(site, project)
building = Arch.makeBuilding()
building = ifc_tools.aggregate(building, site)
level = Arch.makeFloor()
level = ifc_tools.aggregate(floor, building)
Einfach die Eigenschaft 'Schema' des Projekts ändern. Es ist zu beachten, dass dies weitreichende Folgen haben kann (einige Objekttypen könnten sich in der neuen Schemaversion geändert haben). Daher geht man vorsichtig vor und überprüft die Daten anschließend selbst.
project.Schema = "IFC4"
Es gibt noch viel mehr zu entdecken, da durch die verschiedenen nativen IFC-Untermodule weitere Funktionen verfügbar sind, die jeweils Werkzeuge für bestimmte Aspekte von IFC (Eigenschaftssätze, Geometrie, Ebenen…) bieten. Man muss sich diese bei Bedarf unbedingt anschauen!
Ich hoffe, man hat nun eine gute Vorstellung davon, wo man anfangen kann und was mit nativem IFC in FreeCAD möglich ist. Wenn man Hilfe benötigt, besucht man unbedingt den BIM-Bereich im FreeCAD-Forum!