Formel zum Abrufen des Profilpräfixes für Vorlagen und Listen

Tekla Structures - Not version-specific profile designation Profilbezeichnung Profile Bezeichnung
Environment
Not environment-specific
Germany

Frage:
Wie kann man das Profilpräfix (Buchstaben am Anfang des Feldes PROFILE) von den numerischen Werten in Vorlagen und Listen trennen? Zum Beispiel sollte "ROHR" aus dem Profil "ROHR500*10" und "BLECH" aus dem Profil "BLECH200*10" zurückgegeben werden. Unsere Formel funktioniert nicht und eine andere Formel, die wir ausprobiert haben, ist zu lang für das Formelfeld im Vorlageneditor.

Antwort:
Das Problem kann wie folgt gelöst werden.

In dieser Formel werden 8 Zeichen am Anfang des Feldes PROFILE nacheinander daraufhin geprüft, ob es sich um Zahlen handelt, und wenn nicht, dann werden sie ausgegeben.


if match(mid(GetValue("PROFILE"),0,1),"[0123456789]") then mid(GetValue("PROFILE"),0,0) else if match(mid(GetValue("PROFILE"),1,1),"[0123456789]") then mid(GetValue("PROFILE"),0,1) else if match(mid(GetValue("PROFILE"),2,1),"[0123456789]") then mid(GetValue("PROFILE"),0,2) else if match(mid(GetValue("PROFILE"),3,1),"[0123456789]") then mid(GetValue("PROFILE"),0,3) else if match(mid(GetValue("PROFILE"),4,1),"[0123456789]") then mid(GetValue("PROFILE"),0,4) else if match(mid(GetValue("PROFILE"),5,1),"[0123456789]") then mid(GetValue("PROFILE"),0,5) else if match(mid(GetValue("PROFILE"),6,1),"[0123456789]") then mid(GetValue("PROFILE"),0,6) else if match(mid(GetValue("PROFILE"),7,1),"[0123456789]") then mid(GetValue("PROFILE"),0,7) else mid(GetValue("PROFILE"),0,8) endif endif endif endif endif endif endif endif


Eine andere Möglichkeit, das Problem zu lösen, ist die folgende Formel.

In dieser Formel wird die kleinste Position der Zahlen in der Profilzeichenkette mithilfe der Funktion min() ermittelt und anschließend werden die Zeichen vom Anfang der Zeichenkette mithilfe der Funktion mid() zurückgegeben. Diese Formel zeigt auch, wie Sie GetFieldFormula() verwenden können, um die Längenbegrenzung im Formelfeld zu umgehen. Die lange Formel ist in mehrere separate Felder unterteilt.

 

mid(GetValue("PROFILE"),0, min( GetFieldFormula("Find0"), GetFieldFormula("Find1"), GetFieldFormula("Find2"), GetFieldFormula("Find3"), GetFieldFormula("Find4"), GetFieldFormula("Find5"), GetFieldFormula("Find6"), GetFieldFormula("Find7"), GetFieldFormula("Find8"), GetFieldFormula("Find9") ) )

 

Zusätzlich zu diesem Feld benötigen Sie 10 separate und ausgeblendete Wertfelder für die Berechnung der Position von numerischen Zeichen im Profilstring.
Das Wertfeld "Find0" enthält diese Formel:


if find(GetValue("PROFILE"), "0") == -1 then 99 else find(GetValue("PROFILE"), "0") endif


Diese Formel sucht nach der Position der Null in der Profilzeichenkette. Wenn keine Null gefunden wird, wird 99 zurückgegeben, wenn eine Null gefunden wird, wird die Position der Null zurückgegeben. Dabei ist zu beachten, dass die Positionen bei Null beginnen, d.h. die Position des ersten Zeichens ist 0 und nicht 1.

"Find1" enthält diese Formel:


if find(GetValue("PROFILE"), "1") == -1 then 99 else find(GetValue("PROFILE"), "1") endif


Diese Formel sucht nach der Position der Nummer 1 in der Profilzeichenkette.

Andere Suchfelder werden auf die gleiche Weise definiert.

 

Fanden Sie das hilfreich?
Absenden