| |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für PTC CREO | | |  | Altair ernennt MAIT zum Channel Partner für DACH, Benelux und Liechtenstein, eine Pressemitteilung
|
Autor
|
Thema: Benutzerabfrage einbauen, ... (1029 / mal gelesen)
|
Seele Mitglied Konstrukteur
 
 Beiträge: 411 Registriert: 11.06.2003 Intel(R) Xeon(R) W-2245 CPU @ 3,90 GHz, 64GB RAM NVidia Quadro RTX A4000 Win10-64Bit Elements/Direct v20.7.1.0 PartLibrary, Surfacing, 3D-PDF, 3D-Access, Unigraphics-Schnittstelle
|
erstellt am: 15. Jun. 2021 12:58 <-- editieren / zitieren --> Unities abgeben:         
Hallo ich habe mal wieder eine Frage, ob es überhaupt geht. In einem Lisp von mir wird eine Verarbeitung gemacht und anschließend auf Kollision geprüft. Bei Kollision geb ich eine Warnmeldung aus und beende das Makro und ohne Kollision wird der Rest noch bearbeitet. Jetzt ist die Frage aufgetaucht, ob man hier eine Abfrage setzen kann, ob ich trotzdem fortsetzen möchte oder nicht. Hierzu bräuchte ich ja jetzt ein Fenster mit der Angabe Weitermachen ja/nein und die Möglichkeit hier eine Rückmeldung auszuwerten um dann korrekt weiter zu machen. Gibt es in SolidDesigner LISP so ein Abfrage Fenster oder wie habt ihr das gelöst? Gruß Wolfgang ------------------ alles ist möglich, nichts funktioniert und trotzdem muß es bis morgen geschafft sein.  Werden wir es schaffen? Ja wir schaffen das !!! :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MiBr Mitglied Konstrukteur
  
 Beiträge: 577 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 22R2 Mechanicail Pro + FKM Inside
|
erstellt am: 15. Jun. 2021 13:17 <-- editieren / zitieren --> Unities abgeben:          Nur für Seele
Hallo, wenn ich dich Richtig verstanden habe suchst Du nach soetwas:
Code: (setf check_input (sd-display-warning (format nil "Kollision erkannt!~%~%Weiter?") :title "Hinweis" :push-1 "Ja" :push-2 "Nein" :severity :low)) (if (eql check_input :yes) .....)
Gruß Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Seele Mitglied Konstrukteur
 
 Beiträge: 411 Registriert: 11.06.2003 Intel(R) Xeon(R) W-2245 CPU @ 3,90 GHz, 64GB RAM NVidia Quadro RTX A4000 Win10-64Bit Elements/Direct v20.7.1.0 PartLibrary, Surfacing, 3D-PDF, 3D-Access, Unigraphics-Schnittstelle
|
erstellt am: 15. Jun. 2021 13:28 <-- editieren / zitieren --> Unities abgeben:         
Herzlichen Dank Michael, ... Genau das hatte ich gesucht, ... Funktioniert tadellos Gruß Wolfgang ------------------ alles ist möglich, nichts funktioniert und trotzdem muß es bis morgen geschafft sein.  Werden wir es schaffen? Ja wir schaffen das !!! :-) 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: 15. Jun. 2021 23:29 <-- editieren / zitieren --> Unities abgeben:          Nur für Seele
Njjjjnnjaaaaa. Also ich vermeide sd-display-warning, sd-display-question, sd-display-message wie der Teufel das Badewasser. "Recorderfähigkeit" ist ein hohes Gut! Alle 3 Routinen sind sogeanntes "==>> modales Userinterface" .. Also UI popt hoch und eine Userinteraction wird erzwungen. Das kann dazu führen das automatisierte Dinge übers lange Wochenende einfach nicht durchlaufen und kann nen Haufen Ärger bedeuten. Modales Window: Der Anwender WIRD gezwungen interaktive mit dem Programm zu agieren. Wenn Du deinen eigene Funktion nämmlich von woanders aufrufst und du läufst auf eine von 3 drei Routinen dann steht die CHOOSE .. nur wegen eines sau blöden Mausklicks. Innerhalb eines Dialoges kann man sowas häufig durch geschickte Verwendung von :check-function, :confirmation und :next-variable umgehen. Ich würde es zumindest wie folgt gestalten:
Code: (when situation-xy-is-there (if (sd-call-action-active-p) (progn (pprint "Situation XY eingetreten. Standardmäßig geht es mit 'nein' weiter") ; für den log file (sd-display-alert "situation XY eingetreten. Standardmäßig geht es mit 'nein' weiter" :icon :warning) ) ;; else (let ((the-answer (sd-display-question "Situation XY eingetreten. Weiter machen?"))) (if (equal the-anser :yes) (progn (pprint "al la hop!!") (pprint "Situation XY eingetreten. Wir machen mit 'ja' weiter") ; für den log file ) ;; else (progn (pprint "nix geht mehr!!") (pprint "Situation XY eingetreten. Wir machen mit 'nein' weiter") ; für den log file ) )) ) )
Heisst: wenn jemand Deine Routine per sd-call-cmds ruft, läuft die choose ungehindert weiter. Im interactiven mode kommt jenes UI in den Vordergrund. https://support.ptc.com/help/creo_elements_direct/r20.4.0.0/advanced_documentation/integration_kit/reference/sd-call-cmds.html#sd-call-action-active-p @Matthias .. später nachmittag ------------------ ● Firefox ESR ● Java Forum Stuttgart JUGS ● OSD Hilfeseite (de) / help page (en) ● NotePad++ ● BuFDi ● Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Seele Mitglied Konstrukteur
 
 Beiträge: 411 Registriert: 11.06.2003 Intel(R) Xeon(R) W-2245 CPU @ 3,90 GHz, 64GB RAM NVidia Quadro RTX A4000 Win10-64Bit Elements/Direct v20.7.1.0 PartLibrary, Surfacing, 3D-PDF, 3D-Access, Unigraphics-Schnittstelle
|
erstellt am: 22. Jun. 2021 06:45 <-- editieren / zitieren --> Unities abgeben:         
Hallo Wolfgang, danke für den berechtigten Hinweis. Ich baue auch ungerne Abfragen für den Beutzer ein, in diesem Fall geht´s aber definitiv nicht anders, weil der Benutzer gefragt werden muss. Ursprünglich hatte ich schon ermittelt ob ein Fehler in der Kontur ist und wenn ja, dann sollte das LISP Makro mit einer Meldung abbrechen. Die Benutzer aber wollten unbedingt die Möglichkeit drin haben, es auch trotz dem Fehler ablaufen lassen zu können. Tja so kommt man um so eine Abfrage nicht herum, weil es Konstruktiv keine weiteren Kriterien für den Unterschied gibt, war dies die erste Abfrage, die ich so eingebracht habe, konnte es bis letzte Woche vermeiden, .... :-) Trotzdem Danke für die Antwort, habe sie mir angesehen und das findet bestimmt in einem der nächsten Makros Verwendung, denn eigentlich hast Du vollkommen Recht, das es automatisch durchlaufen sollte. Gruß Wolfgang ------------------ alles ist möglich, nichts funktioniert und trotzdem muß es bis morgen geschafft sein.  Werden wir es schaffen? Ja wir schaffen das !!! :-) 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: 22. Jun. 2021 19:23 <-- editieren / zitieren --> Unities abgeben:          Nur für Seele
gerne.. 'Fehler in der Kontour' Manchmal lässt es sich schier nicht vermeiden das man in einer :check-function 5/7 des :after-input ausführt um zu gucken ob es gehen täte. Das ist dann (bei Deiner Beschreibung) der Fall das die :check-function eine :confirmation auslöst "Problem No42 entdeckt: Trotzdem weiter?" Idealerweist nutzt man in solchen Fällen dann in der :check-function und dem :after-input die selben / fast selben :local-functions und vermeidet so code-duplizierung, auch um es pflegeleicher zu machen. Wenn man so eine 'Fraach-ma-den-User' Stelle innerhalb eines 'weit entfernten' Defuns hat.. werden die Alternativen aber etwas dünne. ------------------ ● Firefox ESR ● Java Forum Stuttgart JUGS ● OSD Hilfeseite (de) / help page (en) ● NotePad++ ● BuFDi ● Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |