Sicat Master Datenimporteur BIM Entwickler (w/m/d)
Für einen international agierenden Kunden suchen wir einen XXX(w/m/d).
Ihre Aufgaben sind:
1 Import und Export von glTF Dateien
Implementierung in C++/LUA, zum Import und Export von glTF Dateien,
sowie Implementierung geeigneter LUA Funktionen zur Ein- und Ausgabe
an das SICAT Master Datenmodell.
glTF (Graphics Language Transmission Format) ist ein offener Standard für
3D-Modell Geometrien. Dieses Datenformat gewährleistet die
Interoperabilität mit einer großen Anzahl von CAD- und 3D-Grafik
Anwendungen.
Der glTF Standard wird ebenso wie OpenGL von der Khronos Group
(https://www.khronos.org/gltf/) entwickelt.
Die aktuelle Version 2.0 und beide Dateivarianten .gltf (JSON / ASCII) und .glb
(binär) sollen unterstützt werden.
● Implementierung Import: Lesen der binären bzw. base64 codierten
Vertex- und Index-Buffer und Konvertierung in eine geeignete
Datenstruktur zur Übergabe an eine LUA-Funktion. Per LUA-Skript
sollen Objekte, Blöcke usw. definiert werden können, um aus einer
glTF-Datei bestimmte SICAT Objekte zu erstellen. Soweit vorhanden,
sollen Objekthierarchien, Transformationsmatrizen und ggf.
Metadaten wie ID, Name und falls vorhanden weitere JSON Attribute
über geeignete LUA-Funktionen übergeben werden.
Dabei soll die Aufteilung zwischen LUA-Script und C++
Implementierungen so umgesetzt werden, dass eine größtmögliche
Flexibilität und Modularität beim Datenimport zur Verfügung steht.
● Implementierung Export: Definition und Implementierung aller
notwendigen LUA Funktionen, um SICAT Objekte inkl.
Objekthierarchien, Geometrie, Blockdefinitionen,
Transformationsmatrizen und ggf. Metadaten in eine glTF Datei zu
exportieren. Alle vorhandenen Geometrien des SICAT Datenmodells
sollen unterstützt werden.
Damit ergibt sich ein Funktionsumfang für den glTF Export, der dem
des bereits implementierten IFC-Exports entspricht, mit dem
Unterschied, dass die Ausgabedatei glTF bzw. glb ist statt IFC. Nach
Möglichkeit sollen bereits vorhandene Implementierungen des
IFC-Exports genutzt werden, um die Komplexität insgesamt
möglichst gering zu halten. D.h. die Anzahl C++ Codezeilen und LUA
Codezeilen soll so gering sein wie möglich, ohne die Funktionalität
einzuschränken. Nach Möglichkeit sollte im LUA-Skript nur eine Zeile
geändert werden, um statt einer IFC-Datei eine glb oder glTF-Datei
zu exportieren (beides soll möglich sein).
Ein geeigneter Caching-Algorithmus soll Dopplungen der
Koordinaten- sowie Index-Buffer vermeiden. Beispielsweise soll ein
Dreiecksnetz eines Isolators, der 1000 mal im Modell vorkommt, nur 1
mal im glTF Modell (und im binären Buffer) definiert sein, und per
Transformationsmatrix 1000 mal an jeweils der richtigen Stelle in der
3D-Szene eingefügt werden.
Die Standardkonformität der exportierten Dateien mit dem glTF
Standard soll durch geeignete Validierungen sichergestellt sein.
2 Import und Export von DirectX mesh files
Implementierung in C++/LUA, unter Verwendung des Microsoft DirectX SDK
oder anderer geeigneter Bibliotheken, in Absprache mit dem AG, zum
Import und Export von DirectX-Files, sowie Implementierung geeigneter
LUA Funktionen zur Ein- und Ausgabe an das SICAT Datenmodell.
● Implementierung Import: Beim Laden einer DirectX-Datei soll in der
C++ Implementierung eine Konvertierung der DirectX
Datenstrukturen nach glTF erfolgen, um dann die vorhandenen
Funktionen in LUA und C++ aus Arbeitspaket 1 nutzen zu können.
Dadurch soll die Komplexität der Software so gering wie möglich
gehalten werden, bei gleichzeitiger Gewährleistung der vollen
Funktionalität und Interoperabilität.
Insbesondere auf der LUA Seite sollen die vorhandenen Funktionen
zum glTF Import wiederverwendet werden. Falls möglich, soll nur
eine Änderung der Dateinamenserweiterung (.sdkmesh anstatt .gltf)
nötig sein, um eine DirectX Datei zu importieren.
Nach Möglichkeit sollen für die Datenkonvertierung etablierte und
standardisierte Bibliotheken mit breiter Anwenderbasis verwendet
werden, um von deren Erfahrungen und der Ausgereiftheit der
Software zu profitieren.
● Implementierung Export: Definition und Implementierung aller
notwendigen C++ und LUA Funktionen, um einen vollständigen
Export analog zum glTF Export zu ermöglichen.
LUA-seitig soll somit nach Möglichkeit nur die Dateiendung geändert
werden müssen, um statt einer IFC oder glTF Datei eine DirectX Datei
zu exportieren.
C++ seitig ist damit eine Konvertierung von glTF nach DirectX
notwendig, die performant und nach Möglichkeit verlustfrei
umgesetzt werden soll.
3 Import und Export von USD (Universal Scene Description) mesh files
Implementierung in C++/LUA, unter Verwendung geeigneter Bibliotheken
wie etwa Assimp (https://github.com/assimp/assimp) oder andere, in
Absprache mit dem AG, zum Import und Export von USD-Files, sowie
Implementierung geeigneter LUA Funktionen zur Ein- und Ausgabe an das
SICAT Datenmodell.
Import und Export, Funktionalität und Umsetzung analog zu Arbeitspaket 2
(DirectX).
4 Lesen von JT Dateien und Übergabe an eine LUA Funktion
● Einbindung der Bibliothek “JT Open Toolkit (JTTK)” von Siemens PLM.
Lizenzgebühren trägt der Auftraggeber.
● Implementierung zur Übergabe von Geometrie aus JT Dateien über
eine LUA-Funktion. Über diese JT Schnittstelle sollen z.B. Geometrien
für einzelne Bauteilgruppen wie Isolatoren etc. nach SICAT importiert
werden.
Soweit vorhanden, sollen neben Geometrie auch Objekthierarchien,
Transformationsmatrizen und ggf. Metadaten wie ID, Name und falls
vorhanden weitere Attribute über geeignete LUA-Funktionen
übergeben werden.
5 Lesen von STEP Dateien und Übergabe an eine LUA-Funktion
● Implementierung STEP (Standard for the Exchange of Product Data)
Datenimport mittels OpenCascade (oder einer anderen geeigneten
Bibliothek, in Absprache mit dem Auftraggeber). Lizenzgebühren
trägt der Auftraggeber.
Es gibt 3 verschiedene Varianten mit jeweils einem eigenen
Datenschema: STEP AP (Application Protocol) 203, STEP AP 2014 und
STEP AP 242. Letzteres ist eine Kombination aus AP 203 und AP 214,
und ist das aktuellste und beste Format. Über das STEP Datenformat
soll eine Interoperabilität mit allen wichtigen CAD Anwendungen wie
Siemens NX, SolidWorks, Creo, CATIA und AutoCAD hergestellt
werden.
Im Gegensatz zu den Dateiformaten der Arbeitspakete 1-4 verfügt
STEP nicht nur über tesselierte Dreiecksnetz-Geometrien, sondern
auch über CSG (Constructive Solid Geometry) und parametrische
Geometrien wie z.B. extrudierte Volumenkörper.
Zudem enthalten STEP Dateien neben der Geometrie auch
semantische Produktdaten.
● Der STEP Import soll verschiedene Geometriarten den passenden
und ggf. neu zu definierenden LUA Funktionen übergeben bzw. in
passende Formate umwandeln. Zusätzlich zur Geometrie sollen auch
Objekthierarchien, Transformationsmatrizen und ggf. Metadaten wie
ID, Name und falls vorhanden weitere semantische Produktdaten
über geeignete LUA-Funktionen übergeben werden. Falls es keine
Entsprechung für einen bestimmten Geometrie-Typ im SICAT
Datenmodell gibt, soll die vorhandene STEP Geometrie in ein
Dreiecksnetz umgewandelt und dann per LUA an SICAT übergeben
werden.
● Der STEP Export soll analog zu Arbeitspaket 2 (glTF) implementiert
werden, sodass sämtliche Geometrie sowie Objekthierarchien und
Metadaten des SICAT Datenmodells in eine standardkonforme STEP
Datei exportiert werden kann.
6 Import von IFC-Dateien
IFC (Industry Foundation Classes) ist ein offener Industriestandard für
Building Information Modelling (BIM). Dies ermöglicht den Datenimport von
Modellen aus unterschiedlichen Autorensystemen, entsprechend des von
der BuildingSmart International definierten Standards. Die aktuell offizielle
IFC Schema Version ist IFC 4.3:
https://technical.buildingsmart.org/standards/ifc/ifc-schema-specifications/
Die aktuelle Version 4.3 soll zum Import unterstützt und implementiert
werden, ebenso ältere Versionen 4.0, sowie alle Zwischenversionen bis zu 2.3.
Dies umfasst die Implementierung folgender Punkte:
● Import von Projektstrukturen die durch IfcProject/IfcSite/
IfcRailway/IfcRailwayPart definiert werden:
https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/Ifc
Railway.htm
Falls diese erst in IFC 4.3 definierten Elemente in einer Datei nicht
vorhanden sind, sollen die herkömmlichen aus dem Hochbau
stammenden Elemente
IfcProject/IfcSite/IfcBuilding/IfcBuildingStorey verwendet werden.
Die entsprechenden Daten sollen an eine zu implementierende LUA
Funktion an SICAT übergeben werden.
● Import von Bauteilen wie z.B. IfcBeam oder IfcBuildingElementProxy,
und Übergabe an eine entsprechende LUA Funktion zur Erzeugung
von passenden SICAT Objekten, unter Erhaltung und Übergabe aller
relevanter bauteilbezogener Daten wie z.B. die GUID.
● Import von Geometrie-Elementen und Übergabe an die passende
LUA-Funktion zur weiteren Überführung in das SICAT Datenmodell.
Je nach Art der Geometrie wird z.B. ein Zylinder oder Quader mit
Rotationsmatrix übergeben. Falls für eine geometrische
Repräsentation keine Entsprechung im SICAT Datenmodell
vorhanden ist, soll die Geometrie in ein Dreiecksnetz konvertiert,
und dann an SICAT übergeben werden.
● Import von PropertySets, Element quantities, Materialeigenschaften
und ggf. anderer bauteilbezogener Metadaten, incl. Implementierung
einer geeigneten LUA Funktion zur Übergabe an das SICAT
Datenmodell.
● Das Hauptziel des IFC-Imports ist nicht der vollständige Re-Import
von mittels SICAT Master exportierten IFC-Dateien. Die
Implementierung soll möglichst allgemein und flexibel sein (in
Kombination mit der LUA Scripting Engine), sodass z.B. Bahnhofs-,
Brücken- und Tunnelmodelle mittels IFC nach SICAT importiert
werden können. Aber auch einzelne Bauteile oder Blöcke sollen nach
SICAT importiert werden können.
● Zur Verarbeitung der IFC-Dateien wird, wie beim IFC Export, die Open
Source Bibliothek IFC++ verwendet.
7 Ergänzung IFC Export
● Implementierung einer LUA Funktion und der entsprechenden C++
Funktionen, um beliebige Dreiecksnetze (offen oder geschlossen)
nach IFC zu exportieren. Dies ermöglicht beispielsweise die
Darstellung von transparenten Volumina (IfcSpace), die den Raum
repräsentieren, der beim Schwingen der Oberleitung im Wind
entsteht.
8 Support
● Hilfestellung/Support bei der Integration der in AP 1-7 entstandenen
Bibliothek in SICAT Master
● Unterstützung bei der Konfiguration der Bibliothek in
Anwender-Projekten
9 Verwendung von IFCDB statt IFC++
● Alternative Umsetzung der AP 1-7 mit IFCDB, einer
Weiterentwicklung von IFC++.
IFC++ ist ein objektorientiertes C++ Klassenmodell mit automatisch
generierten Klassen für jeden IFC Datentyp. Der Vorteil davon ist eine
einfache Navigation durch direkten Zugriff auf die Klassenattribute.
Ein Nachteil ist der hohe Speicherverbrauch und die hohe
Komplexität durch die große Anzahl an C++ Klassen.
IFCDB ist eine in Kooperation mit der Firma Creoox
(www.creoox.com) entwickelte IFC Bibliothek, die für IFC Entities und
Attribute einen Datencontainer mit effizientem Zugriff und Caching
(Vermeidung von Dopplungen), getrennt nach Datentypen wie
Strings oder 3D-Punkte bereitstellt.
Durch die Firma Creoox ist optional zusätzlicher Support und
Wartung gewährleistet (unabhängig davon natürlich auch durch den
AN).
Bei Interesse teilen Sie uns bitte Ihre XXXvorstellung sowie Ihre Verfügbarkeit mit. Wir freuen uns auf Ihre Bewerbung in einem Word-lesbaren Format unter Angabe der Referenznummer XXXX an resourcer@agex-it.de.
Bei Fragen steht Ihnen Nils Frind (+49 159 061 749 46) gern zur Verfügung. Unsere aktuellen Stellenausschreibungen finden Sie unter https://agex-it.de/jobs-projekte/.