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

Text2 mit Zeilenumbruch?

andreaszeike
Newcomer
Ich würde gern Heimos Request-Funktion (sh. Werkplankopf) für ein Makro verwenden, mit dem ich maßstabsunabhängigen Text in meine Zeichnung integrieren kann.

Frage: Wie kann man 2DText mit Zeilenumbrüchen programmieren?

TEXT2 lässt wohl leider nur eine Zeichenfolge (string zu), dann muss man mit add2 den Zeilenumbruch machen...

Beispiel:

</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">

PEN 4
DEFINE STYLE "AC_STYLE_1" "Tahoma Westlich",
4.0, 1, 0
SET STYLE "AC_STYLE_1"
ADD2 -9.126396, 12.2091
ROT2 21.7379
TEXT2 0.0, 0.0, "kjdsfhksgh"
DEL 2
ADD2 -8.880899, 11.5934
ROT2 21.7379
TEXT2 0.0, 0.0, "kdsahfk"
DEL 2
ADD2 -8.635402, 10.9777
ROT2 21.7379
TEXT2 0.0, 0.0, "skjdfhsakjf"
DEL 2
ADD2 -8.389906, 10.3619
ROT2 21.7379
TEXT2 0.0, 0.0, "dsflhsakfh"
DEL 2
Auch den Winkel müsste man jedesmal neu definieren.

Ich würde eine For-To Schleife bilden, aber die Eingabe sollte als Fließtext in eine Eingabebox erfolgen, und das kriege ich nicht zusammen...

hat jemand von Euch schon mal so etwas gesehen?

Gruß, az
8 ANTWORTEN 8
Anonymous
Nicht anwendbar
Schau mal ins GDL-Kochbuch auf Seite 2.163.
Hier findest Du (glaube ich) genau die Routine, die Du suchst:
String-Einpassung von Laurent Godel
(Datei ist auch auf der Kochbuch-CD)
andreaszeike
Newcomer
super, mach ich!
aber erst morgen!!

danke, az
andreaszeike
Newcomer
Hallo Jochen!

Das Ding ist schon suuper! Vielen Dank!

Ich verstehe allerdings nicht, wie ich den String da hineinbekommen soll.

Als normale Variable ist stringval ja nicht gedacht... es soll seinen Inhalt ja us einer externen Datei beziehen. hab ich da etwas überlesen?

Gruß, az

TIPP für Kochbuchbesitzer: einfach kopieren bringts nicht, ihr müsst bei den strings den Zeilenumbruch löschen und bei doublespace=STRSTR(stringval," ") ein Leerzeichen ergänzen, sonst geht´s nicht!!

@ Heimo:

hallo heimo, sieh Dir doch mald dieses Script an (ich habe Dein Script ein wenig umgestellt, es funzte zuerst nicht bei mir...)

so ganz verstehe ich es noch nicht, und es klappt auch noch nicht mit der Massstabsanpassung...

</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;"> !!!!Parameter
A = 10 ! Breite der Bounding-Box
B = 2 ! Höhe der Bounding-Box
WoTextPunkt = 7 ! Code des Ankerpunktes define style
Stringtext = "faslfdghdsghfdghf" ! gewünschter Text-String
Textstil = "Arial Westlich" ! gewünschte Schrift (Textstil)
Stift = 2 ! Stiftfarbe der Schrift
Stiftlinie = 1 ! Stiftfarbe der Linie

!GLOB_SCALE = 100 ! Maßstab 1:100

!!!!Funktion Text in Boundingbox - Heimo Mooslechner 7/2002
!!!!Verändert durch Andreas Zeike 7/2002

!!!!zeichne Bounding-Box
pen Stiftlinie
line2 0, 0, 0, b
line2 0, 0, a, 0
line2 a, b, 0, b
line2 a, 0, a, b

hotspot2 0,0
hotspot2 a, b

!!!!Zeichnungsmaßstabs-Abfrage
m=1/1000*GLOB_SCALE !!!!Zeichnungsmaßstabs-Abfrage

