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 sein, Formeln zu verwenden. Das ist insbesondere dann interessant, wenn Wertebedingungen auf andere Merkmale verweisen oder (Teil-)Informationen von Merkmalen übernommen werden sollen.

Dieser Beitrag enthält Formelbeispiele als erste Hilfestellung bei der Regelerstellung. Wie Sie Regeln anlegen und welche Aktionen darin verfügbar sind, erfahren Sie in der Dokumentation zu Regelaktionen. Details zu Syntax und Funktionen finden Sie in der Formeldokumentation.

Grundlegende Definitionen

  • $element ist immer das Element, das von der Regel selektiert wurde, in der die Aktion ausgeführt wird.
  • $property ist immer das Merkmal, das von der Aktion verändert werden soll.
  • Das Ergebnis der IFC-Expression (Formel) wird im Merkmal gespeichert, das in der Aktion angegeben ist.

Gängige Formelbefehle

Textadaptierung

Wert ersetzen

Ersetzt in allen Werten „Abschnitt“ durch „Bauabschnitt“.

$property.value().replace("Abschnitt", "Bauabschnitt")

Werteliste übersetzen

Übersetzt Merkmalswerte ohne Berücksichtigung der Groß- und Kleinschreibung. Alternativ kann eine Tabelle importiert werden.

map($property.value().toLowerCase(), [["wert1", "Neu1"], ["wert2", "Neu2"], ["wert3", "Neu3"]], "DEFAULTWERT")

Präfix ergänzen

Ergänzt das Präfix „beginnt_mit“.

"beginnt_mit" + $property.value()

Suffix ergänzen

Ergänzt das Suffix „_endet_mit“.

$property.value() + "_endet_mit"

In Großbuchstaben umwandeln

$property.value().toUpperCase()

In Kleinbuchstaben umwandeln

$property.value().toLowerCase()

Wert aus mehreren Merkmalen zusammensetzen

