| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Creo |
| |
 | Extended Maintenance & Support I Abkündigung der Abas ERP Version ERP 20, eine Pressemitteilung
|
Autor
|
Thema: Dialog abrechen (743 mal gelesen)
|
StephanWörz Mitglied Maschinenbautechniker
  
 Beiträge: 786 Registriert: 11.10.2000 exone - Win10 i9-12900K 3187MHz 32GB Ram nVidia RTX A5000 creo elements/direct V20.5.1.0 SolidPower V20.4 ModelSearch KeyShot 11 CADdoktor SX PHOENIX V11
|
erstellt am: 07. Nov. 2007 14:41 <-- editieren / zitieren --> Unities abgeben:         
Hallo! Ich habe so meine Probleme mit einem Progrämmchen! Wenn ich während der Ausführung auf CANCEL klicke, dann bricht der Dialog nicht wie erwartet ab, sondern es erscheint die Fehlermeldung: Zeichenfolge entspricht nicht dem Objekt der gewünschten Art. Zitat: Aus der Dokumentation "Dialog Programming for CoCreate OneSpace Modeling" The activation of the CANCEL button will trigger the evaluation of :cancel-action and cause the dialog to be removed from the screen and to loose all current variable bindings, irregardless whether :cancel-action was successfully and completely executed or not.
Keine Ahnung was hier falsch läuft! Auch habe ich versucht den Dialog nach Prüfung der Variable Objekt Code: (if (sd-inq-obj-contents-read-only-p Objekt) (display "Objekt muss reserviert werden") (sd-abort-dialog) );;if
zu beenden. Aber das will auch nicht tun Irgendwas scheint hier Grundsätzlich falsch zu laufen! Wenn ich das ganze durch drücken von ESC beende und neu starte dann bringt er mir nach wählen der Variable OBJEKT (:value-type :Part-assembly) die Meldung: Zeichenfolge entspricht nicht dem Objekt der gewünschten Art. Vielleicht hat ja jemand die Lust und die Zeit (bitte bitte) mal über den Code rüber zu gucken! Gruß Stephan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
     
 Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 07. Nov. 2007 15:46 <-- editieren / zitieren --> Unities abgeben:          Nur für StephanWörz
|
Walter Geppert Moderator Frank und Frei
     

 Beiträge: 2166 Registriert: 12.12.2000
|
erstellt am: 07. Nov. 2007 16:00 <-- editieren / zitieren --> Unities abgeben:          Nur für StephanWörz
Das Ganze kommt mir überhaupt etwas umständlich vor. Diese Hilfsteile brauchst du gar nicht, ich hab auch mal so was Ähnliches programmiert aber mit Positionieren "Punkt-Richtung-Punkt": Code:
(defun dc4-teil-ausrichten-auf-ursprung (teil refpt front updir) (let (vpt upt orig xricht zricht) (setf upt (sd-vec-add refpt (first updir))) (setf vpt (first front)) (setf orig (make-gpnt3d :x 0 :y 0 :z 0)) (setf xricht (make-gpnt3d :x 1 :y 0 :z 0)) (setf zricht (make-gpnt3d :x 0 :y 0 :z 1)) (sd-call-cmds (position_pa (sd-inq-obj-pathname teil) :match_pt_dir_pt refpt orig vpt xricht upt zricht)) );;let )
Die Abfrage des Schreibschutzes kannst du dir überhaupt sparen, wenn du Code: :modifies :contents
verwendest. Wenn du stattdessen unbedingt eine Fehlermeldung ausgeben willst, dann mit Code:
:check-function #'(lambda (Objekt) (if (sd-inq-obj-contents-read-only-p Objekt) (values :error "Objekt muss reserviert werden") :OK );;if );;lambda
------------------ meine LISP-Makros sind auf osd.cad.de Disclaimer Grüße aus Wien Walter DC4 Technisches Büro GmbH Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StephanWörz Mitglied Maschinenbautechniker
  
 Beiträge: 786 Registriert: 11.10.2000 exone - Win10 i9-12900K 3187MHz 32GB Ram nVidia RTX A5000 creo elements/direct V20.5.1.0 SolidPower V20.4 ModelSearch KeyShot 11 CADdoktor SX PHOENIX V11
|
erstellt am: 08. Nov. 2007 09:17 <-- editieren / zitieren --> Unities abgeben:         
Guten morgen, nun bin ich ein gutes Stück weitergekommen! ... mal ein bisschen ausführlicher für diejenigen die auch noch was lernen wollen. Zitat: Erste Massnahme: Herausfinden, in welcher Funktion der Fehler auftritt.
... in der :Cleanup-action wurde versucht Objekte zu löschen die zum Zeitpunkt des Programmabruchs noch gar nicht existiert haben! Zitat: Die Abfrage des Schreibschutzes kannst du dir überhaupt sparen, wenn du Code: -------------------------------------------------------------------------------- :modifies :contents --------------------------------------------------------------------------------
verwendest.
... so eingach kann das sein. Zitat: Original erstellt von Walter Geppert: Das Ganze kommt mir überhaupt etwas umständlich vor. Diese Hilfsteile brauchst du gar nicht, ich hab auch mal so was Ähnliches programmiert aber mit Positionieren "Punkt-Richtung-Punkt":
... ist so viel einfacher/eleganter! Habe ich mal so übernommen. Danke! Gruß Stephan
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Walter Geppert Moderator Frank und Frei
     

 Beiträge: 2166 Registriert: 12.12.2000
|
erstellt am: 08. Nov. 2007 09:37 <-- editieren / zitieren --> Unities abgeben:          Nur für StephanWörz
Noch ein paar Anregungen dazu: Du solltest noch absichern, dass die beiden Richtungen nicht zusammenfallen. Wie so was ausschauen könnte mit entsprechenden :after-input Aufrufen und angepassten Variablennamen: Code:
(front-action () (when (and front updir) (when (< (sd-vec-length (sd-vec-cross-product (sd-vec-add (first updir) (second updir)) (sd-vec-add (first front) (second front)))) 0.000001) (progn (setf front nil) (sd-display-error "Diese Richtung ist gleich oder entgegengesetzt zur Richtung oben!") );;progn );;when );;when ) (updir-action () (when (and front updir) (when (< (sd-vec-length (sd-vec-cross-product (sd-vec-add (first updir) (second updir)) (sd-vec-add (first front) (second front)))) 0.000001) (progn (setf updir nil) (sd-display-error "Diese Richtung ist gleich oder entgegengesetzt zur Richtung vorne!") );;progn );;when );;when )
------------------ meine LISP-Makros sind auf osd.cad.de Disclaimer Grüße aus Wien Walter DC4 Technisches Büro GmbH Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |