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

Öffnungslinien über MDO steuerbar - wie?

snow
Moderator
Hallo zusammen,

das wäre halt jetzt doch noch schön, wenn sich das in meine Tür einbauen ließe...
...sowohl für das Symbol im Grundriss als auch projiziert.

Scheint nicht ganz so einfach zu sein.
Ja, LIBRARYGLOBAL ... soweit bin ich gekommen...

... aber wie man das jetzt mit den Öffnungslinien zusammenbringen kann, erschließt sich mir noch nicht

Schönes Wochenende euch!
Archicad For Future F R E E D O M for-COLORS
______________________________________

archicad versions 8-27 | mac os 13 | win 10
25 ANTWORTEN 25
success = LIBRARYGLOBAL ("LibraryGlobals13", "W_showBOpLine2D", _AUFSCHL2D)

succes - ist nicht relevant

LibraryGlobals13 ist das gs, welches sich in die Modelldarstellung schreibt...hier findest Du (fast) alle Parameter die du abfragen kannst

W_showBOpLine2D ist ein hinterlegter Paramter (Beispiel)

Nach dem Komma steht der Wert dessen Namen du aussuchst und auf welchen du die Abfrage stellst

Lies Dir mit dieser Angabe mal mein Beispiel durch
Mac OSX - up to date

GER Archicad Full, Up to date
Frank Beister
Moderator
Vergiss mal, was da in der Parameterliste deines Objektes als Header steht. Das ist Blödsinn.

Ein Platzhalter = eine Variable = ein Parameter (*)

Eine Variable hat einen Namen (Bezeichner) und hat einen Wert/Inhalt eines gewissen Typs.

Was da im Header unter Name steht muss BESCHREIBUNG heißen und ist völlig irrelevant im GDL Script. Da hast du nirgendwo Zugriff drauf oder wird verwendet. Wo Variable steht müsste NAME stehen.

Ansonsten kann ich dir hier nur reinkopieren, was auf selfgdl geschrieben habe. Prägnanter geht es nicht.

Idealerweise wird variable vor dem Abruf schon einmal mit dem richtigen Typ initialisiert:

variable = ""

oder
variable = 0


P.S: success ist insofern relevant, weil du daran prüfen kannst, ob der Abruf des Parameters erfolgreich war und ggf. darauf reagieren kannst.
---

(*) Die Unterscheidung Variable und Parameter, die ich neulich meinte ist auf selfgdl (hoffentlich) konsequent, aber keine offizielle. Der Hintergrund:

Die Parameter in der Parameterliste eines Objektes werden mit dem platzierten Objekt im Projekt abgespeichert.

Wenn ein GDL Skript ausgeführt wird, wird eine neue, eigene Liste von Variablen (die auch im Skript neu eingeführt werden können) temporär und nur für diesen Skriptdurchlauf angelegt. Dazu werden alle Parameter (!) der Liste mit ihren gespeicherten Werten als Variablen zu Beginn des Skriptdurchlaufes angelegt . Alle (!) Variablen kann ich im Skript beliebig verändern. Auf den ursprünglichen Inhalt aus der gespeicherten Liste habe ich aber nach der Veränderung keinen Zugriff mehr.

Auf selfgdl habe ich das auch irgendwo noch ausführlicher beschrieben.
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
Frank Beister
Moderator
Vielleicht hilft auch das:
Eine Variable ist ein Platzhalter wie in der Mathematik. Eine Schublade in einem Speicherschrank. Die Schublade hat einen Namen und einen Inhalt (=Wert). Wenn du einen Inhalt abfragen willst musst du doch nach der Schublade (=Namen) fragen und nicht nach dem Inhalt (=Wert). Und du musst angeben, wo das Ergebnis dann abgelegt werden soll (=variable)
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
@lukaso

Das sieht doch so aus:



Nach dem wäre der Wert doch 'Aus' oder 'An'...
... aber bei dir steht _AUFSCHL2D.

Und das ist das, was ich nicht begreife: Wo wird das definiert?
Archicad For Future F R E E D O M for-COLORS
______________________________________

archicad versions 8-27 | mac os 13 | win 10
runxel
Legend
Achmed, es wurde in diesem Thread schon alles gesagt (nur noch nicht von jedem).
Lukas hat das superduper gut beschrieben:
> Nach dem Komma steht der Wert dessen Namen du aussuchst …

Also, zum mitmeißeln: Du könntest dort was auch immer reinschreiben; das ist einfach nur der Name der Variable ("Schublade"), unter dem du den abgefragten Wert – das ist das zweite da in Anführungszeichen – ablegst.
Lucas Becker | AC 27 on Mac | Author of Runxel's Archicad Wiki | Editor at SelfGDL | Developer of the GDL plugin for Sublime Text | My List of AC shortcomings & bugs | I Will Piledrive You If You Mention AI Again |

POSIWID – The Purpose Of a System Is What It Does /// «Furthermore, I consider that Carth... yearly releases must be destroyed»
Frank Beister
Moderator
Deswegen ist es so wichtig, dass man die Dinge so konsequent richtig benennt:
Nicht
Nach dem Komma steht der Wert dessen Namen du aussuchst

sondern
Nach dem Komma steht als Argument der Name des Parameters dessen Wert du (aus)suchst


Aber dein Problem scheint beim letzten Argument zu liegen:

Normalerweise erfolgt die Zuweisung von Werten (=Inhalt) zu Variablen (=Schubladen, wir erinnern uns) über
variable = wert

Bei LIBRARYGLOBAL erfolgt das anders:

Das ist eine Funktion (wie ein Unterprogramm), das mehrere Aktionen ausführt:
- MVO-Objekt suchen + öffnen
- Einen Parameter in der Liste suchen
- Wert dieses Parameters im aktuellen Projekt raussuchen und in einer Variablen ablegen

Als Argumente sind genau die drei Sachen anzugeben, die die Funktion für die Ausführung benötigt. Und eben als letztes auch in welcher Variablen (deines aufrufenden GDL Skriptes) der ermittelte Wert abgelegt werden soll. Das Ergebnis ist, als würdest du
_AUFSCHL2D = Wert

schreiben. _AUFSCHL2D hat NICHTS mit dem MVO-Objekt zu tun. Das ist für dein GDL-Skript, damit du das Ergebnis verwerten kannst.

[Natürlich könnte die Funktion auch so funktionieren, dass sie als Ergebnis den Wert liefert,
_AUFSCHL2D = LIBRARYGLOBAL()

wie z.B. bei SIN() oder COS(). Dann aber hättest du keine Möglichkeit den ERFOLG der Abfrage zu kontrollieren, was durchaus wichtig ist, weil sonst ggf. Skriptfehler auftauchen. Das ist aber Theorie, weil LIBRARYGLOBAL eben nicht so funktioniert. Das Ergebnis, der Rückgabewert der Funktion ist eben ein BOOLEAN über die Erfolgreiche Ausführung und die Funktion macht die Wertzuweisung an deine Zielvariable eigenständig, sozusagen intern. REQUEST funktioniert übrigens ebenso.]
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
Frank Beister
Moderator
So, ich reiße mich jetzt zusammen und erkläre das nicht nochmal, denn I can..
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
Frank du bist zu nett.

Und das T-Shirt ist bestellt.
Mac OSX - up to date

GER Archicad Full, Up to date
snow
Moderator
Mit meiner Dummheit bring' ich ja vielleicht so manche Inkonsequenz bzgl. Begrifflichkeiten zu Tage.
Wenn ich gar nicht wüsste, wie mit Parameter umzugehen sind, hätte ich wahrscheinlich noch kein einziges Objekt erfolgreich geschrieben... nur wenn was nicht funktioniert, bin ich mir halt nicht sicher, ob ich verstanden habe, was wirklich gemeint ist.

Wen man weiß, wie alles "es funktioniert", dann ist halt klarer was gemeint ist.
Ich hab derzeit halt nur meine einfache Logik zur Verfügung und nicht die eines jemanden, der im Nebenfach Informatik belegt hat... Vielleicht stirbt GDL ja auch eines Tages, weil keiner neu lernen kann wie's geht... oder ich bin halt einfach nur zu dumm für so etwas.
> Nach dem Komma steht der Wert dessen Namen du aussuchst …
Dass Werte durch Kommas getrennt werden, weiß ich inzwischen... und welches Komma gemeint ist, denke ich auch zu wissen 🙄

Also, zum mitmeißeln: Du könntest dort was auch immer reinschreiben; das ist einfach nur der Name der Variable ("Schublade"), unter dem du den abgefragten Wert – das ist das zweite da in Anführungszeichen – ablegst.

Hier ist jetzt offenbar wieder alles durcheinander geworfen... aber egal, dass ist ja nicht (mehr) mein Problem...

...und ja, natürlich kann ich immer und überall reinschreiben was ich will... nur wenn das nirgends "gefunden wird" funktioniert natürlich nichts... was mir dann in diesem Fall auch durch eine Fehlermeldung im Script vorhergesagt wird.

Und, auch wenn ich hier so frech schreibe, vielleicht wäre es doch noch möglich, konkret auf meine letzte Frage einzugehen.

... Ah, wurde inzwischen gemacht. Danke schon mal! Ich weiß schon, manchmal, vielleicht auch immer, ist's mühselig mit mir...
Archicad For Future F R E E D O M for-COLORS
______________________________________

archicad versions 8-27 | mac os 13 | win 10
snow
Moderator
Tut mir leid. Ich begreif' das einfach nicht.

Um keinen weiter mit meiner Fragerei zu nerven und auch um mir selbst Aufwand und Ärger zu ersparen, werde ich das Forum wohl verlassen... zumindest diesen Bereich werde ich, denke ich, nicht mehr betreten.

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

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

Keine Antwort gefunden?

Andere Beiträge
im Board ansehen

Zurück zum Board

Neueste Lösungen durchsuchen

Akzeptierte Lösungen zeigen

Eine neue Diskussion starten!

Neues Thema erstellen