Setzt einen Wert aus der IFC-Klasse und den folgenden Merkmalen zusammen; zwischen den Werten wird jeweils ein Unterstrich eingefügt:

  • ASF_MSet_Semantik_Topologie:Referenzachse[String]
  • ASF_MSet_Semantik_Topologie:Abschnitt[String]
  • ASF_MSet_Semantik_Topologie:Stationierung_Anfang[km] (Wert wird dabei in Meter 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

IFC-Klasse übernehmen

Übernimmt die IFC-Klasse des Elements in ein Textmerkmal. Das ist auch mit einer ExtractAction möglich.

$element.ifcClass()

GUID übernehmen

Übernimmt die GUID des Elements in ein Textmerkmal. Das ist auch mit einer ExtractAction möglich.

$element.guid()

Namen übernehmen

Übernimmt den Namen des Elements in ein Textmerkmal. Das ist auch mit einer ExtractAction möglich.

$element.name()

Beschreibung übernehmen

Übernimmt die Beschreibung des Elements in ein Textmerkmal. Das ist auch mit einer ExtractAction möglich.

$element.description()

PredefinedType und ObjectType übernehmen

PredefinedType und ObjectType können derzeit nur mit einer ExtractAction übernommen werden. IFC-Expressions unterstützen diese Werte noch nicht.

Merkmal aus einem beliebigen Property Set übernehmen

Übernimmt den Wert des Merkmals „Abschnitt“ unabhängig vom Property Set.

$element.property("Abschnitt").value()

Merkmal aus einem bestimmten Property Set übernehmen

Übernimmt den Wert des Merkmals „Abschnitt“ aus ASF_MSet_Semantik_Topologie.

$element.propertySet("ASF_MSet_Semantik_Topologie").property("Abschnitt").value()

Mathematische Operationen mit Werten

Multiplizieren

Multipliziert den Merkmalswert mit 0,4.

$property.value() * 0.4

Dividieren

Dividiert den Merkmalswert durch 3.

$property.value() / 3

Addieren

Addiert 120 zum Merkmalswert.

$property.value() + 120

Subtrahieren

Subtrahiert 120 vom Merkmalswert.

$property.value() - 120

Mathematische Operationen mit anderen Merkmalen

Mit einem anderen Merkmal multiplizieren

Multipliziert den Zahlenwert mit dem Wert des Merkmals „Breite“.

$property.value() * $element.property("Breite").value()

Durch ein anderes Merkmal dividieren

Dividiert den Zahlenwert durch den Wert des Merkmals „Breite“.

$property.value() / $element.property("Breite").value()

Ein anderes Merkmal addieren

Addiert den Wert des Merkmals „Breite“ zum Zahlenwert.

$property.value() + $element.property("Breite").value()

Ein anderes Merkmal subtrahieren

Subtrahiert den Wert des Merkmals „Breite“ vom Zahlenwert.

$property.value() - $element.property("Breite").value()

Conditional Values

In den folgenden Beispielen ist das Merkmal „Breite“ als Zielmerkmal in der Aktion definiert. Wenn die Bedingung nicht erfüllt ist, bleibt sein bisheriger Wert erhalten.

Wahrheitswert prüfen

Setzt „Breite“ im Property Set ASF_MSet_Masse_Mengen auf 37,0 cm, wenn „Bewehrt“ in ASF_MSet_Betonbau den Wahrheitswert TRUE hat.

if($element.propertySet("ASF_MSet_Betonbau").property("Bewehrt").value() == TRUE, 37.0, $property.value())

Zahlenwert vergleichen

Setzt „Breite“ im Property Set ASF_MSet_Masse_Mengen auf 50,0 cm, wenn „Laenge“ im selben Property Set kleiner oder gleich 2 m ist.

if($element.propertySet("ASF_MSet_Masse_Mengen").property("Laenge").value() <= 2, 50.0, $property.value())

Textinhalt prüfen

Setzt „Breite“ im Property Set ASF_MSet_Masse_Mengen auf 60,0 cm, wenn „Element“ in ASF_MSet_Semantik_Topologie den Text „Widerlager“ enthält.

if(contains($element.propertySet("ASF_MSet_Semantik_Topologie").property("Element").value(), "Widerlager"), 60.0, $property.value())

Mehrere Bedingungen verknüpfen

Setzt „Breite“ im Property Set ASF_MSet_Masse_Mengen auf 45,0 cm, wenn „Element“ den Text „Widerlager“ und „Betonguete“ den Text „C25_30_B3“ enthält.

if(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())

Mehrere Textwerte zulassen

Setzt „Breite“ im Property Set ASF_MSet_Masse_Mengen auf 50,0 cm, wenn „Element“ einen der Texte „Wand“, „Flügelwand“ oder „Stützwand“ enthält.

if($element.propertySet("ASF_MSet_Semantik_Topologie").property("Element").value().regexContains("Wand|Flügelwand|Stützwand"), 50.0, $property.value())

Konvertierung von Datentypen

Zahl in Text umwandeln

Übernimmt „Breite“ aus ASF_MSet_Masse_Mengen, wandelt den Wert in Text um und ergänzt das Suffix „ cm“.

$element.propertySet("ASF_MSet_Masse_Mengen").property("Breite").value().toString() + " cm"

Text in eine Zahl umwandeln

Übernimmt „Breite“ aus ASF_MSet_Texte. Der Beispielwert „37 cm“ wird vom Textmerkmal in ein Zahlenmerkmal in Metern umgewandelt.

$element.propertySet("ASF_MSet_Texte").property("Breite").value().replace("cm", "").trim().toNumber() / 100

Umrechnung von Währungen

Werte, die von externen und zeitlich veränderlichen Faktoren wie Börsenkursen beeinflusst werden, werden in bim-t standardmäßig mit dem Faktor 1 übernommen. Damit wird vermieden, dass veränderliche Kurswerte dauerhaft in der Übersetzungslogik hinterlegt werden.

Die eigentliche Umrechnung wird vom Nutzer durch die Ergänzung einer entsprechenden Formel innerhalb der Übersetzungsregel definiert. Dadurch kann der jeweils gültige Kurs flexibel berücksichtigt werden. Sowohl die Festlegung des anzuwendenden Kurses als auch der Zyklus, in dem dieser aktualisiert wird, liegen in der Verantwortung des Nutzers.

EUR in SFR umrechnen

Das folgende Beispiel verwendet den beispielhaften Faktor 0,9381.

$property.value() * 0.9381

Weiter hier: