| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Creo |
| |
 | HPE ProLiant Summer Academy 2025 in Linz, eine Veranstaltung am 11.09.2025
|
Autor
|
Thema: Probleme mit Dialog-Variable (1064 mal gelesen)
|
rmcc1980 Mitglied Ingenieur
 
 Beiträge: 358 Registriert: 06.06.2003 Drafting 18.1 Modeling 18.1 MM Win7 64
|
erstellt am: 26. Jul. 2005 10:29 <-- editieren / zitieren --> Unities abgeben:         
Hallo, in einem Dialog möchte ich einen Teilenamen einlesen. Dabei soll es egal sein, woher die Eingabe kommt. Man kann ein Teil in der Strukturliste oder im Modell anklicken oder direkt den Namen eingeben. Dabei möchte ich auf 'persistent-data-storage t' auf keinen Fall verzichten. Mit ':value-type :string' geht das im Prinzip, aber wenn ich ein Teil im Modell anklicke gibt es eine Fehlermeldung (da kommt wohl kein String sondern ein Teil). Nehme ich stattdessen ' :part' kann ich persistent-data-storage nicht benutzen. Wie kriege ich beides hin? Schöne Grüße Bernd [Diese Nachricht wurde von rmcc1980 am 26. Jul. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorothea Mitglied
 
 Beiträge: 242 Registriert: 22.11.2001
|
erstellt am: 26. Jul. 2005 11:31 <-- editieren / zitieren --> Unities abgeben:          Nur für rmcc1980
Hallo, Prinzipiell ist es keine gute Idee, fuer alle Arten von Variablen, die Objekte im Designer referenzieren, das persistent-data-storage zu verwenden. Wie es auch in der Doku steht: The following kinds of variables should not use persistent data storage: * selection variables (because they contain sel_items) Der Grund dafuer ist einfach: fuer Zahlen und Boolean u.s.w. sind die gespeicherten Werte unabhaengig vom aktuellen Modellzustand. Fuer alle Arten von Selektion nicht. Du koenntest dir vielleicht selber was basteln. Das Teil wird weiterhin mit :value-type art spezifiziert. Damit erhaeltst du die Moeglichkeiten der Auswahl ueber Browser oder Pick. Dann baust du dir eine zusaetzliche Hilfs-Variable vom :value-type :string (moeglicherweise hidden). In :after-input von der Teil-Variable setzt du den Wert der Hilfsvariable auf (sd-inq-obj-pathname <Teil-Variable> ). Wenn der Dialog dann neu gestartet wird, dann gibt es den PDS-Wert fuer die Hilfsvariable. Diesen Wert kannst du dann auswerten und checken, ob wirklich ein Teil mit dem String referenziert wird (sd-pathname-to-obj). Wenn da ein sel_item zurueck kommt, dann setze den Wert der Teil-Variablen. Hoffe das hilft! Gruss Dorothea Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rmcc1980 Mitglied Ingenieur
 
 Beiträge: 358 Registriert: 06.06.2003 Drafting 18.1 Modeling 18.1 MM Win7 64
|
erstellt am: 26. Jul. 2005 12:24 <-- editieren / zitieren --> Unities abgeben:         
Zitat: Original erstellt von Dorothea: ... Prinzipiell ist es keine gute Idee, fuer alle Arten von Variablen, die Objekte im Designer referenzieren, das persistent-data-storage zu verwenden...
Hallo, das ist verständlich, aber ich will ja an dieser Stelle nicht das Teil, sondern nur den Namen des Teils. Mittlerweile helfe ich mir so, dass ich eine weitere Dialog-Variable 'von_teil' verwende wenn ich ein Teil im Modell anklicken will und den gefundenen Namen der Stringvariablen zuweise. Jetzt ist aber ein anderes Problem aufgetaucht. In einer weiteren Variable lese ich mit 'value-type :part-assembly' einen Baugruppennamen ein. Wenn ich den Dialog erneut aufrufe, enthält diese Variable plötzlich den Namen (mit Pfad) des neu erzeugten Teils. Wie kommt denn das? Kriegt man das weg? Schöne Grüße Bernd p.s. Mit 'value-type :assembly' passiert das nicht, aber bei mehrstufigen Strukturen kommt dann ein Hilfsdialog, der unter HPUX etwas merkwürdig läuft. Mein Ziel ist eigentlich ein Dialog in dem es egal ist, was der User anklickt und das System das passende raussucht und nicht mit Fehlermeldungen nervt. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RainerH Mitglied Techn. Ang. (Konstruktion)
  
 Beiträge: 736 Registriert: 22.01.2003 OSDM 14.00A OSDD 14.50 MM 14.00A Windows-XP Pro x64 Edition -------------------------- HP xw6400 Intel Xeon 3.00 GHz 4.00 GB RAM ATI FireGL V7200
|
erstellt am: 26. Jul. 2005 13:35 <-- editieren / zitieren --> Unities abgeben:          Nur für rmcc1980
@Bernd Hast du dir den Ablauf vielleicht so vorgestellt: ;;--------------------------------------------------------------------------* ;; Dateiname: he_create_part.lsp ;; Version : 1.0 ;; Datum : ;; Author : B. Alef; Hennecke GmbH ;;--------------------------------------------------------------------------* (in-package :custom) (use-package :oLI)
;;--------------------------------------------------------------------------* ;; dialogs * ;;--------------------------------------------------------------------------* (sd-defdialog 'he_create_part :dialog-title "Neues Teil erstellen" :variables '( (n_part :value-type :string :prompt-text "Namen des neuen Teils eingeben" :size :third :title "Name" ;; :persistent-data-storage t :proposals '() :initial-value nil :auto-add-proposal t :after-input (progn (when (sd-string-match-pattern-p "/*" n_part) (progn ;;ggf. Pfad entfernen (setf bgr (sd-inq-parent-obj (sd-pathname-to-obj n_part))) (setf n_part (sd-inq-obj-basename(sd-pathname-to-obj n_part))) ) ) );;endprogn ) (bgr :value-type :assembly :size :third :initial-value (sd-inq-parent-obj (sd-inq-curr-part)) ) ) :ok-action '(sd-call-cmds (after-ok-action) :failure (sd-display-error (format nil "~a ~%=> Bei der Erstellung des neuen Teiles." (sd-inq-error-obj :message))) ) :cancel-action '(sd-call-cmds (progn "cancel" ) ) :local-functions '( (after-ok-action () (let () (progn (create_part :owner bgr :name n_part) ;;ohne Zaehler );;endprogn );;let ) ) ) ;;--------------------------------------------------------------------------*
HTH (nicht zu 100% getestet) Gruss RainerH. [Diese Nachricht wurde von RainerH am 26. Jul. 2005 editiert.] [Diese Nachricht wurde von RainerH am 26. Jul. 2005 editiert.] [Diese Nachricht wurde von RainerH am 26. Jul. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Moderator Tastenhauer
     
 Beiträge: 2296 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build10.0.19045.5737 ● Drafting V17~V20.7@job ● Modeling V17~V20.7@job ● Windchill 12.1.2.6@job ● UWGM Client 13.0.0.1@job ● Taschenrechner ● Stift+Zettel V8.42
|
erstellt am: 26. Jul. 2005 20:12 <-- editieren / zitieren --> Unities abgeben:          Nur für rmcc1980
Hallo Bernd, hast Du es schon mal mit :secondary-value-type probiert. siehe: .../help/osdm/Common/documentation/integration_kit/reference/dg_manual.html#secondary-vt Also:
Code:
(my_part :value-type art :secondary-value-type :string .... )
im after-input und so muss man dann selber erstmal gucken was man 'bekommen' hat .. (if (sd-string-p my_part) ... Wie das nun zusammen mit ersistant-*-data harmoniert kann ich auch nicht sagen. Aber das ist vielleicht besser als mit 2 variablen zu hantieren. Statt ersistant-*-data kannst du natuerlich auch im :after-input bzw im :initial-value mit SD-S/GET-PERSISTENT-DATA arbeiten. Dann sollte es auch zusammen mit :secondary-value-type funktionieren, denn dann ist es in deiner Hand. HTH Wolfgang ---------------- an die Moderatoren: das Ausschalten der Smilies funktioniert nicht (mehr), zumindest in der Vorschau eines Beitrags. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Moderator Tastenhauer
     
 Beiträge: 2296 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build10.0.19045.5737 ● Drafting V17~V20.7@job ● Modeling V17~V20.7@job ● Windchill 12.1.2.6@job ● UWGM Client 13.0.0.1@job ● Taschenrechner ● Stift+Zettel V8.42
|
erstellt am: 26. Jul. 2005 20:24 <-- editieren / zitieren --> Unities abgeben:          Nur für rmcc1980
der automagische initial-value von :value-type :part-assembly bzw. :value-type :part ist == current part siehe vorhandene Dokumentation: .../help/osdm/Common/documentation/integration_kit/reference/dg_manual.html#selection-of-objects Dein neu erzeugtes Teil, ist nun mal current nach der Erzeugung: deswegen erscheint es dort. Mit einem explizitem :initial-value NIL bekommt man diese Verhalten auch weg, wenns denn sein muss Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |