DESITE – Skripte für Eigenschaften

In BIM-Projekten ist es des Öfteren der Fall, dass die geforderten Standards bzgl. der Benennung von Eigenschaften nicht eingehalten werden. Nachfolgende Prozesse bzw. Anwendungsfälle wie beispielsweise eine modellbasierte Mengenermittlung, wobei die Objekte regelbasiert (d. h. auf Basis von Eigenschaften) mit den LV-Positionen verknüpft werden, sind von dieser eindeutigen und geforderten Benennung abhängig. Auch Auswertungsmöglichkeiten werden erschwert, wenn Eigenschaften in den unterschiedlichen Fachmodellen unterschiedliche Bezeichnungen haben. In dieser Situation können die Skripte für Projekteigenschaften in DESITE Sie unterstützen. 

In DESITE kann an unterschiedlichen Stellen mit Skripten gearbeitet werden – die grundlegende Programmiersprache ist hier immer JavaSkript. 

Eigenschaftsskripte (Property Scripts) sind für alle Domänen sowie als globale Projekteigenschaften verfügbar.


Um ein neues Eigenschaftsskript (Registerkarte Daten > Skripte) zu erstellen:

  1. Klicken Sie auf den entsprechenden Domänen-Tab, z. B. Objekte.
  2. Klicken Sie auf das "+"-Symbol: Eine neue Zeile für das Eigenschaftsskript erscheint.
  3. Geben Sie einen Namen für das Skript und einen Datentyp ein. Anzeigename und Einheit sind optional.
  4. Klicken Sie auf die Zeile mit dem neu erstellten Eigenschaftsskript und öffnen Sie den Codebereich.
  5. Mit den Schaltflächen Importieren und Exportieren können Sie Ihre Skripte speichern und in anderen Projekten wiederverwenden.

Jetzt kann der JavaScript-Code eingegeben werden, um die Eigenschaftswerte durch den Befehl Anwenden zu ermitteln. 





Beispiel: Der Name der Eigenschaft ist falsch geschrieben und die Werte der Eigenschaften sollen in die richtig benannte Eigenschaft übertragen werden. 

Die ursprüngliche Eigenschaft ProVI:PVI_TYP soll in die Eigenschaft MuM:Typ übertragen werden. Dafür wurde bereits ein neues Eigenschaftsskript erstellt und der Name sowie der Datentyp entsprechend angepasst. Im Codebereich stehen als Beispiel 2 entscheidende Codezeilen zur Verfügung, die an dieser Stelle verwendet werden können. 

var id = desiteThis.ID(); 

Zunächst muss definiert werden, mit welchen Objekten im Skript gearbeitet werden soll. Dafür wird die ID der Objekte benötigt. In diesem Fall sollen alle Objekte im Modell berücksichtigt werden – dafür wird der Befehl desiteThis.ID verwendet. Übersetzt bedeutet dies, dass die IDs von allen Objekten dieser Domäne (Objekte) in die Variable id geschrieben wird. 

var n = desiteAPI.getPropertyValue( id, 'cpName', 'xs:string');

Zusätzlich muss noch die ursprüngliche Eigenschaft ProVI:PVI_TYP ausgelesen werden. Dafür gibt es in der DESITE-API den Befehl getPropertyValue, der eine gewisse Schreibweise voraussetzt. Hier wird die ID benötigt (also von welchen Objekten die Eigenschaft ausgelesen werden soll), der Eigenschaftsname und der Datentyp. Im Beispiel ist als Eigenschaft immer cpName hinterlegt. 



Jetzt muss das Skript lediglich angepasst werden, um das Beispiel fertigzustellen. 

In JavaScript (und vielen anderen Programmiersprachen) stehen // für Kommentare. Kommentare sind Texte, die das Programm ignoriert — sie dienen nur dazu, den Code besser zu erklären oder Stellen temporär zu deaktivieren. Diese müssen im entsprechenden Fall vor den angesprochenen Codezeilen entfernt werden, damit die Befehle im Skript angewendet werden. 


Zusätzlich sollte die Eigenschaft cpName durch unsere Eigenschaft ProVI:PVI_TYP ersetzt werden. 


Aktuell ist der Wert lediglich in der Variablen n enthalten. An dieser Stelle wird noch eine Ausgabezeile benötigt.
n; --> Das ist die Ausgabezeile.
In DESITE bewirkt eine einzelne Variable (inkl. Semikolon) in der letzten Zeile, dass ihr Wert direkt als Ergebnis des Skripts ausgegeben wird.  

Ergebnis: Der Wert der Eigenschaft ProVI:PVI_TYP wurde in die Eigenschaft MuM:Typ übertragen.



Das vorgestellte Beispiel ist natürlich sehr einfach gehalten und soll lediglich den ersten Schritt in solche Automatisierungsprozesse aufzeigen.

Viel Spaß beim Ausprobieren!


© 03/2025 Mensch und Maschine Deutschland GmbH. Alle Rechte vorbehalten.