Aktuelle Zeit: 1. Apr 2023, 15:43
Ein neues Thema erstellen Auf das Thema antworten  [ 15 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: IF mit mehreren Bedingungen möglich?
BeitragVerfasst: 10. Mär 2023, 13:47 
Offline
Forum Veteran

Registriert: 10. Apr 2004, 01:01
Beiträge: 2447
Wohnort: Südrhein-Ostbaden
Land: DE
Hallo ihr lieben,

ich frage mich gerade, ob das möglich ist... meine, in diversen Skripts schon mal gesehen habe, dass bei IF eine Zahl angegeben ist – vielleicht hat das ja was damit zu tun...

Dachte mir, ich könnte meiner Tür eine 'Ausführung als Schwingtür-Option' hinzufügen.
Da ich aber für das Grundriss-Symbol auch gerade und gebogenen Öffnnungslinien haben will, bräuchte ich jetzt wohl Bedingungskombinationen, wie:

WENN "Öffnungslinie gerade' UND "Schwingtür" DANN usw.

Lässt sich so was programmieren?

_________________
Bilder hochladen . schöner zitieren

...wer nicht fragt bleibt dumm


ARCHICAD for Future

Freedom for colors
--------------------------------------------------
ac 8- 26 | macintosh OS 12 | win11 | neues Alφabeet


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: IF mit mehreren Bedingungen möglich?
BeitragVerfasst: 10. Mär 2023, 14:02 
Offline
Forum Veteran
Benutzeravatar

Registriert: 2. Jun 2004, 01:01
Beiträge: 2949
Wohnort: Hamburg
Die Bedingung in IF_THEN kann auch eine boolesche Operation sein.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: IF mit mehreren Bedingungen möglich?
BeitragVerfasst: 10. Mär 2023, 15:43 
Offline
Forum Veteran
Benutzeravatar

Registriert: 26. Mai 2002, 01:01
Beiträge: 1073
Wohnort: Osterwald
Land: DE
Betriebsystem: MacOS 10.11
Ja, du kannst genau so etwas wie Du beschrieben hast machen:

IF Bedingung_1 = "x" AND Bedingung_2 = "y" THEN
Oder mit "OR"
Oder kombiniert: IF (bed1 AND bed2) OR (bed3 and bed4) THEN

_________________
ArchiCAD 18 - 25 | iMac 3.5 Ghz | Mac OS X 10.15 | Win 10


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: IF mit mehreren Bedingungen möglich?
BeitragVerfasst: 10. Mär 2023, 16:06 
Offline
Forum Veteran

Registriert: 10. Apr 2004, 01:01
Beiträge: 2447
Wohnort: Südrhein-Ostbaden
Land: DE
OK. Das stecke also hinter diesen Zahlen... dann werde ich mir das mal zu Gemüte führen.

Was ich inzwischen entdeckt habe, ist, dass sich die IF-Befehle ja auch verschachteln lassen:

z.B.
IF *Bedingung trifft nicht zu
IF *Bedingung trifft zu ! wird dann auch nicht ausgeführt, also z.B. nichts gezeichnet...
ENDIF
ENDIF

_________________
Bilder hochladen . schöner zitieren

...wer nicht fragt bleibt dumm


ARCHICAD for Future

Freedom for colors
--------------------------------------------------
ac 8- 26 | macintosh OS 12 | win11 | neues Alφabeet


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: IF mit mehreren Bedingungen möglich?
BeitragVerfasst: 13. Mär 2023, 11:06 
Offline
Forum Veteran
Benutzeravatar

Registriert: 2. Jun 2004, 01:01
Beiträge: 2949
Wohnort: Hamburg
Letztlich ist bedingung nur eine einstellige, binäre Zahl: 0 oder 1.
Alle Vergleichsoperationen ergeben als Ergebnis aber auch nur eine solche binäre Zahl, mit der man in AC sogar rechnen kann. Was programmstilistisch nicht so schön ist, aber kompakter Code werden kann.

Code:
bedingung = (5>2) + (2<5)
text2 0,0, bedingung  ! ergibt 2


Ob es wie bei "Punkt vor Strich" in GDL auch eine Hierarchie bei dieser Art Operationen AND, OR und EXOR gibt, weiß ich nicht. Auch ob Vegleichsoperatoren dabei Priorität vor booleschen haben.

Code:
s= -0.3
text2 0, 0*s,    1 < 0 and 0 < 1
text2 0, 1*s,    1 > 0 and 0 < 1
text2 0, 2*s,    1 < 0 and 0 < 2


Die sichere Seite sind Klammern. Sie dienen auch der Übersichtlichkeit.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: IF mit mehreren Bedingungen möglich?
BeitragVerfasst: 13. Mär 2023, 15:40 
Offline
Mitglied

Registriert: 5. Aug 2022, 16:40
Beiträge: 43
Land: DE
Betriebsystem: Windows 10
@ beister: Gut zu wissen!
Aber im GDL Code würde ich das so eher nicht verwenden. Du sagst ja auch "programmstilistisch nicht so schön"

@ achmed:
beim verschachtelten Einsetzen von If solltest du das zweite if bis zum zugehörenden endif einrücken
Das macht das Ganze übersichtlicher.

Und Überblick ist notwendig, denn manchmal macht man auch einen Fehler: Beim Prüfen des Skripts meldet ArchiCAD zwar, wenn es endifs vermisst. Aber ohne Überblick über Verschachtelungen wird es schwer, rauszufinden, wo.

_________________
ArchiCAD 25 / Windows 10


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: IF mit mehreren Bedingungen möglich?
BeitragVerfasst: 21. Mär 2023, 17:43 
Offline
Forum Veteran

Registriert: 6. Sep 2012, 19:49
Beiträge: 892
Land: DE
Betriebsystem: Windows 7
Was auch flippig ist, in das Konzept der StatusCodes im GLD Handbuch um Mehreres zu schalten OHNE die ANDs und ORs (die nebenbei auch in Klammern verschachtelt werden können/müssen).

j kann 0 oder 1 sein

j1*1
j2*2
j3*4
j4*8

IF j1*1 + j2*2 = 3 THEN
...
ENDIF

STRINGs als Bedingung sind kotzlangsam.
Schau Dir die GS-Scripte an!
Dort wird im Parameter-Script grundsätzlich die STRING-Bedingung in Zahlenwerte umgeackert und auf versteckten PARAMETERN abgelegt. Damit wird dann weitergearbeitet.
Gruß

_________________
Beste Grüße
Mario
Archicad 26, WIN 10
Bild hichladen: https://forum.graphisoft.de/viewtopic.php?t=26983&f=3


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: IF mit mehreren Bedingungen möglich?
BeitragVerfasst: 23. Mär 2023, 14:49 
Offline
Mitglied

Registriert: 5. Aug 2022, 16:40
Beiträge: 43
Land: DE
Betriebsystem: Windows 10
Zitat:
Schau Dir die GS-Scripte an!
...


ein guter tipp, um alle, die mit GDL anfangen, zu entmutigen ;)

die GS Skripte sind doch eher etwas unübersichtlich, finde ich.

_________________
ArchiCAD 25 / Windows 10


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: IF mit mehreren Bedingungen möglich?
BeitragVerfasst: 29. Mär 2023, 11:01 
Offline
Forum Veteran

Registriert: 10. Apr 2004, 01:01
Beiträge: 2447
Wohnort: Südrhein-Ostbaden
Land: DE
Kann es sein, dass das so nicht funktionieren kann:

Code:
IF gs_shadow=0 AND gs_shadow_r=0 THEN SHADOW OFF, OFF
IF gs_shadow=1 AND gs_shadow_r=0 THEN SHADOW ON, OFF
IF gs_shadow=0 AND gs_shadow_r=1 THEN SHADOW OFF, ON
IF gs_shadow=1 AND gs_shadow_r=1 THEN SHADOW ON, ON


... oder liegt es vielleicht doch an was anderem – vielleicht dass die Parametereinstellungen nicht ankommen (Macro), dass sich hier der Schattenempfang nicht abstellen lässt?

_________________
Bilder hochladen . schöner zitieren

...wer nicht fragt bleibt dumm


ARCHICAD for Future

Freedom for colors
--------------------------------------------------
ac 8- 26 | macintosh OS 12 | win11 | neues Alφabeet


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: IF mit mehreren Bedingungen möglich?
BeitragVerfasst: 29. Mär 2023, 12:23 
Offline
Forum Veteran
Benutzeravatar

Registriert: 2. Jun 2004, 01:01
Beiträge: 2949
Wohnort: Hamburg
Ich vermute, dass du zwei Schalter hast, die 4 Kombinationen zulassen und deine Code reagiert auf genau diese Kombination. Wichtig ist, dass die beiden Parameter vom Typ Boolean oder zumindest Integer sind.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: IF mit mehreren Bedingungen möglich?
BeitragVerfasst: 29. Mär 2023, 12:58 
Offline
Mitglied

Registriert: 5. Aug 2022, 16:40
Beiträge: 43
Land: DE
Betriebsystem: Windows 10
Es ist ja so, dass du z.B. einem Würfel mit dem SHADOW Befehl sagen kannst, dass er einen Schatten auf andere Dinge, z.B. eine CIRCLE Fläche oder einen zweiten Würfel, werfen soll. Dem zweiten Würfel kannst Du auch sagen, dass er Schatten, der woanders herkommt - z.B. vom ersten Würfel - empfangen (damit meine ich darstellen) soll, oder nicht.

Damit kann ein Widerspruch entstehen
Die Frage ist dann, was ArchiCAD damit anstellt.
Man kann sich dafür mal ein Testfeld basteln:
Code:
circle 10: block 1,1,1: addx 1.8

SHADOW ON, ON: block 1,1,1: addx 1.3
SHADOW ON, ON: block 1,1,1: add -1.3,2,0

SHADOW ON, ON: block 1,1,1: addx 1.3
SHADOW ON, OFF: block 1,1,1: add -1.3,2,0

SHADOW ON, ON: block 1,1,1: addx 1.3
SHADOW OFF, ON: block 1,1,1: add -1.3,2,0

SHADOW ON, ON: block 1,1,1: addx 1.3
SHADOW OFF, OFF: block 1,1,1: add -1.3,2,0

del top

addx 5

SHADOW OFF, OFF: block 1,1,1: addx 1.3
SHADOW ON, ON: block 1,1,1: add -1.3,2,0

SHADOW OFF, OFF: block 1,1,1: addx 1.3
SHADOW ON, OFF: block 1,1,1: add -1.3,2,0

SHADOW OFF, OFF: block 1,1,1: addx 1.3
SHADOW OFF, ON: block 1,1,1: add -1.3,2,0

SHADOW OFF, OFF: block 1,1,1: addx 1.3
SHADOW OFF, OFF: block 1,1,1: add -1.3,2,0

del top

Beim 3D Fenster muss natürlich eine Darstellung mit Schatten gewählt werden.
Aber: So wie ich es sehe, ist die zweite Angabe bei Shadow wirkungslos

_________________
ArchiCAD 25 / Windows 10


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: IF mit mehreren Bedingungen möglich?
BeitragVerfasst: 29. Mär 2023, 13:01 
Offline
Forum Veteran

Registriert: 10. Apr 2004, 01:01
Beiträge: 2447
Wohnort: Südrhein-Ostbaden
Land: DE
Ah, es liegt gar nicht an den Bedinungen...
... sondern daran, dass sich der Schattenempfang für den Baum offenbar generell nicht abstellen lässt... auch mit direktem Befehl nicht...
Also offenbar ein ganz anderes Problem

_________________
Bilder hochladen . schöner zitieren

...wer nicht fragt bleibt dumm


ARCHICAD for Future

Freedom for colors
--------------------------------------------------
ac 8- 26 | macintosh OS 12 | win11 | neues Alφabeet


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: IF mit mehreren Bedingungen möglich?
BeitragVerfasst: 29. Mär 2023, 13:17 
Offline
Mitglied

Registriert: 5. Aug 2022, 16:40
Beiträge: 43
Land: DE
Betriebsystem: Windows 10
sieht für mich so aus.
Allerdings gibt es etliche Einstellmöglichkeiten bei den 3D Stilen; vielleicht hat der Shadow Befehl doch irgendwo eine Auswirkung, die ich nicht gesehen habe.

na egal: ich würde den zweiten Parameter weglassen; man muss sein Objekt ja nicht unnötig kompliziert machen

_________________
ArchiCAD 25 / Windows 10


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: IF mit mehreren Bedingungen möglich?
BeitragVerfasst: 29. Mär 2023, 13:28 
Offline
Forum Veteran

Registriert: 10. Apr 2004, 01:01
Beiträge: 2447
Wohnort: Südrhein-Ostbaden
Land: DE
IF-Sachen funktionieren doch :)
(Haben ja nur keine Auswirkung im 3D-Fenster, wenn man nicht im Vektor-Modus arbeitet...)

Jetzt muss ich's nur noch schaffen, dass das eigentliche Objekt das Makro-Element entsprechend steuert... das klappt derzeit noch nicht...

Warum ich das überhaupt mache?
Schatten an einem "gläserenen Baum" (damit man das Gebäude dahinter sieht...) wirken kontraproduktiv...
... und außerdem ist so was immer ja auch eine ganz gute Übung. :wink:

_________________
Bilder hochladen . schöner zitieren

...wer nicht fragt bleibt dumm


ARCHICAD for Future

Freedom for colors
--------------------------------------------------
ac 8- 26 | macintosh OS 12 | win11 | neues Alφabeet


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: IF mit mehreren Bedingungen möglich?
BeitragVerfasst: 29. Mär 2023, 14:09 
Offline
Forum Veteran

Registriert: 10. Apr 2004, 01:01
Beiträge: 2447
Wohnort: Südrhein-Ostbaden
Land: DE
Geschafft!

Bild

_________________
Bilder hochladen . schöner zitieren

...wer nicht fragt bleibt dumm


ARCHICAD for Future

Freedom for colors
--------------------------------------------------
ac 8- 26 | macintosh OS 12 | win11 | neues Alφabeet


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 15 Beiträge ] 


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 10 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu: