icon

Support Forum

[Frage] Erstellen eines Beschriftungsbildes für Bauteile allgemein unter Verwendung von VBS Funktionen [Gelöst]

Schlagworte:
  • Beschriftungsbilder; VBS Funktion

Wir sind gerade bei der Erstellung von Beschriftungsbildern für Schal- und Postionspläne. Für die Erstellungen der Beschriftungsbilder verwenden wir VBS Funktionen.

Beim Versuch mehrere VBS Funktionen in einer Formel im Formel-Editor zu einem einzeiligen Beschriftungsbild zu kombinieren, stürtzt Allplan beim Beschriften des Bauteils ab. Kann es daran liegen, dass die Funktionen ggf. teilweise auf dieselben Attribute zurückgreifen?

Beispiel: Streifenfundament b/h = 80/80 cm, UK = -0.95m

Unter Verwendung der Folgenden Formel für das Beschriftungsbild stütrzt Allplan ab.

Bauteilabmessungen_SP(@Objektname@;@Länge@;@Dicke@;@Höhe@;@Durchmesser@;@Plattenstaerke@;@Dicke_UEZ@;@Hoehe_UEZ@) + ", " + Absolute_Hoehe_UK(@Objektname@;@Oberkante@;@Unterkante@;@Durchmesser@)

Verzichtet man auf das Komma und das Leerzeichen in der Formel bekommt man folgendes Ergebnis:

Beispiel: Streifenfundament b/h = 80/80 cmUK = -0.95m

Bauteilabmessungen_SP(@Objektname@;@Länge@;@Dicke@;@Höhe@;@Durchmesser@;@Plattenstaerke@;@Dicke_UEZ@;@Hoehe_UEZ@) + Absolute_Hoehe_UK(@Objektname@;@Oberkante@;@Unterkante@;@Durchmesser@)

Uns ist noch nicht ganz klar, wo der Fehler liegt, da sich Allplan sehr unterschiedlich verhält. Was muss man beachten, wenn man mehrere VBS-Funktions in einer Formel zusammenfügt?

Hat jemand Erfahrung sdamit und kann uns vielleicht weiterhelfen?

Vielen Dank

Lösung anzeigen Lösung verbergen

Nein, das soll kein generelle Empfehlung für Python als Scriptsprache für Formeln in Beschriftungsbildern sein!

Python bringt möglicherweise wieder andere Probleme mit sich!
z.B. würde ich Python nie in einer Formel für ein Formelattribut einsetzen!
Wenn das Attribut von Python (PythonPart/VS) aufgerufen wird, stürzt Allplan ab oder die Performance beim "Auswerten" geht in den Keller! (siehe hier)
Keine Ahnung, ob das schon gefixt wurde.

Also: Wenn Ihr mit VBS-Script klar kommt und alles erledigen könnt, bleibt dabei...

Zunächst mal:
Wenn es eine VBS-Funktion ist, sollte vor der Funktion "v:" stehen. Also "v:Bauteilabmessungen_SP(...)!

VBS-Funktionen geben den Datentyp "Variant" zurück. Ein Variant kann alles sein: Bool, Integer, Double oder String.

In Deinem Beispiel soll der Rückgabewert beider Funktionen scheinbar als String interpretiert werden.

Die Verkettung von Werten mittels "+"-Operator funktioniert logischerweise nur, wenn beide Objekte Strings sind, oder in diese umgewandelt werden können.

Da Allplan beim Rückgabewert der 1. VBS-Funktion den Datentyp für die Verkettung (+) mit dem String ", " nicht bestimmen kann, stürzt es lieber mal ab!

Wenn man als Rückgabewerte String haben möchte, muss man die Formel am Anfang wie folgt ergänzen:

"" + Bauteilabmessungen_SP(@Objektname@;@Länge@;@Dicke@;@Höhe@;@Durchmesser@;@Plattenstaerke@;@Dicke_UEZ@;@Hoehe_UEZ@) + ", " + Absolute_Hoehe_UK(@Objektname@;@Oberkante@;@Unterkante@;@Durchmesser@)

Damit passiert folgendes:
Allplan wertet den 1.Operanden für den "+"Operator aus. Es ist ein (leerer) String ("").
Dann den 2.Operanden, den Rückgabewert der Funktion Bauteilabmessungen_SP(). Hier kommt ein Variant an.
Damit der +Operator ausgeführt werden kann, interpretiert Allplan diesen Variant als String!
3.Operator ist wieder ein String (", "), kann einfach drangehängt werden.
4. Operator, Rückgabewert der Funktion Absolute_Hoehe_UK() ist wieder ein Variant, und muss wieder als String interpretiert werden.

Merke:
"" + sollte man immer einer Formel voranstellen, wenn das Ergebnis ein String sein soll!

Die "doppelte Verwendung" der Attribute als Funkions-Argumente sollte nicht das Problem sein.
Trotzdem würde ich vorschlagen, die beiden VBS-Funktionen in einem einzigen VBS-Funktionsaufruf zu vereinigen, und erst im VBS-Script
die entspr. Subfunktionen aufzurufen.

All diese Probleme sollten bei der Verwendung von Python als Script-Sprache nicht auftreten.
Dann bitte "p:" voranstellen, und die Funktion in der Datei STD\Scripts\functions.py erstellen.

Hallo Nemo,

danke für die deine schnelle Antwort.

Zitiert von: nemo
All diese Probleme sollten bei der Verwendung von Python als Script-Sprache nicht auftreten.
Dann bitte "p:" voranstellen, und die Funktion in der Datei STD\Scripts\functions.py erstellen.

Heißt das, dass Du uns empfiehlst auf Python als Script-Sprache für die Beschriftungsbilder umzusteigen?
Aktuell wäre das kein großer Aufwand für uns.

Gruß aus Hamburg

Nein, das soll kein generelle Empfehlung für Python als Scriptsprache für Formeln in Beschriftungsbildern sein!

Python bringt möglicherweise wieder andere Probleme mit sich!
z.B. würde ich Python nie in einer Formel für ein Formelattribut einsetzen!
Wenn das Attribut von Python (PythonPart/VS) aufgerufen wird, stürzt Allplan ab oder die Performance beim "Auswerten" geht in den Keller! (siehe hier)
Keine Ahnung, ob das schon gefixt wurde.

Also: Wenn Ihr mit VBS-Script klar kommt und alles erledigen könnt, bleibt dabei...