Selbstlernbereich

Fundiertes Wissen für den sicheren Umgang mit unserer BIM-Anwendung.

IFC-Editor-Formelbeispiele
18. November 2025

Beispiele zur Formelsprache in Regeln

René Holzer

René Holzer

Product Owner

Bei der Regelerstellung kann es notwendig werden, formeln zu verwenden. Dies ist insbesonders dann interessant, wenn man Wertebedingungen auf andere Merkmale referenzieren möchte oder (Teil-) Informationen von Merkmalen übernehmen möchte. Dieser Beitrag beschäftigt sich nur mit Formelbeispielen und soll als erste Hilfestellung bei der Regelerstellung dienen. Wenn sie wissen wollen wie sie Regeln Anlegen können oder welche Aktionen es in Regeln gibt, dann folgen sie bitte den Links.
 

Details zu syntax und funktionen findet man hier.
 

Grundlegende Definitionen:

  • $element ist Immer das entsprechende Element das von der Regel in der die Aktion angewandt werden soll selektiert wurde.
  • $property ist Immer das entsprechende Merkmal das von der Aktion der Regel verändert werden soll.
  • das Ergebnis der ifc-expression (Formel) wird in das in der Aktion angegebene Merkmal gespeichert.
     

Gängige Formelbefehle

 

Nachfolgend werden entsprechend der Kategorien Beispiele für Regeln dokumentiert.

Textadaptierung

 

Beschreibung
Expression
ersetzt in allen Werten “Abschnitt” durch “Bauabschnitt”$property.value().replace(“Abschnitt”, “Bauabschnitt”)
 
übersetzung von Merkmalen mit Werteliste (case-insensitive)map($property.value().toLowerCase(), [[“wert1”,“Neu1”],[“wert2”,“Neu2”],[“wert3”,“Neu3”]], “DEFAULTWERT”)
 alternativ auch mit Tabellen import
 
ergänzt den Präfix “beginntmit""beginntmit”+$property.value()
 
ergänzt den Sufix “_endet_mit”$property.value()+“_ended_mit”
 
ändert den Wert zu Großbuchstaben$property.value().toUpperCase()”
 
ändert den Wert zu Kleinbuchstaben$property.value().toLowerCase()”
 
setzt den Wert zusammen aus den Werten der Merkmale (Pset:Merkmalname), dazwischen immer mit einem ”_“:
IfcKlasse; ”_“;
ASF_MSet_Semantik_Topologie:Referenzachse[String];”_“;ASF_MSet_Semantik_Topologie:Abschnitt[String];”_“;ASF_MSet_Semantik_Topologie:Stationierung_Anfang [km]
- Wert in M umgerechnet.
$element.ifcClass() + ”_” + $element.propertySet(“ASF_Mset_Semantik_Topologie”).property(“Referenzachse”).value() + ”_”+ $element.propertySet(“ASF_Mset_Semantik_Topologie”).property(“Abschnitt”).value() + ”_”+ $element.propertySet(“ASF_MSet_Semantik_Topologie”).property(“Stationierung_Anfang”).value() *1000

 

Werte übernehmen

 
Beschreibung
Expression
Übernimmt den Wert der IfcKlasse des Elements als Wert
in das Textmerkmal (auch mit ExtractAction möglich)
$element.ifcClass()
 
Übernimmt den Wert der Guid des Elements als Wert in das
Textmerkmal (auch mit ExtractAction möglich)
$element.guid()
 
Übernimmt den Wert den Name des Elements als Wert in das
Textmerkmal (auch mit ExtractAction möglich)
$element.name()
 
Übernimmt den Wert der Beschreibung des Elements als Wert
in das Textmerkmal (auch mit ExtractAction möglich)
$element.description()
 
Übernimmt den Wert des PredefinedType als Wert
in das Textmerkmal
derzeit nur mit ExtractAction möglich
-ifc-expressions implementiert das noch nicht
 
Übernimmt den Wert des ObjectType als Wert in
das Textmerkmal
derzeit nur mit ExtractAction möglich
-ifc-expressions implementiert das noch nicht
 
Übernimmt den Wert des Merkmales “Abschnitt” aus
beliebigen Psets
$element.property(“Abschnitt”).value()
 
Übernimmt den Wert des Merkmales “Abschnitt” aus
dem Pset “ASF_MSet_Semantik_Topologie”
$element.propertySet(“ASF_MSet_Semantik_Topologie”).property(“Abschnitt”).value()

 

Simple Mathematische Operationen - mit Werten rechnen

 

Beschreibung
Expression
Merkmalswert wird mit 0,4 multipliziert$property.value()*0.4
 
Merkmalswert wird durch 3 dividiert$property.value()/3
 
Merkmalswert wird mit 120 addiert$property.value()+120
 
Merkmalswert wird mit 120 subtrahiert$property.value()-120

 

Simple Mathematische Operationen - mit interaktion anderer Merkmale

 

Beschreibung
Expression
multipliziert den Zahlenwert mit dem Zahlenwert aus Breite$property.value()*$element.property(“Breite”).value()
 
dividiert den Zahlenwert mit dem Zahlenwert aus Breite$property.value()/$element.property(“Breite”).value()
 
addiert den Zahlenwert mit dem Zahlenwert aus Breite$property.value()+$element.property(“Breite”).value()
 
subtrahiert den Zahlenwert mit dem Zahlenwert aus Breite$property.value()-$element.property(“Breite”).value()

 

Conditional Values

 

Beschreibung
Expression
Setze den Zahlenwert des Merkmals “Breite” im Pset ASF_MSet_Masse_und_Mengen auf 37,0cm, wenn das Merkmal Bewehrt im Pset ASF_MSet_Betonbau = True ist. (Das Merkmal Breite ist als Merkmal in der Aktion definiert)if($element.propertySet(“ASF_MSet_Betonbau”).property(“Bewehrt”).value(), 37.0,$property.value())
 
Setze den Zahlenwert des Merkmals “Breite” im Pset “ASF_MSet_Masse_und_Mengen” auf 50,0cm, wenn das Merkmal Laenge im Pset “ASF*MSet_Masse_und_Mengen” <=2m ist. *(Das Merkmal Breite ist als Merkmal in der Aktion definiert)_if($element.propertySet(“ASF_MSet_Masse_und_Mengen”).property(“Laenge”).value() <= 2, 50.0,$property.value())
 
Setze den Zahlenwert des Merkmals “Breite” im Pset “ASF_MSet_Masse_und_Mengen” auf 60,0cm, wenn das Merkmal Element im Pset “ASF*MSet_Semantik_Topologie ” den String “Widerlager” enthält *(Das Merkmal Breite ist als Merkmal in der Aktion definiert)_if(contains($element.propertySet(“ASF_MSet_Semantik_Topologie”).property(“Element”).value(), “Widerlager”), 60.0,$property.value())
 
Setze den Zahlenwert des Merkmals “Breite” im Pset “ASF_MSet_Masse_und_Mengen” auf 45,0cm, wenn das Merkmal Element im Pset “ASF_MSet_Semantik_Topologie ” den String “Widerlager” und das Merkmal “Betonguete” im Pset “ASF_MSet_Betonbau” den String “C25_30_B3” enthältif(contains($element.propertySet(“ASF_MSet_Semantik_Topologie”).property(“Element”).value(), “Widerlager”) && contains($element.propertySet(“ASF_MSet_Betonbau”).property(“Betonguete”).value(), “C25_30_B3”), 45.0,$property.value())
 
Setze den Zahlenwert des Merkmals “Breite” im Pset “ASF_MSet_Masse_und_Mengen” auf 50,0cm, wenn das Merkmal Element im Pset ASF_MSet_Semantik_Topologie den String Wand, Flügelwand, Stützwand enthält (oder)if($element.propertySet(“ASF_MSet_Semantik_Topologie”).property(“Element”).value().regexContains(“Wand|Flügelwand|Stützwand”)), 50.0,$property.value())

 

Konvertierung von Datentypen

 

Beschreibung
Expression
Übernimmt den Wert des Merkmals “Breite” im Pset “ASF_MSet_Masse_und_Mengen” und ergänze den Sufix ” cm”$element.propertySet(“ASF_MSet_Masse_und_Mengen”).property(“Breite”).value().toString() + ” cm”
 
Übernimmt den Wert des Merkmals “Breite” (Textmerkmal in cm mit prefix cm) - Beispielwert “37 cm” im Pset “ASFMSet_Masse_und_Mengen” in das Zahlenmerkmal “Breite” [m] _Annahme das Breite Text-Merkmal befindet sich in pset ASF_MSet_Texte$element.propertySet(“ASF_MSet_Texte”).property(“Breite”).value().replace(“cm”, "").trim().toNumber() / 100

  Weiter hier: