| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für PTC CREO |
| |
| Erstellung von Mehrfach-Konstruktionsdaten , ein Anwenderbericht
|
Autor
|
Thema: Baugruppe durchsuchen (1295 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: 22. Mrz. 2007 12:22 <-- editieren / zitieren --> Unities abgeben:
Mahlzeit! Ich bekomms mal wieder nicht hin (... die Lisp Grundlagen fehlen halt immer noch). Folgendes Problem möchte ich lösen: - Abfragen der Auflösung aller Teile (rekursiv)einer Baugruppe - die kleinste Auflösung herausfinden - alle Teile der Baugruppe auf die kleinste Auflösung setzen Folgendes hab ich schon: Code: ;; Funktion zum wählen aller Teile rekursiv in Baugruppe (select_parts () (setf Teile (sd-call-cmds (get_selection :focus_type *sd-part-seltype* :select :recursive :in_assembly Importdaten))) );end select_parts
Dann hab ich mir gedacht mit dolist durch die Teile zu gehen und mit sd-inq-part-geo-resolution die Auflösung auszulesen. Die Auflösungen in eine Liste schreiben (Wie geht das?). Diese Liste dann nach der kleinsten Auflösung durchsuchen (?). Dann mit set_part_resoluton die Auflösung setzen... ... leider bring ich das nicht selbst zusammen. Hat hier jemand einen Tipp für mich? Gruss Stephan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
highway45 Moderator Bastler mit Diplom
Beiträge: 6378 Registriert: 14.12.2004 CoCreate Modeling V20 + PE6 NotePad++
|
erstellt am: 22. Mrz. 2007 12:36 <-- editieren / zitieren --> Unities abgeben: Nur für StephanWörz
|
Walter Geppert Moderator Frank und Frei
Beiträge: 2164 Registriert: 12.12.2000
|
erstellt am: 22. Mrz. 2007 12:56 <-- editieren / zitieren --> Unities abgeben: Nur für StephanWörz
Zitat: Original erstellt von highway45: ...nur auf das genau.lsp hinweisen
Das sollte sich mit kleinen Anpassungen realisieren lassen. Andererseits finde ich es keine gute Idee, ohne Not ganze Baugruppen zu verschlimmbessern, indem man die Genauigkeit herunterdreht, schon gar nicht vollautomatisch! Wir kriegen auch manchmal die grausamsten Teile als Import, aber lassen das Rundherum nach Möglichkeit auf 10E-6 ------------------ meine LISP-Makros sind auf osd.cad.de 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: 22. Mrz. 2007 13:22 <-- editieren / zitieren --> Unities abgeben:
Hallo Matthias, Hallo Walter! erstmal Danke für die schnelle Antwort! Zitat: Original erstellt von Walter Geppert: Andererseits finde ich es keine gute Idee, ohne Not ganze Baugruppen zu verschlimmbessern, indem man die Genauigkeit herunterdreht, schon gar nicht vollautomatisch! Wir kriegen auch manchmal die grausamsten Teile als Import, aber lassen das Rundherum nach Möglichkeit auf 10E-6 [/i]
... da bin ich ganz Deiner Meinung! In dem speziellen Fall sollen dann aber alle Teile der Baugruppe vereint werden. Somit gibt das ungenaueste Teil sowieso die Auflösung vor. Ich habe Probleme beim vereinigen mit der Meldung bei verschiedenen Auflösungen, deshalb dachte ich ich schraub erst mal alle auf das mieseste runter....
Gruss Stephan
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
3D-Papst Moderator Teamleiter
Beiträge: 3240 Registriert: 11.06.2001 Herr, stärke mich in Geduld, aber ZACK ZACK!!
|
erstellt am: 22. Mrz. 2007 13:48 <-- editieren / zitieren --> Unities abgeben: Nur für StephanWörz
Hallo Stephan, prinzipiell bin ich gegen das Runterschrauben der Auflösung. Denn, wo fängst du an, wo hörst du auf? Heute willst du eine BG vereinen und knüppelst alles auf 1E-3 runter. Morgen willst du eben diese BG mit iener weiteren vereinen die bereits 1E-2 hat. Also knüppelst du die 1E-3 nun auch noch auf 1E-2 runter Wir handhaben das bei uns so dass wir uns das Programm 3D-Evolution von Goretechnologie zugelegt haben. Mit diesem Programm reparieren wir nicht nur defekte Teile oder konvertieren nicht nur fast alle Formate in fast alle Formate......wir haben sogar die Möglichkeit und bringen schlecht auflösende Teile aus dem Web oder aus Fremd-Programmen in unseren 1E-6-Standard. D.h. dass unser Ziel ist KEIN EINZIGES Teil mehr unter 1E-6 in unserer Datenbank zu haben. Mittlerweile haben wir dies auch erreicht Papst ------------------ Der Papst empfiehlt: Hilfeseite und FAQ zum OSM Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Moderator Tastenhauer
Beiträge: 2232 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build10.0.19045.4780 ● Drafting V17~V20.7 ● Modeling V17~V20.7 ● Windchill 12.1.2.6 ● UWGM Client 13.0.0.1
|
erstellt am: 22. Mrz. 2007 13:51 <-- editieren / zitieren --> Unities abgeben: Nur für StephanWörz
Hallo Stephan, ich habe das jetzt mal *trocken* runtergeschrieben. Es wird vermutlich nicht auf anhieb funktionieren (aber Du sollst ja auch noch selber nen Lerneffekt haben ) Code:
(defun select_parts () (let ((Teile (sd-call-cmds (get_selection :focus_type *sd-part-seltype* :select :recursive :in_assembly Importdaten))) (min-res 1000) res ) ;; kleinste Auflösung suchen (dolist (ein-Teil Teile) (setq res (sd-inq-part-geo-resolution ein-Teil)) (setq min-res (min min-res res)) ) ;; kleinste Auflösung setzen (sd-call-cmds (dolist (ein-Teil Teile) (when (> (sd-inq-part-geo-resolution ein-Teil) min-res) ;; gröber? (set_part_resoluton ein-Teil min-res)) ;; -> feiner! ) ) ) );end select_parts
Es wird also keine lange Liste mit allen Teile-Auflösungen aufgebaut, sondern immer nur geguckt, was kleiner ist.
min-res wird mit irgendetwas sehr großem initialisert. (man koennte auch mit NIL anfangen, muesste aber dann in der 1. Schleife dann erst wieder pruefen, ob min-res eine Zahl ist) In der 2. Schlaufe werden dann die Teile verändert (falls notwendig). folgende Anregungen: a) in der 2. Schleife prüfen, ob das Teil evtl. ReadOnly ist b) in der 2. Schleife, das sd-call-cmd bei jedem set_part_resolution anwenden und die :failure Moeglichkeit von sd-call-cmds ausnutzen, ggf. ein Protokoll schreiben ( display "Problem mit Teil xyz") c) in der 2. Schleife einen Zähler inkrementieren, wenn ein Teil verändert wird. Dies wäre ein 'gescheiter' Rückgabewert für die Funktion. Alternative die sel-items der geänderten Teile aufsammlen (push ein-Teil geaenderte-Teile) und dann diese Liste als Rückgabewert nehmen. Ich hoffe etwas auf die Sprünge geholfen zu haben. ------------------ Seamonkey Firefox Thunderbird Seamonkey auf deutsch Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Walter Geppert Moderator Frank und Frei
Beiträge: 2164 Registriert: 12.12.2000
|
erstellt am: 22. Mrz. 2007 13:54 <-- editieren / zitieren --> Unities abgeben: Nur für StephanWörz
|
RainerH Mitglied Techn. Ang. (Konstruktion)
Beiträge: 736 Registriert: 22.01.2003 OSDM 14.00A OSDD 14.50 MM 14.00A Windows-XP Pro x64 Edition -------------------------- HP xw6400 Intel Xeon 3.00 GHz 4.00 GB RAM ATI FireGL V7200
|
erstellt am: 22. Mrz. 2007 14:28 <-- editieren / zitieren --> Unities abgeben: Nur für StephanWörz
@Stephan Das hilft dir wahrscheinlich weiter ... (hier werden alle Teile aufgelistet, welche kleine "1E-006" sind) Ueber das runterschrauben der Aufloesung bin ich genau der selben Meinung - Wuerde es nicht machen Gruss RainerH. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |