Hallo,
ich habe ein verzwicktes Problem, bei dem selbst der Workaround eine Frage mit sich bringt.
Mein momentaner Stand:
Ich habe ein SmartPart mit zählbaren Sub-Objekten. Dieses und die Sub-Objekte haben alle einen Höhenbezug eingestellt.
An sich funktioniert das SmartPart, aber wenn ich im Dialog Fenster bin um einige Einstellungen zu ändern, bekomme ich Anzeige Fehler, die die Anpassung der Einstellung deutlich erschweren.
Fehler die aufkommen, während das Dialog-Fenster offen ist:
- Die Unterobjekte rechnen ihren Höhenbezug zum Boden auf den Initialisierungspunkt drauf. Dadurch erreichen sie die doppelte Höhe zum Boden.
- 2D-Symbole die ich programmiert habe, verlieren ihre eingerichtete Position. Zum Beispiel habe ich im Sub-Objekt einen TRANS2 Befehl gegeben und dann einen Kreis erstellt. Dieser ist auch in der Endfassung an der richtigen Stelle, wenn ich aber gerade das Dialogfenster offen habe, ist der Kreis um den Initialisierungspunkt herum erstellt worden.
Sobald ich aber das Dialog-Fenster schließe(auch wenn ich Einstellungen verändert habe), wird das SmartPart wieder sauber angezeigt.
Unschöner Workaround(unfertig):
Ein Workaround Gedanke von mir war es, den Code vom Sub-Objekt im Main-Programm ebenfalls abzuspeichern. Diese soll laufen, wenn das Dialog-Script ausgeführt wird.
Mein erster Anlauf dafür war es, das auszuführende Script mittels "GLOB_SCRIPT_TYPE" zu erkennen und den eigenen Parameter "dialog_script" auf true zu stellen. Dieser Parameter triggert dann das Intern abgespeicherte Sub-Script, wenn das 3D-Script durchlaufen wird. Am Ende des 3D-Scripts wird dann der Parameter wieder auf false gestellt. Dadurch sollte bei einem ausführen des 3D-Scripts, nachdem das Dialog-Fenster geschlossen wurde, wieder auf das externe Sub-Script zugegriffen werden, damit am Ende auch wirklich einzelne Objekte erstellt werden, neben dem Main-Objekt.
Anmerkung: Ich mache bisher alle PARAMETERS Befehle nur im Parameter-Script und lasse sie durch "GLOB_MODPAR_NAME Abfragen" ausführen.
Momentan tüftle ich noch am Workaround, weil mir keine andere Lösung bisher eingefallen ist zu den zwei Problemen, aber vielleicht kann mir jemand dazu helfen?
Ich bin mir aber auch nicht ganz sicher, ob mein Workaround so in der Theorie und Praxis funktionieren kann. Falls dazu jemand noch Bedenken hat, kann er sie gerne äußern.
Vielen Dank schonmal im Voraus!