| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für PTC CREO |
Autor
|
Thema: Variable von Dialog-Shell nach sd-defdialog übergeben (1473 / mal gelesen)
|
taino Mitglied CAD Konstrukteur
Beiträge: 93 Registriert: 11.06.2013 PTC Creo Elements/Direct Modeling 20
|
erstellt am: 30. Mai. 2018 13:20 <-- editieren / zitieren --> Unities abgeben:
Hallo ich brauche mal wieder Hilfe. Ich habe ein Dialog erstellt. In diesem wird als Lokale Funktion ein Dialog-Shell erstellt in dem ich Werte eingeben möchte. Diese sollen aber nach dem Drücken auf ok an den Dialog übergeben werden. Die klappt nicht so wirklich. Kann mir da jemand helfen. Habe mal mein Versuch angehangen. Gruß tAiNo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MiBr Mitglied Konstrukteur
Beiträge: 508 Registriert: 30.06.2015 HP Z440 Workstation 64GB Modeling 20.1.2.0 (x64) Drafting 20.1.2.0 (64x) klas. UI Modell Manager 20.1.2.0 Ansys Workbeanch 19R3 Mechanical Pro
|
erstellt am: 01. Jun. 2018 09:36 <-- editieren / zitieren --> Unities abgeben: Nur für taino
Hallo, ich glaube da kann ich dir nicht wirklich weiterhelfen. Wollte nur den Hinweiß geben, dass der Wert im 'sd-defdialog nicht sichtbar ist und erst nach zweimaligen drücken auf im Dialagfeld auf z.B. Höhe erscheint und somit doch übergeben wurde. Vielleicht meintest Du ja dies mit -> Dies klappt nicht so wirklich. Gruß Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
taino Mitglied CAD Konstrukteur
Beiträge: 93 Registriert: 11.06.2013 PTC Creo Elements/Direct Modeling 20
|
erstellt am: 01. Jun. 2018 11:13 <-- editieren / zitieren --> Unities abgeben:
Hallo genau das meinte ich mit "nicht wirklich". Das muß doch irgendwie gehen das der Wert sauber übergeben wird. Irgend ein Befehl der das ganze noch mal "Refreshed" wäre gut. Aber ob es sowas gibt weis ich nicht. Da stehe ich ein bißchen auf dem Schlauch. Komme auch mit dem Ikit nicht weiter. Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MiBr Mitglied Konstrukteur
Beiträge: 508 Registriert: 30.06.2015 HP Z440 Workstation 64GB Modeling 20.1.2.0 (x64) Drafting 20.1.2.0 (64x) klas. UI Modell Manager 20.1.2.0 Ansys Workbeanch 19R3 Mechanical Pro
|
erstellt am: 01. Jun. 2018 11:41 <-- editieren / zitieren --> Unities abgeben: Nur für taino
Hallo, hatte das Problem innerhalb des 'sd-defdialog schon öfter und hatte auch nach einem Refresh gesucht und nicht gefunden. Gelöst habe ich dies Problem mit (sd-set-variable-status ... anstelle von setq... leider hat das in deiner Lisp damit nicht gefunzt: (sd-set-variable-status 'tp_hal_h :value (sd-read-from-string(sd-get-text-control-value "UICT-TPLEITER1-1111-TX" :trimString t))) Schade das ich dir nicht helfen kann, ich bin aber gespannt auf´s Forum bzw. die Lösung! Gruß Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
taino Mitglied CAD Konstrukteur
Beiträge: 93 Registriert: 11.06.2013 PTC Creo Elements/Direct Modeling 20
|
erstellt am: 04. Jun. 2018 08:15 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen hab es gefunden. Ich weis bloß nicht ob das so richtig ist aber es tut was es soll. (setq tp_hal_h1 (sd-read-from-string(sd-get-text-control-value "UICT-TPLEITER1-1111-TX" :trimString t))) (sd-destroy-dialog-shell "UICT-TPLEITER1") (sd-call-dialog (format nil "tp_beispiel_dialog :tp_hal_h ~a" tp_hal_h1)) So klappt es erstmal. Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MiBr Mitglied Konstrukteur
Beiträge: 508 Registriert: 30.06.2015 HP Z440 Workstation 64GB Modeling 20.1.2.0 (x64) Drafting 20.1.2.0 (64x) klas. UI Modell Manager 20.1.2.0 Ansys Workbeanch 19R3 Mechanical Pro
|
erstellt am: 04. Jun. 2018 12:35 <-- editieren / zitieren --> Unities abgeben: Nur für taino
Hallo, als Lisp-Anfänger finde ich es komisch nach der Eingabe im 'sd-show-dialog-shell' den "sd-defdialog 'tp_beispiel_dialog neu zu starten und diesen dann mit einer anzahl von Global erstellten Variable zu öffnen. Aber funzt ja. Wenn dies schon nicht anders geht als mit einem Neustart der Lisp, würde ich das mittels sd-set-persistent-data und sd-get-persistent-data versuchen. Hiermit könntest Du eine Liste von Werte in der all_data.lsp Lokal speichern und laden. Damit hätte man die Werte der Variablen besser unter Kontrolle und beim nächsten Start hätte man die Abmaße seiner letzten Leiter sogar wieder. Naja, soll nur nee Anregung sein! Gruß Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MiBr Mitglied Konstrukteur
Beiträge: 508 Registriert: 30.06.2015 HP Z440 Workstation 64GB Modeling 20.1.2.0 (x64) Drafting 20.1.2.0 (64x) klas. UI Modell Manager 20.1.2.0 Ansys Workbeanch 19R3 Mechanical Pro
|
erstellt am: 05. Jun. 2018 12:47 <-- editieren / zitieren --> Unities abgeben: Nur für taino
Hallo nochmal, habe das mit 'sd-set-persistent-data und sd-get-persistent-data' in deiner Beispiel-Lisp umgesetzt, siehe Anhang. Danke für gute Vorlage, das kann ich gute für einige meiner Lisp´s gebrauchen! Gruß Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
lix b Mitglied Konstrukteur, CAD-Admin
Beiträge: 279 Registriert: 03.10.2014 Creo Elements / Direct Modeling 20.2 Creo Elements / Direct Model Manager 20.2 Creo 5.0 Simulate <P>Notepad++ Win 7
|
erstellt am: 06. Jun. 2018 08:21 <-- editieren / zitieren --> Unities abgeben: Nur für taino
Hi! Für so etwas gibt es doch die Dialog-Type "Subaction" Bei dieser wird der ursprüngliche Dialog pausiert. Nach Beendigung wird das Ergebnis der Subaction an den ersten Dialog übergeben. Siehe I-Kit Dialog-Generator Kapitel 4.6 Subactions ------------------ Viele Grüße Felix Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
taino Mitglied CAD Konstrukteur
Beiträge: 93 Registriert: 11.06.2013 PTC Creo Elements/Direct Modeling 20
|
erstellt am: 06. Jun. 2018 14:32 <-- editieren / zitieren --> Unities abgeben:
Hallo ich habs jetzt mit :subaction gemacht. Gefällt mir super. Ein Problem habe ich dennoch. Mein Customshell erscheint immer auf meinem 2 Bildschirm. Wie kann man das jetzt positionieren? Ich habe mal meine ersten Schritte mit :subaction angehangen. Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
lix b Mitglied Konstrukteur, CAD-Admin
Beiträge: 279 Registriert: 03.10.2014 Creo Elements / Direct Modeling 20.2 Creo Elements / Direct Model Manager 20.2 Creo 5.0 Simulate <P>Notepad++ Win 7
|
erstellt am: 06. Jun. 2018 14:41 <-- editieren / zitieren --> Unities abgeben: Nur für taino
|
taino Mitglied CAD Konstrukteur
Beiträge: 93 Registriert: 11.06.2013 PTC Creo Elements/Direct Modeling 20
|
erstellt am: 06. Jun. 2018 15:14 <-- editieren / zitieren --> Unities abgeben:
|
lix b Mitglied Konstrukteur, CAD-Admin
Beiträge: 279 Registriert: 03.10.2014 Creo Elements / Direct Modeling 20.2 Creo Elements / Direct Model Manager 20.2 Creo 5.0 Simulate <P>Notepad++ Win 7
|
erstellt am: 06. Jun. 2018 15:28 <-- editieren / zitieren --> Unities abgeben: Nur für taino
|
taino Mitglied CAD Konstrukteur
Beiträge: 93 Registriert: 11.06.2013 PTC Creo Elements/Direct Modeling 20
|
erstellt am: 06. Jun. 2018 15:30 <-- editieren / zitieren --> Unities abgeben:
|
lix b Mitglied Konstrukteur, CAD-Admin
Beiträge: 279 Registriert: 03.10.2014 Creo Elements / Direct Modeling 20.2 Creo Elements / Direct Model Manager 20.2 Creo 5.0 Simulate <P>Notepad++ Win 7
|
erstellt am: 06. Jun. 2018 15:37 <-- editieren / zitieren --> Unities abgeben: Nur für taino
|
taino Mitglied CAD Konstrukteur
Beiträge: 93 Registriert: 11.06.2013 PTC Creo Elements/Direct Modeling 20
|
erstellt am: 06. Jun. 2018 15:42 <-- editieren / zitieren --> Unities abgeben:
(in-package :custom) (use-package :redface:li) (sd-defdialog 'tp_leiter1_skizze :uict-option-menu-name "UICT-TPLEITER1" :uict-install-function 'tp_leiter_skizze :dialog-type :subaction :embedded-ui nil ;; default = t :taskBarPage nil :variables '( (tp_wert1 :value-type :string :uict-tx "UICT-TPLEITER1-dop1-TX" ) (tp_ok :tongue:ush-action (sd-accept-dialog) :uict-tb "UICT-TPLEITER1-1-PB" ) );;ende variablen :redface:k-action '(list (sd-read-from-string tp_wert1)) );;ende dialog (sd-defdialog 'tp_leiter1_dialog :dialog-title "Leiter erstellen" :toolbox-button t :variables '( (tp_number :title "Höhe" :value-type :length ) (tp_x :title "x Pos" :value-type :integer :initial-value -960 ) (tp_rufe_skizze :tongue:ush-action (progn) :title "Skizze" :x-offset tp_x :y-offset 0 :subaction-name tp_leiter1_skizze :after-input (progn (setq tp_number (first tp_rufe_skizze)) ) ) );;ende variablen );;ende dialog (defun tp_leiter_skizze () ;; (sd-create-image "tp_1_skizze" :filename (concatenate 'string tainos_pfad "/Leitern/pixmaps/leiter1.bmp")) (sd-create-dialog-shell "UICT-TPLEITER1" :title "Leiter geschweißt" :bottomLine :none :tongue:in t ) (sd-append-area "UICT-TPLEITER1-1-AA" "UICT-TPLEITER1-AA" :frame nil :title "" :margin 3 :titleForeground "#ffff00" :background :redface:ption ) (sd-append-grid-area "UICT-TPLEITER1-1-GA" "UICT-TPLEITER1-1-AA" :frame t :title "" :width 1085 :height 922 :cellSize 1,1 ) ;;Anfang Dopplung Texte ;;==================================================================================================================================================== (sd-create-text-control "UICT-TPLEITER1-dop1-TX" "UICT-TPLEITER1-1-GA" :x 342 :y 171 :width 34 :height 25 :editable t :showModified nil :showFocus t :enterAction '() ) (sd-create-label-control "UICT-TPLEITER1-dop1-LB" "UICT-TPLEITER1-1-GA" :title "X" :x 376 :y 169 :width 10 :height 34 :alignment :center ) (sd-create-text-control "UICT-TPLEITER1-dop2-TX" "UICT-TPLEITER1-1-GA" :x 386 :y 171 :width 34 :height 25 :editable t :showModified nil :showFocus t :enterAction '() ) (sd-create-label-control "UICT-TPLEITER1-dop2-LB" "UICT-TPLEITER1-1-GA" :title "X" :x 420 :y 169 :width 10 :height 34 :alignment :center ) (sd-create-text-control "UICT-TPLEITER1-dop3-TX" "UICT-TPLEITER1-1-GA" :x 430 :y 171 :width 34 :height 25 :editable t :showModified nil :showFocus t :enterAction '() ) (sd-create-label-control "UICT-TPLEITER1-dopb-LB" "UICT-TPLEITER1-1-GA" :title "B" :x 355 :y 146 :width 10 :height 34 :alignment :center ) (sd-create-label-control "UICT-TPLEITER1-doph-LB" "UICT-TPLEITER1-1-GA" :title "H" :x 399 :y 146 :width 10 :height 34 :alignment :center ) (sd-create-label-control "UICT-TPLEITER1-dops-LB" "UICT-TPLEITER1-1-GA" :title "S" :x 443 :y 146 :width 10 :height 34 :alignment :center ) ;;==================================================================================================================================================== ;;Ende Dopplung Texte (sd-create-pushbutton-control "UICT-TPLEITER1-1-PB" "UICT-TPLEITER1-1-GA" :x 910 :y 870 :width 70 :height 30 :title "OK" :tongue:ushAction '(progn ; (setq tp_dop1 (sd-read-from-string(sd-get-text-control-value "UICT-TPLEITER1-dop1-TX" :trimString t))) ; (setq tp_dop2 (sd-read-from-string(sd-get-text-control-value "UICT-TPLEITER1-dop2-TX" :trimString t))) ; (setq tp_dop3 (sd-read-from-string(sd-get-text-control-value "UICT-TPLEITER1-dop3-TX" :trimString t))) ; (sd-destroy-dialog-shell "UICT-TPLEITER1") ; (setq *tp-leiter-tool* (format nil "tp_beispiel_dialog :tp_hal_h ~a" tp_hal_h1)) ; (sd-call-dialog (format nil "tp_leiter_geschweisst_dialog ; :tp_dop_b ~a ; :tp_dop_h ~a ; :tp_dop_s ~a" ; tp_dop1 ; tp_dop2 ; tp_dop3 ; )) );;ende progn ) (sd-create-pushbutton-control "UICT-TPLEITER1-2-PB" "UICT-TPLEITER1-1-GA" :x 990 :y 870 :width 70 :height 30 :title "Abbrechen" :tongue:ushAction '(progn ; (sd-destroy-dialog-shell "UICT-TPLEITER1") ; (sd-call-dialog (format nil "tp_leiter_geschweisst_dialog")) );;ende progn ) ; (sd-create-label-control "UICT-TPLEITER1-1-LB" "UICT-TPLEITER1-1-GA" ; :image "tp_1_skizze" ; :x 0 ; :y 0 ; :width 1070 ; :height 910 ; ) );;ende tp_leiter_skizze [Diese Nachricht wurde von taino am 06. Jun. 2018 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
lix b Mitglied Konstrukteur, CAD-Admin
Beiträge: 279 Registriert: 03.10.2014 Creo Elements / Direct Modeling 20.2 Creo Elements / Direct Model Manager 20.2 Creo 5.0 Simulate <P>Notepad++ Win 7
|
erstellt am: 06. Jun. 2018 16:30 <-- editieren / zitieren --> Unities abgeben: Nur für taino
Offensichtlich lässt x-offset nur eine Zahleneingabe zu. Es funktionieren weder Variablen noch auszuführender Code. Über den Umweg von Code: (sd-call-dialog (format nil "tp_leiter1_skizze :x-offset ~A :y-offset ~A" tp_x tp_y))
als Push-Action funktioniert dies, allerdings schlägt dann in weiterer Folge etwas mit der Dialogdefinition fehl, was ich auf die Schnelle nicht herausgefunden habe. ------------------ Viele Grüße Felix Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
taino Mitglied CAD Konstrukteur
Beiträge: 93 Registriert: 11.06.2013 PTC Creo Elements/Direct Modeling 20
|
erstellt am: 07. Jun. 2018 08:22 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen schade das das mit dem Einsatz von Variablen bei den Offset's nicht funzt. Hab das jetzt mal über 2 Push-Button gelöst. Es muß ja bloß unterschieden werden ob sich ein Dialog rechts oder links am Bildschirm befindet. Aber falls du doch noch eine Lösung hast für das Variablenproblem wäre das super. Würde ich besser finden. Gruß tAiNo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
lix b Mitglied Konstrukteur, CAD-Admin
Beiträge: 279 Registriert: 03.10.2014 Creo Elements / Direct Modeling 20.2 Creo Elements / Direct Model Manager 20.2 Creo 5.0 Simulate <P>Notepad++ Win 7
|
erstellt am: 07. Jun. 2018 08:35 <-- editieren / zitieren --> Unities abgeben: Nur für taino
Was ich noch gefunden habe ist die Option :ref-variable beim Aufruf der Sub-Action. Damit müsste man die Positionsreferenz vom aufrufenden Dialog auf etwas anderes verbiegen können (z.B. das aktive Darstellungsfenster) Aber vielleicht hat ja bereits jemand hier mehr Erfahrung mit Sub-Actions. Für mich ist das auch Neuland. ------------------ Viele Grüße Felix Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MiBr Mitglied Konstrukteur
Beiträge: 508 Registriert: 30.06.2015 HP Z440 Workstation 64GB Modeling 20.1.2.0 (x64) Drafting 20.1.2.0 (64x) klas. UI Modell Manager 20.1.2.0 Ansys Workbeanch 19R3 Mechanical Pro
|
erstellt am: 07. Jun. 2018 12:50 <-- editieren / zitieren --> Unities abgeben: Nur für taino
Hallo, in meinen Test mit der Beispiel-Lisp klappt das immer noch nicht so wirklich. Zumindestetens stellt es sich bei mir so dar, das ich zwingend den Wert mit ENTER bestätigen muss, ansonsten kommt da eine Fehlermeldung "Tp_Wert1 wurd nicht angegeben." Und -> Wert eingeben -> ENTER -> TAB -> Nächster Wert -> ENTER -> TAB .... kann ja wohl nicht die Lösung sein, oder! Ich weiß nicht warum, aber in meinen Vorschlag funzt das ohne ENTER. Gruß Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
taino Mitglied CAD Konstrukteur
Beiträge: 93 Registriert: 11.06.2013 PTC Creo Elements/Direct Modeling 20
|
erstellt am: 08. Jun. 2018 07:27 <-- editieren / zitieren --> Unities abgeben:
Hallo das kann ich mir jetzt bloß so erklären das, das jetzt zwei defdialoge sind und die Eingabefelder als Variable fungieren. Und dort muß man ja einen Wert eingeben. Oder den Dialog halt abbrechen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |