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

GDL-Text hochgestellt möglich ?

Anonymous
Nicht anwendbar
Ist es mit GDL möglich, bei einer Zahl Nachkommastellen als erhöhten Text darzustellen ?

Beispiel
100,0 soll 100 ohne ohne irgend einen Zusatz ergeben
100,5 soll 100 mit hochgestellter (kleiner) 5 ergeben.

[ 16. August 2008, 09:18: Beitrag editiert von: Egon ]
6 ANTWORTEN 6
zzyzx
Newcomer
das wäre ansatz nummer 1; rundet aber nicht nur auf ,0 und ,5 sondern auch auf ,1 ,2 ,3


!zahl = -123.456
!nkst = 2 ! Nachkommastellen
!sgr = 3 ! schriftgrösse
define style "textformat" "Arial Westlich", sgr*50/glob_scale , 1, 0
define style "textformathoch" "Arial Westlich", 0.65*sgr*50/glob_scale , 1, 0

ganzzahl = int(abs(zahl))
txtganzzahl = str(ganzzahl,1,0)
nachkomma = int(0.5+10^nkst *(abs(zahl) - int(abs(zahl))))
if abs(zahl) = zahl then
plusminus = ""
else
plusminus = "-"
endif
set style "textformat"
text2 0,0,plusminus+txtganzzahl
add2 STW (plusminus) / 1000 * A_ + STW (txtganzzahl) / 1000 * A_ , 0

if nkst <> 0 then
if nachkomma <> 0 then
set style "textformathoch"
text2 0,0,nachkomma
endif
endif
end
Anonymous
Nicht anwendbar
Schaut vielversprechend aus. Vielen Dank.
Werde das mal genauer anschauen, testen und berichten.
zzyzx
Newcomer
hier noch ein anderer ansatz (für archicad 9 und höher):


! werte im bibliothekselement anlegen
! zahl = -123.7123
! nkst = 2
! sgr = 3
! methode
!!!!!!!!!!!!!!!!!!!!!!!! parameter skript
values "methode" "aus","auf 0.5","auf 0.25","auf 0.1","auf 0.01"
!!!!!!!!!!!!!!!!!!!!!!!! 2d skript
define style "textformat" "Arial Westlich", sgr*50/glob_scale , 1, 0
define style "textformathoch" "Arial Westlich", 0.65*sgr*50/glob_scale , 1, 0
set style "textformat"
if methode = "aus" then txtzahl = str{2}("%*01.0",zahl,txtnkst)
if methode = "auf 0.5" then txtzahl = str{2}("%*11.0",zahl,txtnkst)
if methode = "auf 0.25" then txtzahl = str{2}("%*21.0",zahl,txtnkst)
if methode = "auf 0.1" then txtzahl = str{2}("%*31.0",zahl,txtnkst)
if methode = "auf 0.01" then txtzahl = str{2}("%*41.0",zahl,txtnkst)

text2 0,0,txtzahl
add2 stw(txtzahl)/1000*GLOB_SCALE,0
set style "textformathoch"
text2 0,0,txtnkst

end
mit "auf 0.5" solltest du dein ziel erreichen.
praktisch ist dabei, dass eine hochgestellte 0 ohne weitere bastelei unterdrückt wird. man kann das übrigens auch direkt zur umrechnung von einheiten nehmen.
weitere details findest du dazu bei selfgdl.de

[ 18. August 2008, 11:43: Beitrag editiert von: zzyzx ]
Anonymous
Nicht anwendbar
Also die Skripts verstehe ich soweit.


Mein Ziel ist die Beschriftung einer Tür:
80 Hochzahl 5 / 200 Hochzahl 5 statt 80,5/200,5

Da müssten lt. den oben angeführten Skripts 5 Einsetzpunkte (zwei für die Ganzzahlen, zwei für die hochgestellten Zahlen und einen für den Querstrich) definiert werden. Und wenn die Tür gespiegelt und gedreht wird und die Schrift immer wie bei Kotierungen "lesbar" bleibt wird´s langsam kompliziert.

Bei "konventioneller" Schreibweise kann mit einem Ankerpunkt gearbeitet werden.

a= Türbreite z.B. 0,805
b=Türhöhe z.B. 2,005

LET txt = STR (a*100,2,1) + "/" + STR (b*100,2,1)

DEFINE STYLE.......
SET STYLE............

TEXT2 0,0,txt

ergibt 80,5/200,5

Und wenn ich es richtig verstehe gibt es keine Syntax von STR, die die Nachkommastellen von vornherein und ohne Umwege als Hochzahl und ohne Komma ausgibt.

Es scheint machbar aber doch etwas kompliziert - eventuell gehts über einen CALL Befehl mit dem die fünf Elemente definiert und nacheinander an richtiger Position genereiert werden- jedenfalls vielen Dank

:winken:

[ 18. August 2008, 19:07: Beitrag editiert von: Egon ]
zzyzx
Newcomer
mit der zweiten methode ist das relativ einfach; ich habe jetzt auch mal die optionen für andere rundungsintervalle rausgenommen um es zu vereinfachen:




zahl = 0.805
zahl2 = 2.005
sgr = 3

define style "textformat" "Arial Westlich", sgr*50/glob_scale , 1, 0
define style "textformathoch" "Arial Westlich", 0.65*sgr*50/glob_scale , 1, 0

txtzahl = str{2}("%*11.0cm",zahl,txtnkst)
txtzahl2 = str{2}("%*11.0cm",zahl2,txtnkst2)

set style "textformat"
text2 0,0,txtzahl
add2 stw(txtzahl)/1000*GLOB_SCALE,0
set style "textformathoch"
text2 0,0,txtnkst
add2 stw(txtnkst)/1000*GLOB_SCALE,0
set style "textformat"
text2 0,0," / "+txtzahl2
add2 stw((" / "+txtzahl2))/1000*GLOB_SCALE,0
set style "textformathoch"
text2 0,0,txtnkst2
der trick ist dabei, dass die verschiebung des textblocks immer direkt nach dem setzen des vorangegangenen teils erzeugt wird, und zwar bevor die neue stildefinition gesetzt wird.

beim anpassen solltest du unbedingt den textfangpunkt "1" in der stildefinition beibehalten; ansonsten würde es dir alles durcheinander schieben

:winken:

ps: eventuell könnte man auch alle textteile in einen einzelnen richtext dings reinpacken. so wie oben ist es mir aber lieber

[ 18. August 2008, 19:29: Beitrag editiert von: zzyzx ]
Anonymous
Nicht anwendbar
Ich arbeite (noch) auf AC8.1 und da gibts kein STR(2). Werde dann mit AC12 weiter arbeiten. Nochmals Danke.

Keine Antwort gefunden?

Andere Beiträge
im Board ansehen

Zurück zum Board

Neueste Lösungen durchsuchen

Akzeptierte Lösungen zeigen

Eine neue Diskussion starten!

Neues Thema erstellen