Hallo Stringtextuser!
Dieses Programmteil muß mit den richtigen Parametern aufgerufen werden. Diese werden jeweils vor dem Aufruf festgelegt.
Dann erfolgt eigentlich der Unterprogramm-Aufruf.
Dieses macht mit einem "Dummy-Textstil" die Berechnungen der Text-Ausmße und berechnet die größte mögliche Höhe oder Breite des Textes, daß er immer in die definierte Box paßt.
Der vollständige Code:
</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">
!!!!Funktion Text in Boundingbox - Heimo Mooslechner 7/2002
pen Stiftlinie
line2 0, 0, 0, b !!!!!Bounding-Box
line2 0, 0, a, 0
line2 a, b, 0, b
line2 a, 0, a, b
hotspot2 0,0
hotspot2 a, b
m=1/1000*GLOB_SCALE !!!!Zeichnungsmaßstabs-Abfrage
aatxt=a !!nötige Parameter-Übergabe-Definition
bbtxt=b
Textstil=Textstil
WoTextPunktt=WoTextPunkt
Stringtext=Stringtext
gosub 1234: !!holt sich von 1000: den passenden Textsatil
pen stift
text2 a/2, b/2, Stringtext
end !!!!!!!!!!!!!!!!!PROGRAMM ENDE!!!!!!!!!!!!!!!!
1234:
!!!!!Funktion: Testeschriftgröße A+B und gib mir einen Stil retour, der in die Box paßt
define Style "Dummy" Textstil, aatxt*m, WoTextPunkt, 0 !!! Dummystil definieren
style Dummy
TextbreiteA=STW(Stringtext) !!Textbreite mit Dummystil ermitteln
VerhaeltnisA = aatxt/TextbreiteA !!Verhältnis von Dummy-Textbreite zu aa-Länge
define Style "DummyA" Textstil, aatxt*VerhaeltnisA, WoTextPunkt, 0 !!!Dummystil für aa-Breite definieren
style DummyA
woswasi=REQUEST ("Height_of_style", "DummyA", Texthoch) !!Texthöhe für diesen neuen aa-Stil ermitteln
Texthoch=Texthoch*m !!Zeichnungsmaßstab für Texthoch ausschalten
if texthoch < bbtxt then !!Falls Texthoch < b dann Breiten-Stil verwenden
else !!sonst: Höhenstil verwenden
hochverhalt=texthoch/bbtxt
define Style "DummyB" Textstil, aatxt*VerhaeltnisA/hochverhalt, WoTextPunkt, 0 !!!Dummystil für aa-Breite definieren
style DummyB
endif
return !!Gib mir den richtigen Stil für die Box retour
Somit ist es mit Nutzung dieser Funktion ganz unmöglich, aus einem Kasterl rauszuschreiben. Bei zu vielen Buchstaben wird einfach die Schrift entsprechend kleiner!
Außerdem umgeht die Funktion die Schriftgrößenveränderung bei Archicad-Zeichnungs-Maßstabsänderungen
Vuielleicht hat mal wer Lust, eine Mehrzeilige Funktion zu erschaffen?
mfG. Heimo
[ 10-12-2002, 08:46: Beitrag editiert von: Heimo ]
AC5.5-AC27EduAut, PC-Win10, MacbookAirM1, MacbookM1Max, Win-I7+Nvidia