| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Creo |
Autor
|
Thema: laden von dokumenten aus wm (lisp) (884 mal gelesen)
|
stonly Mitglied
Beiträge: 43 Registriert: 05.09.2003
|
erstellt am: 28. Jan. 2004 12:20 <-- editieren / zitieren --> Unities abgeben:
hallo zusammen, habe noch ein problem. (im grunde noch mehrere, die anderen gehören hier aber nicht her ) laden von dokumenten aus dem wm mit lisp prgramm: es gibt den befehl db_load_3d_data... mit dem man dokumente aus dem wm (workmanager) laden kann. problem 1: wenn das dokument nicht in der klasse sd_modelle gespeichert ist, greift der ladebefehl nicht. problem 2: nach dem ausführen des befehls bricht mein programm ab. (z.b. display siehe unten greift nicht mehr) wie kann man dokumente aus verschiedenen klassen mit einem lisp programm laden ? wie sorgt man dafür, daß nach dem laden das programm nicht beendet wird ? gibt es irgendwo eine doku zu diesem befehl ? .... :local-functions '( (teolad () (db_load_3d_data :name "69802004-1") (display "nach ladevorgang") ) ) .... grüße aus sonnenbühl (wo andere urlaub machen) steffen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorothea Mitglied
Beiträge: 242 Registriert: 22.11.2001
|
erstellt am: 28. Jan. 2004 13:12 <-- editieren / zitieren --> Unities abgeben: Nur für stonly
Hallo Steffen, Zum Laden im speziellen aus dem Workmanager kann ich dir nichts sagen. Aber das Stueckchen Code, was du abgebildet hast, das kann/darf so nicht tun. Generell gilt im Integration Kit: Will man einen Dialog aus einem anderen Dialog heraus aufrufen, dann muss man den Aufruf mit dem Makro: sd-call-cmds umgeben. Das ist wie gesagt nicht spezifisch fuer Workmanager sondern gilt fuer alles was du programmierst. Mehr Infos gibt es unter: integration_kit/reference/sd-call-cmds.html#sd-call-cmds Gruss Dorothea
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dieter Kotsch Mitglied
Beiträge: 311 Registriert: 10.08.2002
|
erstellt am: 28. Jan. 2004 14:13 <-- editieren / zitieren --> Unities abgeben: Nur für stonly
Hi Nach meinem Kenntnisstand mußt Du im WM das ein oder andere Makro anpassen. So kannst Du per DDE/Interlink einen Befehl bzw. Aktion an den WM senden. Dies wird auf der WM-Seite ausgeführt. Das Thema ist aber sehr komplex. Gruß Didi
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
stonly Mitglied
Beiträge: 43 Registriert: 05.09.2003
|
erstellt am: 28. Jan. 2004 14:14 <-- editieren / zitieren --> Unities abgeben:
hallo dorothea und co. das sd-call-cmds .... macht hier keinen unterschied, hatte ich auch schon mit probiert. untenstehend nochmals ein paar zeilchen die das problem deutlicher zeigen. mit der push-action kann man zwar den ladevorgang starten, das ganze kehrt aber nicht zum dialog zurück. (in-package :teo) (use-package li)
(sd-defdialog 'Teoladwm :dialog-title "Teoladwm" :variables '( (doi0 :value-type art-assembly :modifies nil :title "inqdoil" rompt-text "bla" :initial-value nil ) (next ush-action (progn (teolad) ) :title "lad") ) :local-functions '( (teolad () (sd-call-cmds (db_load_3d_data :name "10020660-01") ) ) ) k-action '(teolad) ); Ende sd-defdialog gruss steffen
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dieter Kotsch Mitglied
Beiträge: 311 Registriert: 10.08.2002
|
erstellt am: 28. Jan. 2004 14:47 <-- editieren / zitieren --> Unities abgeben: Nur für stonly
HI Ich habe die Erfahrung gemacht, dass beim Laden aus dem WM der aktuelle Dialog abgebrochen wird. Somit duerften alle Aktionen, die nach den Laden kommen, keine große Bedeutung haben. Gruß Dieter [Diese Nachricht wurde von Dieter Kotsch am 29. Jan. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Walter Geppert Moderator Frank und Frei
Beiträge: 2143 Registriert: 12.12.2000 Konstruktion von Sondermaschinen, Montageautomaten, Meß- und Prüfeinrichtungen, Vorrichtungen und Produktentwicklung mit Creo Elements/Direct Modeling 20.4, AdvancedDesign, Surfacing, Simulate, SolidPower, ModelManager auf HP ZBook 17 G4, Windows 10 Pro 64
|
erstellt am: 29. Jan. 2004 14:00 <-- editieren / zitieren --> Unities abgeben: Nur für stonly
Zum Zugriff auf andere Klassen kann ich auch nix beitragen, aber um nach dem Laden noch irgendwelche Nachbearbeitung automatisch durchzuführen, geht vielleicht der folgende Workaround:
- zwei Dialoge
- setze eine globale Variable im ersten Dialog vor dem eigentlichen Ladebefehl auf t
- fang das Event *SD-CHANGE-OBJECT-TREE-EVENT* ab und frag zusätzlich Deine Variable ab
- Falls t, starte den zweiten Dialog und setz die Variable auf nil
Ist ziemlich "russisch", sollte aber funktionieren. ------------------ Grüße aus Wien Walter DC4 Technisches Büro GmbH Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
stonly Mitglied
Beiträge: 43 Registriert: 05.09.2003
|
erstellt am: 29. Jan. 2004 14:09 <-- editieren / zitieren --> Unities abgeben:
|
der_Wolfgang Ehrenmitglied V.I.P. h.c. Tastenhauer
Beiträge: 2017 Registriert: 3.20. ● PE6+8@home ● W10 Pro Build19044.2364 ● Drafting V20.1+4 ● Modeling V20.1+4
|
erstellt am: 29. Jan. 2004 15:01 <-- editieren / zitieren --> Unities abgeben: Nur für stonly
Hi Ihr, problem dieser programmatischen Aufrufe ist die Art und Weise wie sich beide Programme unterhalten. Die koennen naemlich nur miteinander, wenn sie interactive sind. Beispiel, stelle die Maus im DDM fenster in ein EingabeFeld, sodass der text cursor erscheint. Versuche nun vom OSD aus diesen DDM anzusprechen (z.B. open editor). NIX tut sich.. der OSD zeigt seine Sanduhr bis in alle Ewigkeit.. pickst Du nun mit der Maus im DDM auf eine Stelle ausserhalb eines Eingabefeldes, wartet der OSD nicht mehr und das EditorUI vom DDM kommt hoch. DDM nimmt nur kommandos vom OSD entgegen und fuehrt sie aus wenn er NICHTS anderes zu tun hat und umgekehrt! Trace mal Deine Lisp funktionen (trace Teoladwm db_load_3d_data display load_sd load) dann benutze den von Dir erstellten dialog mit "laden in der ok-action" (also nicht innerhalbe des Pushbuttons). Dein Dialog, db_load_3d_data und display sind schon lange fertig bis dann mal die Daten vom DDM entgegen genommen werden und wirklich geladen werden. Du wirst dies nur umgehen koennen wenn Du heftig DDM Macros aenderst, bzw. Dich abnabelst und eigene schreibst.
Alternativ: Modelmanager + OLI::sd-db-element-* funktionen. Du kannst mit dem MM ja auf die selbe Datenbank zugreifen.
wenn Du mal wieder (sd-call-cmds (db_load_3d_data :name "69802004-1")) (display "nach ladevorgang") nutzt, wirst Du sehen, das der Display sehr wohl ausgeführt wird.. nur ob er das richtige anzeigt .. ;-) Ach und noch was: wenn Du einen Dialog postest, solltest Du unbedingt die Smilies fuer dieses Posting ausschalten ;-)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Martin.M Mitglied Maschinenbau-Ingenieur
Beiträge: 352 Registriert: 05.10.2002
|
erstellt am: 30. Jan. 2004 22:28 <-- editieren / zitieren --> Unities abgeben: Nur für stonly
Hallo Steffen, zu Problem 2 ist meine Erfahrung das das Lisp Programm nicht wartet bis der Ladevorgang aus dem Workmanager abgeschlossen ist, sondern weiter läuft. Wir benutzen "neuladen" für das automatische Laden von Baugruppen nach dem Start des OSD. Als ich versucht habe im Macro die Baugruppe nach dem Neuladen als VRML-Datei zu speichern, wurde nur das gespeichert was schon im OSD geladen war. Eine Lösung habe ich nicht gefunden. Es gibt wohl einen sleep-Befehl aber dann soll das Laden auch nicht mehr funktionieren. Tschuess Martin
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |