Aktuelle Zeit: 28. Jul 2017, 10:54
Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Request-Befehle in alten Archicad Objekten.
BeitragVerfasst: 24. Apr 2017, 13:50 
Offline
Forum Veteran

Registriert: 4. Nov 2004, 02:01
Beiträge: 514
Wohnort: Graz
Land: AT
Betriebsystem: Windows 10
Gemäß http://gdl.graphisoft.com/reference-guide/request-options
entfallen offenbar Stück für Stück diverse Request-Befehle?!

1.) Wie geht man / geht ihr daher mit diversen Objekten um, die diese Befehle beinhalten?
2.) Sind diese umzuprogrammieren, und wenn ja wie? (Gibt es alternative Befehle?)

P.S.: Was tun mit Objekten die in alten Projekten eingebettet sind, da bleibt die Kompatibilität dann auf der Strecke?!

_________________
ArchiCAD 21 aut full, Archiphysik 14, Win 10 64-bit


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Request-Befehle in alten Archicad Objekten.
BeitragVerfasst: 24. Apr 2017, 14:36 
Offline
Forum Veteran
Benutzeravatar

Registriert: 2. Jun 2004, 01:01
Beiträge: 1777
Wohnort: Hamburg
Zitat:
if used in parameter script

Ebenda und auch im Master Skript nict mehr verwenden.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Request-Befehle in alten Archicad Objekten.
BeitragVerfasst: 24. Apr 2017, 16:10 
Offline
Forum Veteran

Registriert: 4. Nov 2004, 02:01
Beiträge: 514
Wohnort: Graz
Land: AT
Betriebsystem: Windows 10
Ok, (bei neuen Objekten und im Parameter-Skript) nicht mehr verwenden...
Was aber tun mit alten Objekten?

Hab' unter anderem auch mit der Glob_Context-Variable in einigen meiner Objekte zu kämpfen: Sind die alle umzuprogrammieren (-sofern möglich)?
Zudem kommt diesbezüglich ja keine Meldung, sondern merkt erst ind er Anwendung, dass diese nicht mehr (ganz) so funktionieren.

Konkret zur oben erwähnten Glob_Context-Variable, welchen Roundabout gibt es da?

Danke

_________________
ArchiCAD 21 aut full, Archiphysik 14, Win 10 64-bit


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Request-Befehle in alten Archicad Objekten.
BeitragVerfasst: 24. Apr 2017, 17:21 
Offline
Forum Veteran
Benutzeravatar

Registriert: 2. Jun 2004, 01:01
Beiträge: 1777
Wohnort: Hamburg
Zitat:
Was aber tun mit alten Objekten?

Hab' unter anderem auch mit der Glob_Context-Variable in einigen meiner Objekte zu kämpfen: Sind die alle umzuprogrammieren (-sofern möglich)?
Ja.
Wie man aus Deiner Tabelle sieht, zeichnet sich die Problematik seit drei Jahren ab, kommt also nicht überraschend.
Das gibt keinen globalen Workaround. Das hängt von dem Einsatzbereich in dem Objekt ab.
Du kannst schon 90% fixen, wenn du alles, was nicht im Masterskript stehen MUSS in die übrigen verlagerst. Wann brauchst Du denn GLOB_CONTEXT im Parameter Skript?

[Objekte sind nun mal Programme. Und bei mir laufen Objekte mit 20 Jahre altem Quellcode auf der aktuellen Version. Da finde ich nicht, dass man sich beklagen kann, wenn GS mal aus Geschwindigkeitsgründen (!) alte Zöpfe "abschneidet". ich sag mal "A20 Gate", wem das noch was sagt.]


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Request-Befehle in alten Archicad Objekten.
BeitragVerfasst: 19. Jun 2017, 10:08 
Offline
Forum Veteran

Registriert: 4. Nov 2004, 02:01
Beiträge: 514
Wohnort: Graz
Land: AT
Betriebsystem: Windows 10
Liebe GDL-Profis,
Wie oben erwähnt, muß ich meine Objekte umprogrammieren.
Wie kann ich folgenden Skriptaufbau nun ändern:
.) im UI-Script:
Code:
ui_button ui_function, "^",0,20,16,13,101

.) im Parameter-Script:
Code:
if GLOB_CONTEXT=5 AND glob_ui_button_id = 101 THEN
PARAMETERS bez1=bez2, bez2=bez1
endif
glob_ui_button_id=0


Wenn ich also den Knopf drücke, sollen die Parameter bez1 und bez2 ausgetauscht werden.

_________________
ArchiCAD 21 aut full, Archiphysik 14, Win 10 64-bit


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Request-Befehle in alten Archicad Objekten.
BeitragVerfasst: 19. Jun 2017, 13:50 
Offline
Forum Veteran

Registriert: 4. Nov 2004, 02:01
Beiträge: 514
Wohnort: Graz
Land: AT
Betriebsystem: Windows 10
Dieses Problem ist schon gelöst. (Einfach GLOB_CONTEXT=5 weglassen)

_________________
ArchiCAD 21 aut full, Archiphysik 14, Win 10 64-bit


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Request-Befehle in alten Archicad Objekten.
BeitragVerfasst: 19. Jun 2017, 14:35 
Offline
Forum Veteran

Registriert: 4. Nov 2004, 02:01
Beiträge: 514
Wohnort: Graz
Land: AT
Betriebsystem: Windows 10
Für alle dies interessiert: Für Glob_Context habe ich als "Ersatz" Glob_View_Type gefunden:
http://gdl.graphisoft.com/gdl-style-guide/general-scripting-issues#GDLExecutionContext_section

_________________
ArchiCAD 21 aut full, Archiphysik 14, Win 10 64-bit


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Request-Befehle in alten Archicad Objekten.
BeitragVerfasst: 19. Jun 2017, 14:41 
Offline
Forum Veteran

Registriert: 23. Sep 2002, 01:01
Beiträge: 1971
Ein Blick ins GDL-Handbuch sagt uns:

GLOB_VIEW_TYPE - Typ der aktuellen Sicht - (sichtenabhängig, nicht im Parameter-Script verwenden)

Es ght nicht darum andere Parameter zu verwenden, sondern schlicht keine kontextabhängigen Strukturen im Parameter Skript zu verwenden. Das geht auch mit teilweise etwas mehr Aufwand.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Request-Befehle in alten Archicad Objekten.
BeitragVerfasst: 19. Jun 2017, 15:51 
Offline
Forum Veteran

Registriert: 4. Nov 2004, 02:01
Beiträge: 514
Wohnort: Graz
Land: AT
Betriebsystem: Windows 10
@kontextabhängige Strukturen:
Wieso soll ich im Master- (oder auch im Parameter) Skript nicht auf das UI-Skript oder auf die graphische Eingabe reagieren können?
("Wenn Eingabe im UI-Skript, dann tu das, und wenn graphisch dann das, und wenn...")
Leider sind - bestehende Objekte (bei mir) in der Eingabe - manchmal genau davon abhängig.


Beispiel (bitte mir gerne alternative Lösungsvorschläge zu schicken):
Eine Leitung von A nach B, (B ist "tiefer" als A) mit Ausgabe der Leitungsneigung und der Tiefendifferenz.

.)Im Grundriss ist diese als Abwicklung (im Seitenriss) dargestellt und die Tiefe kann graphisch editiert werden. -> Umrechnung zur Angabe der Neigung
.)Im UI-Skript wird dagegen die Neigung der Leitung eingegeben -> Umrechnung zur Angabe der Tiefe.
-> d.h. das Master-/Parameterskript muß wissen, in welchem Skript gerade gearbeitet wird?! (Ich kann ja in den anderen Skripts keine Parameter zuweisen)

_________________
ArchiCAD 21 aut full, Archiphysik 14, Win 10 64-bit


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Request-Befehle in alten Archicad Objekten.
BeitragVerfasst: 19. Jun 2017, 16:26 
Offline
Forum Veteran

Registriert: 23. Sep 2002, 01:01
Beiträge: 1971
Zitat:
Wieso soll ich im Master- (oder auch im Parameter) Skript nicht auf das UI-Skript oder auf die graphische Eingabe reagieren können?


Weil du nicht auf Skripte reagieren kannst, sondern nur auf Parameter, die einen bestimmten Wert haben. Sind die Skripte abgearbeitet haben sie in ihrem Kontext was bewirkt. Und das User Interface Skript hat nun mal keine Auswirkung auf die Parameter, sondern das Parameter-Skript das sofort ausgeführt wird, sobald Du eine Eingabe im UI oder Parametertabelle gemacht hast.

Das Master ist dafür da, dass Du dort Teile unterbringst, die alle Skripte betreffen. Z.B. die Berechnung der Neigung einer Leitung. Aber das Zuweisen (PARAMETERS neig=neig) dieser berechneten Neigung gehört ins Parameters Skript. Die Abfrage, ob Du im Parameter-Skript bist und das dann im Master unterzubringen ist ohnehin witzlos, da NUR im Parameter-Skript-Kontext der Befehl PARAMETERS etwas bewirkt. In allen anderen kontexten wird der ignoriert. Dann kannst Du die Zeile gleich ins Parameter Skript packen.

Selbst wenn Du Skriptteile hast, die in mehreren Skripten benötigt werden, du diese aber in einem speziellen Kontext nicht verwenden willst, ist das ohne GLOB_CONTEXT und ohne Redundanz lösbar:

MASTER:
Code:
x = A
y = zzyzx

GOTO "masterend"

! --------------------------
! SUBS

"calcNeigung":
neig = y/x
RETURN

! --------------------------
"masterend":


2D-Skript:
Code:
GOSUB "calcNeigung"
text2 0,0,neig


3D-Skript:
Code:
GOSUB "calcNeigung"
LIN_ 0,0,0, 1,0,0
ROTy neig
LIN_ 0,0,0, 1,0,0


Parameter-Skript:
Code:
IF GLOB_MODPAR_NAME = "neig" THEN
  zzyzx = A * TAN(neig)
  PARAMETERS zzyzx = zzyzx
  ENDIF


AC ist es nämlich egal, wo das Unterprogramm steht. Zur Ausführung des Skripts wird Master- und Kontext-Skript quasi wie zu einem zusammengefügt. Nur musst Du natürlich die Ausführung erstmal umgehen, indem Du den Teil überspringst. Stilistisch nicht der Bringer, aber mitunter besser als mit Makros anzufangen.

[Das Beispiel oben ist nicht das sinnvollste, erklärt aber das Prinzip]

Im UI gibt es auch nicht solche Beschränkungen wie im Parameter Skript. Poste mal genau die Skripte und ich zeige Dir, dass das problemlos geht.

Wenn Du anfängst für jeden Kontext die Programmierung separat zu betrachten und das Master zu entschlacken, entwirrt sich das Ganze.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Request-Befehle in alten Archicad Objekten.
BeitragVerfasst: 20. Jun 2017, 08:19 
Offline
Forum Veteran

Registriert: 4. Nov 2004, 02:01
Beiträge: 514
Wohnort: Graz
Land: AT
Betriebsystem: Windows 10
Lieber Lars,

Herzlichen Dank für deine Aufklärung!
Allein die Tatsache, daß es möglich ist von einem Script (z.B. 2d) ins Master (...) zu springen (über gosub) war mir noch unbekannt, und hilft ungemein.

Auch der Parameter GLOB_MODPAR_NAME war mir bisher entgangen. (Bisher hab ich abhängige Parameter gerades deshalb in verschiedene Skripts oder Unterseiten gepackt - etwas umständlich aber es hat funktioniert ;) )

Da ich nur nebenbei mal nur hin und wieder schnell ein kleines Hilfs-Objekt baue - wenn ich es benötige um das Zeichnen zu erleichtern - sind bei mir diese sicher nie "sauber" oder gar schlank programmiert.

_________________
ArchiCAD 21 aut full, Archiphysik 14, Win 10 64-bit


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Request-Befehle in alten Archicad Objekten.
BeitragVerfasst: 20. Jun 2017, 09:29 
Offline
Forum Veteran

Registriert: 23. Sep 2002, 01:01
Beiträge: 1971
Das Beispiel sieht optimal so aus:

Master-Skript:
Code:
! Kein Inhalt

2D-Skript:
Code:
text2 0,0,neig

3D-Skript:
Code:
LIN_ 0,0,0, 1,0,0
ROTy neig
LIN_ 0,0,0, 1,0,0

Parameter-Skript:
Code:
IF GLOB_MODPAR_NAME = "neig" THEN
  zzyzx = A * TAN(neig)
  PARAMETERS zzyzx = zzyzx
  ELSE
  PARAMETERS neig = ATN(zzyzx/A)
  ENDIF

Mehr braucht es nicht. Werden 2D und 3D abgearbeitet ist der Parameter neig schon längstens, wahrscheinlich schon mehrfach aktualisiert worden. Da musst du ihn vorher nicht nochmal berechnen.

[Achtung: GLOB_MODPAR_NAME ist case sensitive! Das ist eine böse Falle.]


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Request-Befehle in alten Archicad Objekten.
BeitragVerfasst: 26. Jun 2017, 14:16 
Offline
Forum Veteran

Registriert: 4. Nov 2004, 02:01
Beiträge: 514
Wohnort: Graz
Land: AT
Betriebsystem: Windows 10
Danke!

_________________
ArchiCAD 21 aut full, Archiphysik 14, Win 10 64-bit


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 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: