| |
 | 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: Teilebaum erfassen (1307 mal gelesen)
|
jürgenW Mitglied CAD-Admin

 Beiträge: 73 Registriert: 28.12.2001
|
erstellt am: 24. Mai. 2005 08:06 <-- editieren / zitieren --> Unities abgeben:         
Hallo, ich möchte per LISP den Teilebaum scannen, und alle BG, UnterBG und ET erfassen, deren Namen und Sys-ID in ein File schreiben: z.B. welle#22311234-22354434af665-333 2433356 Ist soweit alles klar. Nur fehlt mir eine Funktion, mit der ich den Baum scannen kann: (setf liste (sd-call-cmds (get_selection :select :all3d))) bringt alles (Teile, Flächen etc. aber keine BG). ....:select :all_on_top auch nur Top-Teile. ...:focus_type *sd-object-seltype* auch nicht alles. Hat jemand einen Rat? Gruss Jürgen
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Klaus Lörincz Mitglied Consultant
  
 Beiträge: 533 Registriert: 06.08.2003 OSD M = aktuell OSD D = aktuell OS M = aktuell auf WIN und HP-UX
|
erstellt am: 24. Mai. 2005 08:27 <-- editieren / zitieren --> Unities abgeben:          Nur für jürgenW
Hallo Jürgen, Du hast mit LISP viele Möglichkeiten: 1) eine Ebene einer BG mit sd-inq-obj-children 2) über nconc und einen rekursiven Aufruf einer Funkjtion 3) Selektion (wie vin Dir angegangen) mit einer check-function --> It's up to your LISP knowledge Ich würde bei dieser Aufgabe in Richtung 2 tendieren. Dabei kannst Du beim scannen das Ergebniss schon auf Deine Anforderungen trimmen und das noch auf eine Ebene bezogen. Grüßle ------------------ Klaus Lörincz 0174 3439 428 Sindelfingen Germany Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RainerH Mitglied Techn. Ang. (Konstruktion)
  
 Beiträge: 736 Registriert: 22.01.2003 OSDM 14.00A OSDD 14.00A MM 14.00A Windows-XP Professional --- HP xw4100 3.0 GHz 2GB RAM Quadro4 980 XGL
|
erstellt am: 24. Mai. 2005 08:28 <-- editieren / zitieren --> Unities abgeben:          Nur für jürgenW
@juergenW muesste auf die Schnelle als DISPLAY-Ausgabe so klappen: (in-package :examples) (use-package :oli)
(sd-defdialog 'teilebaum-ausgabe :dialog-control :sequential :ok-action '(progn (setf teilebaumliste nil) (display "Teilebaumliste:") (setf teilebaumliste (sd-call-cmds (get_selection :focus_type (list *sd-assembly-seltype* *sd-part-seltype* ) :select :recursive :all_at_top ) :failure (sd-display-error (format nil "~a => Beim Erstellen der Teilebaum-Liste" (sd-inq-error-obj :message))) ) ) (dolist (einzelobjekt teilebaumliste) (progn (display (format nil "~a#~a" (sd-inq-obj-basename einzelobjekt) (sd-inq-obj-contents-sysid einzelobjekt))) ) ) ) ) HTH
Gruss RainerH.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorothea Mitglied
 
 Beiträge: 242 Registriert: 22.11.2001
|
erstellt am: 24. Mai. 2005 09:27 <-- editieren / zitieren --> Unities abgeben:          Nur für jürgenW
Hallo, Generell muss man ein bisschen aufpassen, wenn man den gesamten Teilebaum bescannt. Die Loesung mit der rekursiven Selektion ist super wenn man weiss, dass es nicht hunderte von Teilen und Baugruppen sind, die man bekommt. Diese eine Liste wuerde naemlich auf einmal vom Selektor zurueck gegeben werden. Dass das Programm da moeglicherweise "die Backen aufplustert" ist wohl nachvollziehbar. Wenn man sich ebenenweise voran tasted (z.B. mit sd-inq-obj-children) und die Ergebisse immer mit nconc in eine Liste schreibt, dann hat man hinterher eine recht lange Liste. Das mag auch nicht so toll sein. Vielleicht ist es in deinem Fall ja auch moeglich, immer dann die geweunschte Funktion aufzuruefen, wenn man das Objekt auch an der Hand hat. Dann braucht man keine Listen zu verwalten sondern schreibt z.B. die gewuenschte Info direkt ins File. Aber wie gesagt, es haengt echt davon ab, wie gross dein Teilebaum ist. Wenn er klein ist, dann sammel alle Teile und BG auf und schreibe alles auf einmal ins File. Wenn der Teilebaum moeglicherweise recht gross wird, dann ueberleg dir vielleicht eine andere Strategie. Gruss Dorothea
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| |
jürgenW Mitglied CAD-Admin

 Beiträge: 73 Registriert: 28.12.2001 SolidWorks 2008 (SP5) ProFile (8.1) Windows XP (32)
|
erstellt am: 24. Mai. 2005 10:29 <-- editieren / zitieren --> Unities abgeben:         
|