!!Parameter-Übergabe-Definition
aatxt=a
bbtxt=b

!!hol dir von 1234: den passenden Textstil
gosub 1234:

!! schreibe in Box
pen stift
text2 0,0, Stringtext

end !!!!!!!!!!!!!!!!!PROGRAMM ENDE!!!!!!!!!!!!!!!!

1234:
!!!!!Funktion: Teste Schriftgröße A+B und gib mir einen Stil retour, der in die Box paßt

!!!Dummystil definieren
define Style "Dummy" Textstil, aatxt*m, WoTextPunkt, 0
style Dummy

!!Textbreite mit Dummystil ermitteln
TextbreiteA=STW(Stringtext)

!!Verhältnis von Dummy-Textbreite zu aa-Länge ermitteln
VerhaeltnisA = aatxt/TextbreiteA

!!!Dummystil für aa-Breite definieren
define Style "DummyA" Textstil, aatxt*VerhaeltnisA, WoTextPunkt, 0
style DummyA

!!Texthöhe für diesen neuen aa-Stil ermitteln
x=REQUEST ("Height_of_style", "DummyA", Texthoch)

!!Zeichnungsmaßstab für Texthoch ausschalten
Texthoch=Texthoch*m

!!Falls Texthoch < b dann Breiten-Stil verwenden, sonst: Höhenstil verwenden
if texthoch < bbtxt then
else
hochverhalt=texthoch/bbtxt
!!!Dummystil für aa-Breite definieren
define Style "DummyB" Textstil, aatxt*VerhaeltnisA/hochverhalt, WoTextPunkt, 0
style DummyB
endif
return

Gruß, az
Hmooslechner
Moderator
Hallo Andreas!

Zuerst mal:

Es ist viel zu schön Wetter, um hier vor dem Blechkasten rumzusitzen! Schau Daß du ins Grüne kommst!

zweitens:

GLOB_SCALE = 100 ! ist so falsch!
GLOB_SCALE füllt Dir Archicad aus der Zeichnung auf = Systemvariable abhängig vom Zeichnungsmaßstab in Archicad eingestellt!

Nicht Du füllst diese Variable! - Du liest sie nur aus!

drittens:
Du sitzt ja immer noch da - Raus ins Grüne mit Dir!

Grüße vom Wallersee!
AC5.5-AC27EduAut, PC-Win10, MacbookAirM1, MacbookM1Max, Win-I7+Nvidia
andreaszeike
Newcomer
Danke!! ... das wusste ich bereits, aber ich hatte doch glatt meine eigene Dummyzeile übersehen!!

Die Zeile war ein Versuch, im Editor den Maßstab zu simulieren, damit ich nicht immer speichern und in ArchiCAD wechseln muss, sondern das Ergebnis gleich in der Komplettansicht prüfen kann - klappt aber nicht, in ArchiCAD ist dann doch wieder alles anders...

...und dann hab´ ich natürlich vergessen, die Zeile wieder zu löschen. Tschullung.

Aber ich bin stolz auf meine PARAMETER - Die musst Du näömlich immer vorneanstellen, wenn Du CODE veröfentlichst - sonst funst das Script nicht!!

ich werde es gleich verbessern, und dann mal sehen, ob´s mit der Maßstabsanpassung wieder hinhaut!!

Gruß, az

PS: im Grünen ist´s zu heiß und Sohnemann hat sich verabschiedet... ist mit Freunden zum Baden gegangen... da hat Papa wieder Zeit, seinem Hobby zu frönen 😄
andreaszeike
Newcomer
Jau, jetzt funzt es auch wieder mit deiner Maßstabsanpassung!!

Habe das Script entsprechend geändert!

Gruß, az
andreaszeike
Newcomer
Vorschlag: was hältst Du davon, eine benutzerdefinierte Texthmax zu integrieren und text2 mit x/y Variablen zu versehen...
Hmooslechner
Moderator
Mach mal! :winken:
AC5.5-AC27EduAut, PC-Win10, MacbookAirM1, MacbookM1Max, Win-I7+Nvidia