Allplan Fórum

[Otázka] I_DIALOG und GLOB_MODPAR_NAME [Vyřešeno]

Tagy:
  • Smartparts
  • Fehler
  • Dialog
  • Parameter
  • Plugin-Download

Hallo.

Ich möchte meinen SmartPart so gestalten, dass zu Beginn IMMER eine Bezeichnung zugewiesen werden muss (auch nach jedem öffnen), bevor weiter gearbeitet wird.

Mein Gedanke war folgender:
-Ich habe einen Parameter mit dem Namen "ic" vom Typen "Binärzahl" erstellt - zu Beginn ist dieser Parameter auf 0 geschalten.
-Meine Eingabepalette ist so gestaltet, dass wenn ic = 0 ist keine anderen Steuerelemente oder HANDLES AUSSER meiner Bezeichnung erscheinen.
-Wurde die Bezeichnung modifiziert, will ich im Parameter Skript darauf reagieren mit:
IF GLOB_MODPAR_NAME = "..." THEN
ic = 1
PARAMETERS ic = ic
ENDIF
-Beim Schließen des SmartParts soll der Wert von ic wieder auf 0 gesetzt werden. Dazu steht im 3D-Skript:
IF PREV_MODE = 0 THEN
ic = 0
PARAMETERS ic = ic
ENDIF

Funktioniert soweit so gut. Wenn ich jedoch nun einen HANDLE modifiziere, wird der Parameter ic wieder auf 0 zurückgesetzt! Durch ein bisschen testen hab ich herausgefunden, dass dies nur passiert, wenn man mit I_DIALOG arbeitet. Wenn meine Eingabemaske auf I_PALETTE basiert funktioniert es!

Woran könnte das liegen? Geht das nur mit I_PALETTE oder habe ich etwas falsch gemacht?
Schon mal Danke im Voraus!

Show solution Hide solution

Eine solche Abhängigkeit existiert nicht!
Einem Handle ist es egal, ob ein Dialog oder eine Palette aktiv ist.
Wann ist (im 3D-Script) die Bedingung PREV_MODE=0 erfüllt?
1. Wenn die SmartPart-Geometrie final erzeugt werden soll
2. Wenn das Script im Script-Editor gestartet wird
3. Wenn auschliesslich die Griffe (Griffpositionen) erzeugt werden sollen
und die Preview-Geometrie schon erzeugt wurde

Es könnte sein, dass genau dieser 3. Fall mit Deinem SmartPart nur mit I_DIALOG eintritt.
Ohne das SmartPart zu sehen kann man dazu jeddoch nichts weiter sagen!

Frage: Wenn es mit I_PALETTE funktioniert, warum benutzt Du dann nicht I_PALETTE?

I_DIALOG sollte man wegen der damit verbundenen Nachteile sowieso nicht (mehr) benutzen.

Eine solche Abhängigkeit existiert nicht!
Einem Handle ist es egal, ob ein Dialog oder eine Palette aktiv ist.
Wann ist (im 3D-Script) die Bedingung PREV_MODE=0 erfüllt?
1. Wenn die SmartPart-Geometrie final erzeugt werden soll
2. Wenn das Script im Script-Editor gestartet wird
3. Wenn auschliesslich die Griffe (Griffpositionen) erzeugt werden sollen
und die Preview-Geometrie schon erzeugt wurde

Es könnte sein, dass genau dieser 3. Fall mit Deinem SmartPart nur mit I_DIALOG eintritt.
Ohne das SmartPart zu sehen kann man dazu jeddoch nichts weiter sagen!

Frage: Wenn es mit I_PALETTE funktioniert, warum benutzt Du dann nicht I_PALETTE?

I_DIALOG sollte man wegen der damit verbundenen Nachteile sowieso nicht (mehr) benutzen.

Alles klar danke.
Es scheint wirklich an Punkt 3 zu scheitern...

Mir hätte die Lösung mit dem I_DIALOG gut gefallen, da ich alle Steuerelemente ja "freier" platzieren kann und nicht an den Layoutmanager der I_PALETTE gebunden bin. Dann werde ich mich wohl mit der Palette zufrieden geben müssen. Danke für die Erklärung!