coord-transf.2d elements3d elementsnon geo scriptsfunctionscontrol statem.attributesvariousaddons
arithmeticscirclemathematicsstatisticsstringarraybinaryspecial
STR STR{2} SPLIT STW STRLEN STRSTR STRSUB
Name
STR
Syntax
STR(expression,length,fractions)
oder
STR(format_text,expression)
Aufklappen Range
expression beliebiger numerischer Ausdruck
length ≠ 0, Typ integer
0 ≤ fractions < |length|, Typ integer (2)
format_text = "%[flags][stellen][.nachkommastellen][einheit]", Typ Text (1)

末末末末末末末末
(1) Aufbau und Bestandteile von format_text:
%: Einleitendes Zeichen fr nachfolgende Formatierungsanweisungen. Dieses Zeichen ist obligatorisch, alle anderen Bestandteile sind optional.

[flags] (fr imperiale Einheiten/Bruchdarstellung):
  0: 0 Zoll werden dargestellt, sonst wird ein Leerstring ausgegeben.

[flags] (fr metrische Einheiten/dezimal):
  #: Wenn expression<1 Weglassen der Vorkommastellen (> DIN 1356) oder
  ^: Dezimaltrennzeichen nach amerikanischer (".") und nicht
      lokalisierter Notation (z.B. ",") (since ArchiCADョ 8)
  -: Zahl im Ergebnistext links ausrichten (Standard: rechts)
  +: Positive Zahlen mit explizitem "+"-Vorzeichen
  [space]: Positive Zahlen mit explizitem Leerzeichen als Vorzeichen

[stellen] > 0 minimale Anzahl der Zeichen des Ergebnistextes

[nachkommastellen] ≥ 0 Anzahl der Dezimalstellen (Nachkomma)

[einheit] = Einheit, in die expression umgerechnet wird:
(Ausgangseinheit ist (Quadrat-/Kubik-)Meter bzw. dezimale Altgrad.)
  ___L舅genma゚e:
  e: exponentiales Format (Meter)
  m: Meter
  mm: Millimeter
  cm: Zentimeter
  ffi: Fu゚ + Bruchzoll
  fdi: Fu゚ + dezimaler Zoll
  df: dezimaler Fu゚
  fi: Bruchzoll
  di: dezimaler Zoll
  pt: Punkte (points); since AC 13.0
  ___Fl臘henma゚e:
  sqm: Quadratmeter
  sqcm: Quadratzentimeter
  sqmm: Quadratmillimeter
  sqf: Quadratfu゚
  sqi: Quadratzoll
  ___Winkelma゚e:
  dd: dezimale Grad
  dms: Grad, Minute, Sekunden
  gr: Neugrad
  rad: Bogenma゚
  surv: Vermessungseinheit
  ___Raumma゚e:
  cum: Kubikmeter
  l: Liter
  cucm: Kubikzentimeter
  cumm: Kubikmillimeter
  cuf: Kubikfu゚
  cui: Kubikzoll
  cuy: Kubikyard
  gal: Gallone

末末末末末末末末
(2) |length| = ABS(length) (=Betrag von length)
Aufklappen Description
Wandelt einen numerischen expression in einen Text um und gibt den Text als Ergebnis zurck.
STR() bildet somit das Gegenstck zu der SPLIT()-Funktion, mit der man einen Text in eine Zahl wandeln kann.

Es stehen 2 Syntaxformen zur Verfgung:

string = STR(ausdruck,stellen,nachkommastellen)
Gibt die resultierende, kaufm舅nisch gerundete Zahl aus expression mit insgesamt mindestens |length| Zeichen insgesamt und mit fractions Stellen hinter dem Komma aus. Der Text kann auch breiter als |length| werden, wenn die Verteilung der Ziffern vor und hinter dem Komma es erfordern. Ist die Textbreite des reinen Zahlenergebnisses kleiner als |length|, wird fhrend (wenn length>0) oder nachfolgend (wenn length<0) mit Leerzeichen aufgefllt. Negative Werte von expression erhalten ein "-" als Vorzeichen, bei positiven Werten entf舁lt das "+". Es wird auch kein zus舩zliches Leerzeichen vorangestellt. Bei der Bemessung der Breite werden Dezimalpunkt und ggf. Vorzeichen mitgez臧lt.
Siehe Beispiel 1.

string = STR(formattext,ausdruck)
Mit dieser 2. Variante kann das Ergebnis sehr detailliert, 臧nlich wie in den Grundeinstellungen von ArchiCAD fr Bema゚ungen und Einheiten, formatiert werden. Ohne Berechnungsformel kann mit dieser Funktion auch in andere Einheiten umgewandelt werden. Siehe Wertebereich des Formatierungsstrings format_text. Ist format_text ein leerer Text, wird format_text="%#.3m" angenommen. Zu beachten ist, dass, auch wenn in format_text numerische Angaben gemacht werden (z.B. [stellen]), es sich um einen Text handelt. Der Formatstring kann auch als Variable bergeben werden, aber eben als zusammengesetzte Textvariable. Numerische Angaben mssen dann zun臘hst selbst erst in Text gewandelt werden.
Siehe Beispiel 2.
Aufklappen Example
Beispiel 1 (nach 1. Syntaxschema):
string = STR(12.75,5,1) ! =サ 12.8ォ
string = STR(12.75,5,2) ! =サ12.75ォ
string = STR(12.75,5,4) ! =サ12.7500ォ
string = STR(12.75,10,2) ! =サ     12.75ォ


Beispiel 2 (nach 2. Syntaxschema):
zahl=12.75
string = STR("%#+9.1cm",zahl) ! = サ  +1.275,0ォ

Der Wert von "zahl" (12.75) wird nach den Formatierungsregeln des vorangestellten Formatierungsstrings ("%#+9.1cm") umgewandelt. Dessen Zusammensetzung:
 "%" ist obligatorisch und ohne Wirkung.
 "#" Bei Zahlen kleiner 0 bewirkt das Weglassen des "0,"-Anteils. Hier, da 12.75>0 ist es ohne Wirkung.
 "+" Ausgabe des Pluszeichens, wenn der Wert von Zahl positiv ist.
 "9" Der Ergebnistext soll inkl. Vorzeichen und Punkt mind. 9 Zeichen breit sein. Fehlende Stellen werden vorne mit Leerzeichen gefllt.
 ".1" Runden auf 1 Nachkommastelle.
 "cm" Umwandlung des Ergebnisses in Zentimeter, also zahl*100.

Beispiel 3:
zahl = 2.54
! Ausgabe in Metern, der internen Rechnungseinheit
string = STR("%.3m",zahl) ! = サ2,540ォ
! Ausgabe in Zentimetern
string = STR("%.1cm",zahl) ! = サ254,0ォ
! Ausgabe in Millimetern
string = STR("%.0mm",zahl) ! = サ2.540ォ
! Ausgabe in Bruchzoll (1 Zoll=2,54 Zentimeter)
string = STR("%.2fi",zahl) ! = サ100"ォ
! Ausgabe in dezimalen Zoll
string = STR("%.2di",zahl) ! = サ100,00"ォ
! Ausgabe in dezimalen Fu゚ (1 Fu゚=30,48 Zentimeter)
string = STR("%.4df",zahl) ! = サ8,3333'ォ
! Ausgabe in Fu゚ und Bruchzoll
string = STR("%.2ffi",zahl) ! = サ8'-4"ォ

Umrechnung in verschiedene L舅geneinheiten.

Beispiel 4:
! Ausgabe in Quadratmetern (Standard)
string = STR("%.2sqm",1) ! = サ1,00ォ
! Ausgabe in Quadratzentimetern
string = STR("%.0sqcm",1) ! = サ10.000ォ
! Ausgabe in Quadratmillimetern
string = STR("%.0sqmm",1) ! = サ1.000.000ォ
! Ausgabe in Quadratfu゚
string = STR("%.4sqf",1) ! = サ10,7639ォ
! Ausgabe in Quadratzoll
string = STR("%.0sqi",1) ! = サ1.550ォ

Umrechnung in Fl臘heneinheiten. Zeichen fr Zoll und Fu゚ werden nicht mit ausgegeben!

Beispiel 5:
zahl = 0.5
! Ausgabe in Kubikmeter (Standard)
string = STR("%.2cum",zahl) ! = サ0,50ォ
! Ausgabe in Kubikzentimeter
string = STR("%.0cucm",zahl) ! = サ500.000ォ
! Ausgabe in Kubikmillimeter
string = STR("%.0cumm",zahl) ! = サ500.000.000ォ
! Ausgabe in Litern (Kubikdezimeter)
string = STR("%.0l",zahl) ! = サ500ォ
! Ausgabe in Kubikyard
string = STR("%.4cuy",zahl) ! = サ0,6540ォ
! Ausgabe in Kubikfu゚
string = STR("%.4cuf",zahl) ! = サ17,6573ォ
! Ausgabe in Kubikzoll
string = STR("%.1cui",zahl) ! = サ30.511,9ォ
! Ausgabe in Galleonen
string = STR("%.1gal",zahl) ! = サ132,1ォ

Umrechnung in Volumeneinheiten. Auch hier keine Ausgabe von Einheiten.

Beispiel 6:
winkel = 180   ! in Altgrad
! Ausgabe in Bogensekunden und Minuten.
string = STR("%7.4dms",winkel) ! = サ180ー 0' 0.00" ォ
! Neugrad mit 90 Altgrad=100 Neugrad
string = STR("%7.1gr",winkel) ! = サ 200,0G ォ
! Ausgabe im Bogenma゚
string = STR("%7.4rad",winkel) ! = サ 3,1416R ォ (=π)

Umrechnung von Winkelwerten. Hier werden die Einheiten mit ausgegeben.

Beispiel 7:
zahl=12.75
string = STR(%-8,zahl)   ! = サ12,750  ォ
string = STR(%8,zahl)    ! = サ  12,750ォ
string = STR(%8.0,zahl)  ! = サ      13ォ
string = STR(%-8.0,zahl) ! = サ13      ォ

Auffllen mit Leerzeichen links (Standard) und rechts mit dem "-" - Flag.

Beispiel 8:
string = STR(%.4,0.1815) ! = サ0,1815ォ
string = STR("%.2,0.1815) ! = サ0,18ォ
string = STR("%.3,0.1815) ! = サ0,182ォ

Kaufm舅nisches Runden bei Angabe der Nachkommastellen.

Beispiel 9:
string = STR("%.2",12.75)   ! = サ12,75ォ
string = STR("%+.2",12.75)  ! = サ+12,75ォ
string = STR("% .2",12.75)  ! = サ 12,75ォ
string = STR("% .2",-12.75) ! = サ-12,75ォ

Ausgabe des Vorzeichens "-" immer, wenn negativ; "+" bzw. " " nur mit gesetzten Flags.

Beispiel 10:
string = STR("%.2",0.75)  ! = サ0,75ォ
string = STR("%#.2",0.75) ! = サ75ォ
string = STR("%#.4",0.75) ! = サ7.500ォ

Zahlen zwischen 0 und 1 knnen auf reine Nachkommadarstellung (nach DIN 1356) umgestellt werden. Die Anzahl der Nachkommastellen haben einen Einflu゚ auf die Darstellung.

Beispiel 11:
string = STR("%10.2",12.75)  ! = サ 1.275,00ォ
string = STR("%^10.2",12.75) ! = サ 1275.00ォ

Ab ArchiCAD 9 kann die Zahl unabh舅gig von der lokalisierten ArchiCAD-Version in die amerikanische/internationale Notation ohne Tausendertrennung und Punkt statt Dezimalkomma gewandelt werden.

Beispiel 12:
string = STR("%",0)  ! = サ0,000ォ
string = STR("%[tilde]",0) ! = サ0ォ

Tja, das Tilde-Flag since AC8. Wofr ist es wirklich? oder funktioniert es nur in STR{2}()?

Beispiel 13:
zoll = 4,8768
string = STR("%.4",zoll)    ! = サ4,8768ォ
string = STR("%ffi",zoll)   ! = サ16'ォ
string = STR("%0ffi",zoll)  ! = サ16'-0"ォ
string = STR("%fdi",zoll)   ! = サ16'ォ
string = STR("%0fdi",zoll)  ! = サ16'-0.00"ォ
string = STR("%0.3fdi",zoll) ! = サ16'-0.000"ォ
string = STR("%fi",0)  ! = サ0"ォ
string = STR("%0fi",0) ! = サ0"ォ
string = STR("%df",0)  ! = サ0,00'ォ
string = STR("%0df",0) ! = サ0,00'ォ

Auch bei der Bruchzolldarstellung knnen 0-Darstellungen unterdrckt werden.


Beispiel 14:
zahl=5.08
string = STR("%10.1df",zahl) ! = サ      16,7'ォ
string = STR("%10.1di",zahl) ! = サ     200,0"ォ
string = STR("%10.1fi",zahl) ! = サ200"ォ
string = STR("%10.1fdi",zahl) ! = サ16'-8.0"ォ
string = STR("%10.1ffi",zahl) ! = サ16'-8"ォ
string = STR("%-10.1di",zahl) ! = サ200,0"ォ

Fehlerhaftes Auffllen mit Leerzeichen auf die Minimalbreite des Ergebnistextes bei der Ausgabe im imperialen Format (Bruchzoll).

Beispiel 15:
winkel=180
string = STR("%-10.1",winkel)   ! = サ180,0     ォ
string = STR("%10.1dd",winkel)  ! = サ     180,0ー ォ
string = STR("%-10.1dd",winkel) ! = サ180,0     ー ォ

Unlogisches Auffllen mit Leerzeichen bei Winkelma゚en.
Aufklappen Specialities
1. In beiden Syntaxschemen ist im Textergebnis das Dezimaltrennzeichen in der landesblichen Notation, im deutschen ArchiCAD also ein Komma. Damit kann keine direkte Rckwandlung in eine Zahl mit SPLIT() erfolgen, da diese Funktion, die, wie in der brigen GDL-Syntax blich, die amerikanische Notation erwartet. Man muss zuvor dem Text die landesspezfischen Zeichen (auch den in Deutschland blichen Tausender-Trennpunkt) z.B. mit STRSUB() entziehen bzw. umwandeln.

Workaround:
s = STRSTR(ergebnis,",")
IF s THEN
 vor = STRSUB(ergebnis,1,s-1)
 nach = STRSUB(ergebnis,s+1,STRLEN(ergebnis)-s)
 ergebnis = vor + "." + nach
 ENDIF


2. Die Nutzung einstellbarer Rundungsintervalle in den Grundeinstellungen der Zeichnungstexte wird since ArchiCAD 8 von der REQUEST()-Funktion ebenfalls zurckgegeben. Diese Funktionalit舩 ("*"-Flag, siehe STR{2}()-Funktion) ist aber mit der STR-Funktion nicht mglich. トltere Objekte knnen daher an diesem Punkt "scheitern" und einen Fehler verursachen. In diesen Objekten ist die STR()- mit der STR{2}()-Funktion zu ersetzen.

3. Die Rundungsfunktionalit舩 der STR{2}()-Funktion wurde wohl wegen der ntigen Rckgabe eines 2. Strings nicht in die STR()-Funktion integriert. In ArchiCAD 9 sind die Rundungsoptionen noch einmal erweitert. Diese Erweiterungen wirken sich aber nur auf den 1. Ergebnisstring aus und bentigen keinen zus舩zlichen. Deswegen funktionieren diese Flags ("*5" und "*6") (natrlich since ArchiCAD 9) auch in der STR()-Funktion. Von deren bewu゚ten Verwendung raten wir aber ab, da dieses Feature nicht dokumentiert und in knftigen Versionen wieder zurckgenommen werden knnte.

4.Die Angabe von Einheiten dient im Wesentlichen der Umrechnung. Die Einheitsbezeichner werden nur bei Bruchzahlen (inch/Zoll) und bei Winkelangaben ausgegeben. Aus welchem Grund auch immer wird bei den Winkelma゚en zus舩zlich immer noch ein Leerzeichen angeh舅gt. Siehe Beispiel 15.

5. Bei den Einheiten mit Bruchzoll (fi,fdi,ffi,di) funktioniert die Angabe der Mindestbreite (length) nicht erwartungsgem葹. Siehe Beispiel 14.
Aufklappen ArchiCADョ
since 5.0
Aufklappen Tips and Tricks
Mit der REQUEST()-Funktion lassen sich die Ausgabeformate der Zeichnungstexte (Ma゚ketten, Winkelma゚e etc.) als Formatierungsstrings gleicher Syntax abrufen und direkt in der STR()-Funktion verwenden. Siehe z.B. Abruf Format Ma゚kettentexte.
GDL-Talk (members):
Some interesting precisions (EN)
Archi-Talk:
Code for fraction of inches (EN)
Aufklappen References
GDL-Handbuch 5.0 (DE) p. 130
GDL-Handbuch 6.0 (DE) p. 176
GDL-Handbuch 6.5 (DE) p. 178
GDL-Handbuch 7.0 (DE) p. 178
GDL-Handbuch 8.0 (DE) p. 120
GDL-Handbuch 8.1 (DE) p. 122
GDL-Handbuch 9.0 (DE) p. 202
GDL-Handbuch 10.0 (DE) p. 204
GDL-Handbuch 11.0 (DE) p. 210
GDL Reference Guide 9.0 (INT) p. 196
GDL Reference Guide 10.0 (INT) p. 202
GDL Reference Guide 11.0 (INT) p. 202
GDL Cookbook 3.1 (EN/DE) p. 2.92
 




separates Web Control Fenster Download Objekt

Aufklappen GDL WebControl