Zum Inhalt springen

Tabellenfunktion Höhe('Referenzhöhe Versatz') mit Formatierung in einer Formel im Datenstempel 🤯


Mhld

Frage

Geschrieben (bearbeitet)

Hallo VW-Forum,

 

ich hatte einen Datenstempel gebaut, der mittels nachfolgender Formel die Höhe einer Wandaussparung SIA-formatiert anhand des Versatzes zu einer Referenzhöhe angibt:
#Recess#.#OriginRefShort#'='#WS_OBJEKTDATEN('Referenzhöhe')# #WS_HÖHE('Referenzhöhe Versatz')##sia_0_0#65#

Das sieht dann z.B. wie gewünscht so aus bei Werten <> 0:
image.png.ffb9c719586ebd224a0b8cf8048a352d.png 

Aber das sieht halt bei Versatz = 0 so aus:

 image.png.69e3d24de4c30aa8b0e9b74e637a307b.png


Da also der Datenstempel dann aber bei einem Versatz von 0 im Datenstempel schreibt: 0,00, dachte ich, dass ich eine if-Abfrage in den Datenstempel einbaue, die vorher prüft, ob der Wert 0 ist. Wenn der Wert 0 ist, soll leer ausgegeben werden, wenn der Wert ungleich 0 ist, soll die Referenzhöhe Versatz ausgegeben werden.

Auch das klappt mit:

#Recess#.#OriginRefShort#'='#WS_OBJEKTDATEN('Referenzhöhe')# #WS_IF(HÖHE('Referenzhöhe Versatz')=0; ''; HÖHE('Referenzhöhe Versatz'))#

Dann sieht das bei Versatz = 0 wie gewünscht so aus:

image.png.f1a4d9e383d66cdd01bde03317502e92.png

Nur jetzt sieht es bei Versatz <> 0 halt leider so aus:

image.png.7eb3efed7780571db73d86a587d4c28c.png

 

Ich brauche aber eine SIA-formatierte Ausgabe und daran scheitere ich jetzt. Versuche wie:

#Recess#.#OriginRefShort#'='#WS_OBJEKTDATEN('Referenzhöhe')# #WS_IF(HÖHE('Referenzhöhe Versatz')=0; ''; HÖHE('Referenzhöhe Versatz')#sia_0_0#65#)#

funktionieren leider nicht. Wie muss die SIA-Formatierung codieren, damit die Funktion sie erfasst?

 

Grüße!

image.png

Bearbeitet von Mhld

7 Antworten auf diese Frage

Empfohlene Beiträge

Geschrieben

Hallo @Mhld

Die Frage ist gut  - sobald die IF-Funktion hinzu kommt funktioniert die Einheitenformatierung tatsächlich nicht mehr.
Ich melde es Intern - ich denke es kommt aus der Mischung aus Tabellensyntax und Datenstempelsyntax.

Es gibt eine alternative Syntax für IF-Funktionen im Datenstempel:

<ExprIfTrue>@<Condition>:<ExprIfFalse> 

Somit könnte man die #WS_IF()' austauschen durch:

''@#WS_HÖHE('Referenzhöhe Versatz')#=0:#WS_HÖHE('Referenzhöhe Versatz')#

Hierauf lässt sich dann die Einheitenformatierung des Datenstempels anwenden.
Die ganze Formel wäre also:
 

#Recess#.#OriginRefShort#=#WS_OBJEKTDATEN('Referenzhöhe')# ''@#WS_HÖHE('Referenzhöhe Versatz')#=0:#WS_HÖHE('Referenzhöhe Versatz')##sia_0_0#65#


Liebe Grüße

Viktor

  • Like 3

BIM Consultant

ComputerWorks Deutschland

Geschrieben

Wow! Super, vielen Dank!

 

Die alternative Syntax war mir völlig unbekannt. Gibt's dazu eine Dokumention, aus der man diese und andere ersehen kann?

Geschrieben (bearbeitet)

Hallo @Mhld

Mir ist nur diese alternative IF-Syntax im Datenstempel bekannt.
Es handelt sich hierbei eher um ein Relikt...
Die Bestrebungen gehen stark in Richtung Tabellenfunktionen - siehe Änderungen am Datenstempel für Vectorworks 2025.

Unsere Dokumentation für Tabellenfunktionen, Scriptfunktionen und das SDK ist mittlerweile auf Github.

https://github.com/Vectorworks/

Liebe Grüße

Viktor

 

Bearbeitet von Viktor Frank
  • Like 2

BIM Consultant

ComputerWorks Deutschland

Geschrieben

Ich hätte noch ein Thema bei diesem Datenstempel:

manchmal haben wir Bezugsebenen, die mehr Text haben als nur "RFB" oder "RD", z.B. "RFB abgesenkt".

Im Datenstempel möchte ich aber trotzdem nur "RFB" stehen haben.

Es gibt ja die Funktion "Left", mit der ich die dazu die ersten drei Zeichen isolieren könnte:

=left('this is sample', 4) returns 'this'

Damit keine ungewünschten Leerzeichen bei kürzeren Bezugsebenen entstehen, würde ich noch den "Trim"-Befehl ohne Zeichenangabe ergänzen und alles verschachteln…
 

=trim('abbcwordabbc', 'abc') returns 'word'


Wenn ich nun also versuche, diese verschachtelte Funktion einzubauen, fliegt der komplette Wert raus.

Formel sieht so aus:

#Recess#.#OriginRefShort#=#WS_TRIM(LEFT(OBJEKTDATEN('Referenzhöhe'), 3))# ''@#WS_HÖHE('Referenzhöhe Versatz')#=0:#WS_HÖHE('Referenzhöhe Versatz')##sia_0_0#65#

 

Hat jemand die rettende Idee?
 

Geschrieben (bearbeitet)

Hallo @Mhld

generell sollten für die deutsche Programmversion die deutschen Tabellenfunktionen verwendet werden.
=TRIM() ist auf deutsch =WEGSCHNEIDEN()
=LEFT() ist auf deutsch =LINKS()

Des Weiteren ist natürlich die Syntax einzuhalten (Trennzeichen, benötigte Parameter für Funktionen etc.).
Hier deine korrigierte Formel:

#Recess#.#OriginRefShort#=#WS_WEGSCHNEIDEN(LINKS(OBJEKTDATEN('Referenzhöhe'); 3); ' ')# ''@#WS_HÖHE('Referenzhöhe Versatz')#=0:#WS_HÖHE('Referenzhöhe Versatz')##sia_0_0#65#



Vielleicht wäre auch zur Textformatierung die Funktion TEILSTRING geeignet.
https://github.com/Vectorworks/developer-worksheets/blob/main/Worksheet Functions/Vectorworks 2026 DE.md#teilstringtext-trennzeichen-index

Wenn als Trennzeichen im Referenzhöhenname immer ein Leerzeichen genutzt wird (RFB abgesenkt), kann man einfach den Teilstring vor dem Leerzeichen abfragen.
Da ist dann auch egal wie viele Zeichen vor dem Leerzeichen kommen:

RFB abgesenkt
UK-RD 30cm
OK-RD Deckensprung
etc... 
 

#Recess#.#OriginRefShort#=#WS_TEILSTRING(OBJEKTDATEN('Referenzhöhe'); ' '; 1)# ''@#WS_HÖHE('Referenzhöhe Versatz')#=0:#WS_HÖHE('Referenzhöhe Versatz')##sia_0_0#65#



LG

Viktor

Bearbeitet von Viktor Frank
  • Like 1

BIM Consultant

ComputerWorks Deutschland

Geschrieben

Hallo Herr Frank und Danke für die Unterstützung.

 

Ich hatte auch die deutschen Befehle probiert, bin aber demnach an der Annahme gescheitert, dass der "Wegschneiden" Befehl ohne Zeichenangabe einfach mit Klammer-zu beendet wird und habe daher : ' ' vergessen.

 

Die Lösung mit Teilstring gefällt mir aber sogar noch besser und wird gleich implementiert!

 

Vielen Dank!

  • Like 1

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden
  • Forenstatistik

    • Themen insgesamt
      26,3Tsd
    • Beiträge insgesamt
      136,7Tsd
×
×
  • Neu erstellen...