| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Creo |
| |
| MAIT übernimmt Kundenstamm von GMCAD, eine Pressemitteilung
|
Autor
|
Thema: Lisp (833 mal gelesen)
|
MirkoWa Mitglied Konstrukteur
Beiträge: 16 Registriert: 26.09.2002
|
erstellt am: 11. Dez. 2002 07:48 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute, habe angefangen ein Lisp Programm zu schreiben, um eine Datei automatisch zu laden, und diese Datei dann weiterzuverarbeiten! Weiss jemand wie die OK-Action in meine Programm lauten, damit er die ausgewählte Datei einlädt! Hat jemand eine Idee? Gruß Mirko Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorothea Mitglied
Beiträge: 242 Registriert: 22.11.2001
|
erstellt am: 11. Dez. 2002 08:56 <-- editieren / zitieren --> Unities abgeben: Nur für MirkoWa
Hallo, Ich denke mal, es soll wirklich ein mi File geladen werden und nicht nur ein LISP file. Fuer LISP Files heisst der Befehl 'load'. Angenommen das mi-File ist eine Zeichnung. Dann lautet der Befehl AM_LOAD_DRAWING Herausfinden kann man das z.B. indem man einen Recorder startet und die Befehlssequenz ausfuehrt, die man auch programmatisch ausfuehren moechte. Man kann dann in der ok-action den Dialog mit sd-call-cmds aufrufen. Der Wert eine Variablen vom Typ :filename ist eine Liste aus filename und mode. Die ok-action kann also wie folgt aussehen: : ok-action ;; kein Freizeichen zwischen : und ok '(sd-call-cmds (AM_LOAD_DRAWING :filename (first V1))) Dabei ist natuerlich noch kein Test, ob man das File ueberhaupt laden kann u.s.w. Gruss Dorothea
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MirkoW Mitglied
Beiträge: 3 Registriert: 19.11.2001
|
erstellt am: 11. Dez. 2002 09:37 <-- editieren / zitieren --> Unities abgeben: Nur für MirkoWa
Hallo Dorothea, erstmal tausend Dank. Das mit dem Rekorder und so ist mir alles klar, was ich nicht auf die reihe bekomme ist das mit dem sd-call-cmds! Aber gut, er lädt mir nun die ausgewählte datei! jetzt möchte ich dieselbe geladene Datei mit dem Befehl: (AM_PLOT utput RAWING :scale :FIT :show_dialog ff :confirm) ausdrucken! Was muss ich dann davorsetzten? Gruß Mirko Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorothea Mitglied
Beiträge: 242 Registriert: 22.11.2001
|
erstellt am: 11. Dez. 2002 10:42 <-- editieren / zitieren --> Unities abgeben: Nur für MirkoWa
Hallo Mirko, Wie das so genau mit dem plot funktioniert, das weiss ich leider auch nicht. Ich kann nur was allgemein zum sd-call-cmds sagen. Generell im OneSpace Designer muss man um ALLE Dialoge, die man programmatisch aufrufen will, ein sd-call-cmds schreiben. Man kann auch mehrere Aufrufe zusammen fassen, muss aber aussen herum immer sd-call-cmds schreiben. Guck doch mal in der Dokumentation nach unter: help/Common/documentation/integration_kit/reference/sd-call-cmds.html#sd-call-cmds Vielleicht hilft das ja ein bisschen weiter. Noch was zum plotten. Soll erst die Zeichnung geladen werden und dann gleich geplottet werden? Dann versuche doch einfach mal, beide Aufrufe in die ok-action zu schreiben. In etwa so: : ok-action '(progn (sd-call-cmds (....lade die Zeichnung.....)) (sd-call-cmds (....plotte die Zeichnung....)) ) Das Makro sd-call-cmds erlaubt auch eine Fehlerbehandlung. Gibt man die Keywoerter :failure und/oder :success an, dann kann man z.B. testen, ob das Laden der Zeichnung auch wirklich funktioniert hat und nur dann anschliessen plotten. : ok-action '(let ((error-case nil)) (sd-call-cmds (....lade die Zeichnung....) :failure (setf error-case t)) (unless error-case (sd-call-cmds (....plotte die Zeichnung....)) ) ) Ich hoffe, das hilft ein bisschen weiter. Gruss Dorothea
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MirkoWa Mitglied Konstrukteur
Beiträge: 16 Registriert: 26.09.2002
|
erstellt am: 11. Dez. 2002 11:46 <-- editieren / zitieren --> Unities abgeben:
Hallo Dorothea, das hat mir nicht nur ein bisschen weitergeholfen, sondern das war wie von null auf hundert! Ich habe nun meinen SD-DEFDIALOG erweiter auf drei Dateien, die er dann zu verarbeiten hat! Funktioniert auch soweit, aber was kann ich machen, wenn ich von den drei dateien nur zwei Dateien auswähle? Er möchte dann immer, das ich ihm die dritte auch auswähle! Kann ich dort noch eine Variable einbauen? Gruß Mirko Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorothea Mitglied
Beiträge: 242 Registriert: 22.11.2001
|
erstellt am: 11. Dez. 2002 12:29 <-- editieren / zitieren --> Unities abgeben: Nur für MirkoWa
Hallo Mirko, Man muss dem Dialog sagen, dass eine oder mehr Variablen optional sind. In der ok-action fragt man dann ab, ob die Variablen wirklich ausgewaehlt wurden, sprich einen Wert haben, oder nur 'nil'. Optionale Variablen erhaelt man mit dem Keyword :initial-optional t bei der entsprechenden Variablendefinition. Alternativ kann man :toggle-type :indicator-toggle-data verwenden. Dann erscheint im UI zusaetzlich ein Boolean-Knopf, den der Benutzer dann an oder aus schalten kann. Gruss Dorothea
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MirkoWa Mitglied Konstrukteur
Beiträge: 16 Registriert: 26.09.2002
|
erstellt am: 11. Dez. 2002 13:38 <-- editieren / zitieren --> Unities abgeben:
Hallo Dorothea, jetzt habe ich nur noch eine Frage, mein Programm sieht inzwischen wie folgt aus! Das mit der Abfrage ob die Zeichnung geladen wurde funktioniert nicht richtig. Woher weisst du das alles? Hast du eine Schulung hinter dir oder alles selbst beigebracht? Gruß Mirko Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorothea Mitglied
Beiträge: 242 Registriert: 22.11.2001
|
erstellt am: 11. Dez. 2002 13:52 <-- editieren / zitieren --> Unities abgeben: Nur für MirkoWa
Hallo Mirko, Das ist wieder wie so oft ein Problem mit den Klammern. Ist meist eine gute Sache, einfach mal die Klammern durchzuzaehlen. Manche Editoren bieten da ganz gute Unterstuetzung. Jedenfalls ist :failure ein Parameter fuer sd-call-cmds und muss deshalb innerhalb der schliessenden Klammer fuer sd-call-cmds sein. (sd-call-cmds (AM_LOAD_DRAWING :filename (first V1)) :failure (setf error-case t) ) Zitat:
Woher weisst du das alles? Hast du eine Schulung hinter dir oder alles selbst beigebracht?
Jahrelange Uebung..... Schulungen hatte ich auch, mehrere. Ich arbeite bei CoCreate. Gruss Dorothea
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MirkoWa Mitglied Konstrukteur
Beiträge: 16 Registriert: 26.09.2002
|
erstellt am: 11. Dez. 2002 21:14 <-- editieren / zitieren --> Unities abgeben:
Hallo Dorothea, naja da hab ich ja noch ein bisschen Zeit dies alles zu lernen! Hast du zufällig mit der MoldBase Geschichte bei CoCreate zu tun? Gruß Mirko [Diese Nachricht wurde von MirkoWa am 11. Dezember 2002 editiert.] [Diese Nachricht wurde von MirkoWa am 11. Dezember 2002 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorothea Mitglied
Beiträge: 242 Registriert: 22.11.2001
|
erstellt am: 12. Dez. 2002 07:39 <-- editieren / zitieren --> Unities abgeben: Nur für MirkoWa
|