abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
Programmierung
Alles über Programmierung in GDL und Python

komma 5

graber
Advocate
Hallo,

Da ich das selfgdl in diesem Punkt nicht ganz verstanden hab:
Ich möchte von einer Zahl z.B. 12,3456
a.) nur bis zur zweiten Kommastelle diese als Text auswerfen, ohne diese aufzurunden! (also 12,34). (bei str rundet Archicad diese auf ?!)

b.) nur die dritte Kommastelle (in diesem Fall also die 5) als Text ausgeworfen haben, wobei diese jedoch gerundet wird, daher in diesem Fall auf 6. (geht irgendwie mit str{2} ?)

Vielen Dank für die Hile im Voraus.
Christoph
6 ANTWORTEN 6
zzyzx
Newcomer
bei a musst du vorher rechnen lassen, du kannst etwa von der zahl 0,005 subtrahieren und dann die str funktion ausführen, etwa so:

</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;"> zahl = 12.345
zahl2 = zahl+0.005
txt = str(zahl2,3,2) ob das nun aber sinnvoll ist? oder was solls denn genau werden?

:winken:
graber
Advocate
es soll die zahl (im beispiel 12,3456) je nach einstellung als
a.) 12,34 hochgestellt 6 (Rundung auf 1mm) bzw.
b.) 12,34 hochgestellt 5 (Rundung auf 5mm) bzw.
c.) 12,35 (Rundungg auf cm)
ausgeworfen werden.
(So wie es ArchiCAD mit der Bemaßung auch machen kann)

Danke
Frank Beister
Mentor
Hast du diesen Thread gesehen? Schau dir mal das dort gepostete Skript an.

Ansonsten weiß ich nicht, wie ich es noch genauer erklären sollte. Es gibt zur Rundung ab ArchiCAd 8 5 Rundungsflags *0 bis *4. Ab ArchiCAD 9 gibt es dann nochmal 2 zusätzliche: *5 und *6. Diese 2 Gruppen (0-4 und 5/6) funktionieren unterschiedlich.

1. "ausdruck" ist der nach "nachkommastellen" ohne Rundung abgeschnittene String der Zahl. In "intervall" wird der Rundungsexponent ("" bei 0) als String zurückgegeben.

2. Die Version, die ab AC9 möglich ist, ist weniger fummelig, weil nicht 2 Strings ("ausdruck" und "intervall") nebeneinander ausgegeben werden müssen. Dabei ist "Intervall" immer ein Leerstring und der eigentlich dort zu suchende Rundungs"exponent" ist (ggf.) einfach am Ende nach "nachkommastellen" an "ausdruck" angehängt.

Einzig blöde ist, dass beim REQUEST der Einstellungen nur die Einstellungen nach dem ersten Fall zurückgeliefert werden.

Schau dir sonst die Beispiele auf selfgdl nochmal an. Am Ende der Befehlszeile ist im Kommentar das Ergebnis angegeben. Aber du hast schon recht: Diese Flags sind wirklich starker Tobak.
bim author since 1994 | bim manager since 2018 | author of selfGDL.de | openGDL | skewed archicad user hall of fame | author of bim-all-doors.gsm
graber
Advocate
Habs jetzt mit diversen ABS() und FRA() Befehlen in Zusammenrabeit mit Kommastellen verschieben (Mutiplikationen mit / Divisionen durch 10...), Hilfsvariablen und IF-Abfragen gelöst.
Funktioniert zwar ist aber doch einiges an Kopf- und Programmierarbeit (vorallem wenn es mehrere Werte gibt!)
graber
Advocate
@Frank:
Danke für den Link, aber das ist mir dann doch zu kompliziert...
Anonymous
Nicht anwendbar
Diese ganzen Rechnereien kannst du dir sparen. Das macht ALLES STR{2} für dich:

</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">sh= 2.5 !Schrifthöhe in mm
zahl = str{2}("%*1.2",12.34567,intervall)
text2 0,0,zahl
posX=STW(zahl)*GLOB_SCALE/1000
posY=sh*GLOB_SCALE/1000*0.5
text2 posX,posY,intervallDer Kniff liegt im Formatstring "%*1.2".