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
GELÖST!

IF ELSE ENDIF - Frage

Andreas81ch
Expert

Hallo zusammen,

 

Mit dem Sript IF ..... THEN

 

ELSE

ENDIF 

kann man über den Parameter "Boole'sche Operation" Elemente ein und ausblenden

 

AC27_Parameter_Boole-sche Operation_IF ELSE END.png

Habe es bei meinem Script so geschrieben,

aber wenn ich z.B. den Parameter 2 erstelle z.B.

 

IF "Parameter Symbol 1" THEN

Script....2D oder 3D.....

 

ELSE
ENDIF

 

IF "Parameter Symbol 2" THEN

Script....2D oder 3D.....

 

ELSE

ENDIF

 

Das GDL Programm sagt, dass der Code so korrekt ist.

Das Problem ist, dass wenn ich das "Symbol 2" im Objekt auswähle und aktiviere (mit dem Kästchen an/aus), erscheint das Symbol 1 und gleichzeitig mit dem Symbol 2 (es überschneidet sich).

 

> Meine Frage ist nun, wie muss ich den Scriptbefehl schreiben, dass wenn ich Symbol 2 einblenden möchte (Aktiv Kästchen nur Symbol 2),

dass das Symbol 1 nicht erscheint ?

 

 

 

 

ArchiCAD v6.5 - 28 (CHE Swiss Edition) / macOS / Windows (Switzerland / Schweiz)
Workstation office specs: mac OS, Apple M2 Max, 64 GB RAM
1 AKZEPTIERTE LÖSUNG

Akzeptierte Lösungen
Lösung

Im Beispiel auf selfgdl zum Artikel Lock sieht man, dass nach einem Lock die zu sperrenden Parameter in Anführungszeichen stehen

also wäre es in deinem Beispiel das hier


IF anSymb1 THEN LOCK "anSymb2"
IF anSymb2 THEN LOCK "anSymb1"

ArchiCAD 27 GER / Win10
Intel i9-9900K / 64GB RAM / nVidia GeForce RTX 2080 Ti

Lösung in ursprünglichem Beitrag anzeigen

18 ANTWORTEN 18
Xandros
Advisor

@Andreas81ch  schrieb:

 

IF "Parameter Symbol 1" THEN

 

Das Problem ist, dass wenn ich das "Symbol 2" im Objekt auswähle und aktiviere (mit dem Kästchen an/aus), erscheint das Symbol 1 und gleichzeitig mit dem Symbol 2 (es überschneidet sich).


Das Problem ist, dass du versuchst mit der Variablenbeschreibung zu programmieren, statt mit dem Variablennamen

 


@Andreas81ch  schrieb:

 

AC27_Parameter_Boole-sche Operation_IF ELSE END.png



Im Screenshot ist die Info links von dem Boolean-Symbol ausgeschnitten - dort ist der Wert, den du ohne "" in die IF Bedingung reinschreibst

ArchiCAD 27 GER / Win10
Intel i9-9900K / 64GB RAM / nVidia GeForce RTX 2080 Ti

2D Script so aktuell;

 

IF anSymb1 THEN

pen 107.......
 
.......hotspot2 14.44755822793, 2.715300005495


ELSE
ENDIF
 
IF anSymb2 THEN
 
pen 107.............
 
.......hotspot2 14.44755822793, 2.115300005495

ELSE
ENDIF
 
! -------- ENDE 2D SCRIPT
 
Parameter aktuelle so;
AC27_Parameter_Boole-sche Operation_IF ELSE END2.png

Wie und was genau muss ich das beim Parameter noch zusätzlich reinschreiben ?
 
 
ArchiCAD v6.5 - 28 (CHE Swiss Edition) / macOS / Windows (Switzerland / Schweiz)
Workstation office specs: mac OS, Apple M2 Max, 64 GB RAM

Eine schnelle Möglichkeit wäre sowas hier:

 

IF anSymb1 THEN
pen 107.......
.......hotspot2 14.44755822793, 2.715300005495
ELSE
IF anSymb2 THEN
pen 107.............
.......hotspot2 14.44755822793, 2.115300005495
ENDIF
ENDIF

 

Edit:

wenn du beide Kästchen Symbol 1 und 2 angekreuzt haben solltest, wird er dann nur Symbol 1 darstellen, da die Bedingung zuerst erfüllt ist und er so die Abfrage beendet.

ArchiCAD 27 GER / Win10
Intel i9-9900K / 64GB RAM / nVidia GeForce RTX 2080 Ti

Ok, danke für den Tipp.

 

PS:

Das Kästchen kann man ja und aus machen. Gibts ein Script, wo man sagt, wenn Kästchen A aktiviert ist, dass Kästchen B nicht aktivierbar ist und umgekehrt resp. wenn man Symbol 2 ankreuzt, dass das Kreuz bei Symbol 1 verschwindet?

ArchiCAD v6.5 - 28 (CHE Swiss Edition) / macOS / Windows (Switzerland / Schweiz)
Workstation office specs: mac OS, Apple M2 Max, 64 GB RAM

Ja, der Befehl heißt LOCK, alternativ geht vielleicht auch HIDEPARAMETER. Leg dir mal das GDL Handbuch oder besser das GDL Kochbuch unter das Kopfkissen.

 

-> selfGDL

 

Aber Achtung mit deinem "andersrum": Das kann evt. einen Kurzschluß erzeugen. Wenn du ein graphisches UI programmierst gibt es dann noch den Radio-Button, der wahrscheinlich das macht, was du willst.

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

Habe schon paar mal ei Self GDL und GDL Graphisoft etc. nachgeschaut, paar Beispiele sind verständlich, und bei anderen muss man lange ausprobieren bis es funktioniert.

ArchiCAD v6.5 - 28 (CHE Swiss Edition) / macOS / Windows (Switzerland / Schweiz)
Workstation office specs: mac OS, Apple M2 Max, 64 GB RAM

Das ist was ich meine, habe versucht folgendes;

 

Im Parameter Script

IF anSymb1 THEN LOCK anSymb2
IF anSymb2 THEN LOCK anSymb1
 
Dann kommt Fehler
String (Text)-Variable erforderlich bei Zeile.......
 
Das ist was ich meine, mann probiert es und kommt einfach nicht weiter, weil man (ich) nicht immer diese GDL Script Beispiele verstehe die im Zusammenhang sind. Oder verstehe einfach die Logik von der Programmierung nicht immer ganz.
 
 
 
ArchiCAD v6.5 - 28 (CHE Swiss Edition) / macOS / Windows (Switzerland / Schweiz)
Workstation office specs: mac OS, Apple M2 Max, 64 GB RAM
Lösung

Im Beispiel auf selfgdl zum Artikel Lock sieht man, dass nach einem Lock die zu sperrenden Parameter in Anführungszeichen stehen

also wäre es in deinem Beispiel das hier


IF anSymb1 THEN LOCK "anSymb2"
IF anSymb2 THEN LOCK "anSymb1"

ArchiCAD 27 GER / Win10
Intel i9-9900K / 64GB RAM / nVidia GeForce RTX 2080 Ti

Besten Dank für dein Support!

ArchiCAD v6.5 - 28 (CHE Swiss Edition) / macOS / Windows (Switzerland / Schweiz)
Workstation office specs: mac OS, Apple M2 Max, 64 GB RAM