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

PARAMETERS und VALUES RANGE interagierend machen

misu_
Enthusiast
Hallo Forum

Ich arbeite soeben an einem Parameterskript eines Objekts, wobei mir folgendes Problem Probleme bereitet hat... ( wer hätte das gedacht 😉 )

Folgendes Szenario sollte passieren:
Ich habe drei (Länge-)Parameter. Nennen wir sie mal: A, X und Y
A soll dabei immer X +2*Y betragen während umgekehrt natürlich X immer A- 2*Y betragen soll.

Das habe ich mit diesem kleinen Codeabschnitt gelöst:
if GLOB_MODPAR_NAME = "X" then PARAMETERS	A = X + 2*Y
if GLOB_MODPAR_NAME = "A" then PARAMETERS X = A - 2*Y

Das funktioniert alleinstehend auch ohne Problem. Jedoch, gibt es gewisse Begrenzungen, welche die Werte A und X einhalten müssen. Dazu wollte ich folgender Code zu Nutzen machen:
! Y = 0.05

VALUES "A" 1.5, 1.8, 2.5, RANGE [0.75, 3]
VALUES "X" 1.4, 1.7, 2.4, RANGE [0.65, 2.8] ! X-Werte sind immer 2*Y kleiner als A-Werte

Dies funktioniert alleinstehen genau so gut, wie der vorherige Codeabschnitt auch schon, jedoch will Ersterer auf keinen Fall mit dem zweiten Abschnitt zusammenarbeiten.
Sobald einer der beiden Werte bearbeitet wird, springen beide auf die selbe Zahl. Egal wie herum ich den Code ablaufen lasse.
ZB. die X-Werte im VALUES zu parametrisieren erlaubt einem GDL ja nicht 😞 und eine andere Möglichkeit finde ich irgendwie auch nicht.

Wenn jemand diesen Fall kennt und/oder eine Lösung weiss, freue ich mich natürlich sehr darüber. Danke schon im Voraus für eure Vorschläge.
schweizer Grüsse - misu

ArchiCad 21-27 voll, CH / Win11, Intel® Xeon® W 2223, NVIDIA Quadro P2200
4 ANTWORTEN 4
Anonymous
Nicht anwendbar
Bei mir läuft es wie folgt:
VALUES "A" 1.5, 1.8, 2.5, RANGE [0.75, 3]
VALUES "X" 1.4, 1.7, 2.4, RANGE [0.65, 2.8] ! X-Werte sind immer 2*Y kleiner als A-Werte

if GLOB_MODPAR_NAME = "X" then
A = X + 2*Y
PARAMETERS A = A
ENDIF

if GLOB_MODPAR_NAME = "A" then
X = A - 2*Y
PARAMETERS X = X
ENDIF
misu_
Enthusiast
Ja so scheint es zu funktionieren. Danke

Darf ich noch fragen weshalb dies so geht bzw. was mein Überlegungsfehler war?
Und ist es echt möglich, Y auch noch zu parametrisieren, so dass sich Values von X anpasst...?
schweizer Grüsse - misu

ArchiCad 21-27 voll, CH / Win11, Intel® Xeon® W 2223, NVIDIA Quadro P2200
Anonymous
Nicht anwendbar
Die Values-Befehle sollten zuerst kommen, da diese ja von den Parameters-Befehlen "überschrieben" werden sollen.
Es geht auch so:
VALUES "A" 1.5, 1.8, 2.5, RANGE [0.75, 3]
VALUES "X" 1.4, 1.7, 2.4, RANGE [0.65, 2.8] ! X-Werte sind immer 2*Y kleiner als A-Werte

if GLOB_MODPAR_NAME = "X" then PARAMETERS A = X + 2*Y
if GLOB_MODPAR_NAME = "A" then PARAMETERS X = A - 2*Y
misu_
Enthusiast
Okay, gut zu wissen... Als ich mit der Reihenfolge herumspielte hat es irgendwie trotzdem nicht funktioniert. Aber es funktioniert ja nun. 😄
schweizer Grüsse - misu

ArchiCad 21-27 voll, CH / Win11, Intel® Xeon® W 2223, NVIDIA Quadro P2200