Ausgabe von führenden Nullen

Tekla Structures
Not version-specific
Tekla Structures
Führende Nullen
Positionierung
Vorlagen Ganzzahl mit führenden Nullen
Dezimalzahl mit führenden Nullen
Environment
Germany

In manchen Situationen besteht die Notwendigkeit, dass beispielsweise alle Positionsnummern die gleiche Zeichenanzahl aufweisen müssen. Dies wird durch das Voranstellen von führenden Nullen gelöst. Wenn diese Information vor dem Positionieren des Modells bekannt ist, kann die Zeichenanzahl der Positionsnummern in den Erweiterten Optionen auf der Registerkarte „Positionierung“ festgelegt werden.

Für die Positionsnummern kann jeweils durch die Ergänzung eines oder mehrerer Punkte am Ende der einzelnen Optionen die Zeichenanzahl festgelegt werden. Die Positionsnummer wird entsprechend mit führenden Nullen aufgefüllt.

 

Image
MIKL_Fuehrende_Nullen_1.jpg

 

Mit den in der oberen Abbildung dargestellten Einstellungen werden Montageteile immer vierstellig, Betonteile dreistellig und Nebenteile fünfstellig positioniert. Die Vorgehensweise gilt analog für alle anderen Erweiterten Optionen für Positionsnummern.

Die Objektinfo zeigt dann beispielsweise folgende Positionsnummer an.

 

Image
MIKL_Fuehrende_Nullen_2.jpg

 

Wenn die Ausgabe der führenden Nullen nicht (mehr) über die Erweiterten Optionen möglich ist, dann können diese in den Vorlagen ergänzt werden.

Im folgenden Beispiel werden die Haupt- und Nebenteil-Positionsnummern immer fünfstellig ausgegeben. Hierzu wird die format()-Funktion genutzt. In dieser wird über den letzten Parameter die Anzahl der Zeichen festgelegt. Für die format()-Funktion wird das Attribut ASSEMBLY_SERIAL_NUMBER bzw. PART_SERIAL_NUMBER genutzt. Diese Attribute beinhalten die Positionsnummer ohne Präfix und Trennzeichen. Damit in der Ausgabe die Positionsnummer mit Präfix und Trennzeichen erscheint, wird über die mid()-Funktion der Teil der Zeichenkette bestimmt, welcher dem Präfix samt Trennzeichen entspricht.

Um für Hauptteil die ASSEMBLY_POS und für Nebenteile die PART_POS auszugegeben, wird eine zusätzliche Abfrage durchgeführt, ob es sich um das Hauptteil handelt.

 

if (GetValue("MAIN_PART") == 1) then
   mid(GetValue("ASSEMBLY_POS"), 0, length(GetValue("ASSEMBLY_POS")) - 
   length(GetValue("ASSEMBLY_SERIAL_NUMBER"))) + format(GetValue("ASSEMBLY_SERIAL_NUMBER"), "LeadingZeroes", "", 5)
else
   mid(GetValue("PART_POS"), 0, length(GetValue("PART_POS")) - 
   length(GetValue("PART_SERIAL_NUMBER"))) + format(GetValue("PART_SERIAL_NUMBER"), "LeadingZeroes", "", 5)
endif


In beiden Fällen erfolgt die Ausgabe des Wertfeldes als Datentyp Text. Das Ergebnis dieser Formel ist in der nachfolgenden Abbildung dargestellt.

Image
MIKL_Fuehrende_Nullen_4.jpg

Andere Zahlen können ebenfalls in dieser Weise formatiert werden. Im nachfolgenden Beispiel wird die Teil-Länge ganzzahlig und fünfstellig mit führenden Nullen ausgegeben.

Der Datentyp des Wertfeldes ist Text, da die format()-Funktion eine Zeichenkette liefert. Aus diesem Grund muss mit einer inneren format()-Funktion zunächst die Länge in der Einheit Millimeter bestimmt werden. Damit im zweiten Schritt die führenden Nullen ergänzt werden können, muss das Ergebnis der inneren format()-Funktion wieder in eine Zahl umgewandelt werden. Dies geschieht mit der double()-Funktion. Dieser Zahl können mit der äußeren format()-Funktion die führenden Nullen ergänzt werden.

format(double(format(GetValue("LENGTH"), "Length", "mm", 0)), "LeadingZeroes", "", 5)

 

Das Ergebnis dieser Formel ist in der nachfolgenden Abbildung dargestellt.

Image
MIKL_Fuehrende_Nullen_6.jpg

Für die Ausgabe von Dezimalzahl mit führenden Nullen müssen die Nachkommastellen nachträglich ergänzt werden. Die vorhergehende Formel wird hierbei erweitert. Zunächst wird mit der format()-Funktion die Länge in der Einheit Millimeter mit zwei Nachkommastellen bestimmt und als Zeichenkette ausgegeben. In dieser Zeichenkette wird dann die Position des Dezimaltrennzeichens (der Punkt) gesucht. Über die mid()-Funktion wird nur der Teil der Zeichenkette inklusive des Dezimaltrennzeichens bestimmt und an den zuvor bestimmten ganzzahligen Ausdruck angehängt.

format(double(format(GetValue("LENGTH"), "Length", "mm", 2)), 
"LeadingZeroes", "", 5) + mid(format(GetValue("LENGTH"), "Length", "mm", 2), 
find(format(GetValue("LENGTH"), "Length", "mm", 2), "."))

 

Die Ausgabe über die Vorlage zeigt die nachfolgende Abbildung.

Image
MIKL_Fuehrende_Nullen_8.jpg

Weitergehende Information zu den verwendeten Funktionen im Vorlagen-Editor können der Dokumentation des Vorlagen-Editors entnommen werden.

 

Was dit nuttig?