abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 

Wir schätzen Ihren Input!
Bitte nehmen Sie an der Umfrage zu Archicad 28 Startbildschirm und Lerninhalte/Schnell-Tutorials teil

Programmierung
Alles über Programmierung in GDL und Python

If-Befehl mit mehreren Optionen

snow
Moderator
Hallo zusammen,

ich habe hetzt einen Zeichnungstitel, für den man einstellen kann, ob Platzierung links, mitte oder rechts...
ich will jetzt noch. dass sich der Textanker entsprechend der Option selbst einstellt...

... bekomme aber die Meldung zu einem 'StapelFehler', wenn ich 'Set Style...' jeweils nach 'If' setze.

Lässt sich das irgendwie anders hinbekommen?

DEFINE STYLE "STYLE_l" AC_TextFont_1,
AC_TextSize_1, 1, AC_TextStyle_1

DEFINE STYLE "STYLE_z" AC_TextFont_1,
AC_TextSize_1, 2, AC_TextStyle_1

DEFINE STYLE "STYLE_r" AC_TextFont_1,
AC_TextSize_1, 3, AC_TextStyle_1


PEN AC_TextPen_1

SET STYLE "STYLE_l"

if (LB) then text2 0+DistH, -DistV,"<DRAWINGNAME>"

if (ZT) then text2 AC_DrawingRect[3]/2, -DistV,"<DRAWINGNAME>"

if (RB) then text2 (AC_DrawingRect[3]-DistH), -DistV,"<DRAWINGNAME>"
Archicad For Future F R E E D O M for-COLORS
______________________________________

archicad versions 8-27 | mac os 13 | win 10
9 ANTWORTEN 9
Anonymous
Nicht anwendbar
Poste bitte mal das Script, wie es aussieht, wenn es den Fehler auswirft.
Wie heißt die Fehlermeldung genau?
snow
Moderator
So sieht das dann aus:

Archicad For Future F R E E D O M for-COLORS
______________________________________

archicad versions 8-27 | mac os 13 | win 10
Frank Beister
Moderator
Eine IF THEN Struktur erlaubt nur einen bedingten Befehl. Mehrere bedingte Befehle müssen in eine IF THEN (ELSE) ENDIF Struktur.

Mehrere Befehle in einer Zeile werden durch Doppelpunkt getrennt. Das ändert aber nichts an der vorherigen Aussage.
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
Anonymous
Nicht anwendbar
Schreib das ENDIF am besten in eine neue Zeile - das vermeidet Fehlermeldungen.

IF.........THEN.......
ENDIF

IF.........THEN.......
ENDIF

IF.........THEN.......
ENDIF
Anonymous
Nicht anwendbar
IF LB THEN
SET STYLE "Style_1"
TEXT2 0, 0, "<DRAWINGNAME>"
ENDIF

IF ZT THEN ....usw.
snow
Moderator
Ah super, so geschrieben, funktioniert's.

(Bei Gebrauch des ':' wurde 'If' nicht mehr erkannt...)

Danke für die Hilfe!
Archicad For Future F R E E D O M for-COLORS
______________________________________

archicad versions 8-27 | mac os 13 | win 10
Ma_Scht
Advocate
Wenn Du den ":" verwenden willst,
dann schreib es erst untereinander und wenn es läuft:
Für JEDES ENTFERNTE ZEILEN-UMBRUCH-ENTER setzt Du einen DoPu.

IF A = B THEN
TEXT2 0,0,"A ist gleich B"
TEXT2 0,1,"Na toll!"
ELSE
TEXT2 0,0,"A ist UNgleich B"
ENDIF

oder:

IF A = B THEN : TEXT2 0,0,"A ist gleich B" : TEXT2 0,1,"Na toll!" : ELSE : TEXT2 0,0,"A ist UNgleich B" : ENDIF

Aber m.E. kostet der DoPu Rechenleistung
Basic-Scripte lauf wohl lieber viele kurze Zeilen, als eine Lange mit DoPus, durch.
Ich glaube, das mal irgendwo gelesen zu haben. Bei DNC im GDL-Kochbuch?
Ich weiß es nicht mehr.

Gruß
Frank Beister
Moderator
Lieber nicht machen. Kann keiner mehr lesen hinterher. Wenn der Code zu lang wird nur kleinere Gruppen zusammenfassen.
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
snow
Moderator
Ja, verücktes Zeug... finde ich... dass es auf die Schreibweise so drauf ankommt.

Aber jetzt bin ich ja wieder ein Stück schlauer 🙂
Archicad For Future F R E E D O M for-COLORS
______________________________________

archicad versions 8-27 | mac os 13 | win 10