In specter stehen dir verschiedene geometrische Maße wie Flächen oder Volumen zur Verfügung. Diese können entweder automatisch berechnet oder aus dem IFC-Modell übernommen werden. In dieser Artikelserie erklären wir dir, wie diese Werte entstehen, worauf du achten solltest – und warum dieselbe „Fläche“ nicht immer gleich zu verstehen ist.
In diesem Artikel zeigen wir dir:
Wie du IFC Properties findest, wenn Maße nicht als Base Quantities vorliegen
Wie du benutzerdefinierte Maße korrekt interpretierst
Worauf du achten solltest, um Unterschiede zwischen Properties und Base Quantities zu verstehen
1. Was sind IFC Properties?
IFC Properties sind benutzerdefinierte Eigenschaften, die Modellierer:innen in der CAD-Software manuell oder halbautomatisch an Objekte anhängen können. Sie bestehen meist aus Schlüssel-Wert-Paaren, z. B. 'Höhe' = 2.5m. Anders als bei Base Quantities (Qto) sind diese Properties nicht standardisiert – das bedeutet, jede:r kann eigene Begrifflichkeiten für sie verwenden.
2. Beispiel für eine IFC Property
Ein Property könnte zum Beispiel so aussehen:
IFCPROPERTYSINGLEVALUE('Höhe',$,IFCLENGTHMEASURE(1.95),$)
specter erkennt solche Einträge anhand ihrer Schlüssel und extrahiert sie – wenn sie zu bekannten Mustern passen.
3. Herausforderungen bei IFC Properties
Da die Bezeichnungen frei wählbar sind, kommt es leicht zu Inkonsistenzen oder Missverständnissen:
- 'Höhe' kann als echte Objekt-Höhe gemeint sein – oder als Höhe über Gelände.
- 'Breite', 'Länge', 'Tiefe' – wird je nach Modelliererin unterschiedlich belegt.
- Es gibt keine Validierung durch das IFC-Format selbst.
- Die Maße können in unterschiedlichen Einheiten oder Formaten angegeben sein.
Welche Propertys specter aktuell herausfiltern und verwendet kann sind unten aufgeführt.
4. Wie geht specter mit diesen Properties um?
specter versucht, Werte aus IFC Properties zu extrahieren, wenn sie nicht über Qto verfügbar sind. Dazu werden bekannte Schlüsselwörter analysiert (z. B. 'Höhe', 'Breite', 'Tiefe'). Da diese Felder aber uneinheitlich sind, erfolgt dies mit Vorsicht – und nur ergänzend.
Aktiviert werden kann die Extraktion dieser Dimensionspropertys durch Auswahl des passenden Dropdowns beim Starten der Model Pipeline.
5. Empfehlungen für Modellierer:innen
Vermeide Mehrdeutigkeiten bei Schlüsseln (z. B. 'Höhe über Boden' statt nur 'Höhe').
Wenn möglich, nutze Base Quantities für zuverlässige Maße.
Dokumentiere verwendete Properties in einem separaten Mapping oder Exportschema. (Das bedeutet nicht, dass specter dies standardmäßig integrieren kann, aber es hilft dir bei der Doku im Allgemeinen)
Verwendung von Einheitlichen Einheiten. Am besten Meter, da specter die Dimensionen in “m” angibt und nicht in Millimeter [“mm”].
6. Zusammenfassung
IFC Properties sind freie Maßeinträge, nicht standardisiert.
Sie sind potenziell fehleranfällig, da Schlüssel beliebig gewählt werden können.
specter nutzt sie nur ergänzend, wenn QTO oder interne Berechnungen nicht verfügbar sind bzw. wenn der haken aktiviert ist. Reihenfolge der Dimensionen: 1. Offizielle QTO Mengen -> 2. Aus Propertys (insofern aktiviert) -> 3. Specter Mengen.
Für konsistente Maße empfiehlt sich die Nutzung von Base Quantities.
Die Mengen aus individuellen Propertys nur im Notfall nutzen wenn zwangsläufig benötigt
Propertys specter
Legende – Wichtige Info vorab:
STRING_EQUALITY = es muss exakt so geschrieben werden inklusive Groß-/Kleinschreibung
REGEX_MATCH = hier nutzen wir Regex, z.B. .*Volumen bedeutet dass wir alles nehmen was mit “Volumen” aufhört (inklusive Groß-/Kleinschreibung)
REGEX_MATCH_IGNORE_CASE wie oben nur EXKLUSIVE Groß-/Kleinschreibung
STRING_CONTAINS_IGNORE_CASE hier muss der Text einfach nur enthalten sein i-wo exklusive Groß-/Kleinschreibung
Dimensions Propertys:
pattern: "AV_Volumen"
type: STRING_EQUALITY
pattern: ".*Volumen",
type: REGEX_MATCH
pattern: "^(?=.*volume)(?=.*net).*$"
type: REGEX_MATCH_IGNORE_CASE
pattern: "\\b(?!(?:\\w*höhen|\\w*höher))\\w*höhe\\w*\\b(?!\\w+)",
type: REGEX_MATCH_IGNORE_CASE
pattern: "Height",
type: STRING_CONTAINS_IGNORE_CASE
pattern: "AV_Dicke",
type: STRING_EQUALITY
pattern: "\\b(?!(?:\\w*breiten|\\w*breiter))\\w*breite\\w*\\b(?!\\w+)",
type: REGEX_MATCH_IGNORE_CASE
pattern: "\\b(?!(?:\\w*dicken|\\w*dicker))\\w*dicke\\w*\\b(?!\\w+)",
type: REGEX_MATCH_IGNORE_CASE
pattern: "Thickness",
type: STRING_CONTAINS_IGNORE_CASE
pattern: "AV_Laenge",
type: STRING_EQUALITY
pattern: "\\b(?!(?:\\w*längen|\\w*länger))\\w*länge\\w*\\b(?!\\w+)",
type: REGEX_MATCH_IGNORE_CASE
pattern: "Length",
type: STRING_CONTAINS_IGNORE_CASE
pattern: ".*Fläche",
type: REGEX_MATCH
pattern: "^(?=.*area)(?=.*net)(?=.*side).*$"
type: REGEX_MATCH_IGNORE_CASE
pattern: "^(?=.*area)(?=.*gross)(?=.*side).*$"
type: REGEX_MATCH_IGNORE_CASE
pattern: "AV_Flaeche"
type: STRING_EQUALITY
pattern: "perimeter",
type: STRING_CONTAINS_IGNORE_CASE
