| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Creo |
| |
| Startup TOOLS , eine App
|
Autor
|
Thema: Teile ausblenden - Teile Verwalten (669 / mal gelesen)
|
MiBr Mitglied Konstrukteur
Beiträge: 576 Registriert: 30.06.2015 HP Z440 Workstation 64GB Modeling 20.1.2.0 (x64) Drafting 20.1.2.0 (64x) klas. UI Modell Manager 20.1.2.0 Ansys Workbeanch 22R2 Mechanicail Pro + FKM Inside
|
erstellt am: 09. Sep. 2024 11:06 <-- editieren / zitieren --> Unities abgeben:
Hallo, als Getriebebauer haben wir schon etwas größere Baugruppe. Da dauert das Ableiten der Zeichnung in Annotation auch schon mal nee halbe Stunde. Besonderes lang dauert es wenn z.B. Federn im Getriebe sind. Wenn diese nicht sichtbare Teile über 'Verwalten' ausgeblendet werden geht das schon viel schneller. Von daher habe ich versucht ein Tool zu schreiben in dem alle Teil die in den Ansichten nicht benötigt wird ausgeblendet werden. Hab es so Programmiert das ich zu allen Linien den Besitzer suche. Und anschließend blende ich alle nicht gefundenen Teile aus. Hört sich ja erstmal gut an, aber leider hänge ich jetzt an einer Stelle und die Performanz lässt bei tausenden Linie auch zu wünschen übrig. Aber irgend was ist ja immer! Folgendes funzt nicht: Mittels 'SW_send_teile_id_of_geo_objekt' hole ich mir die verschiedenen id_of_geo_objekt und lösche anschließend die Duplikate. Anschließend nehme ich die id_of_geo_objekt und füttere diese mit 'SW_send_sys_id_of_geo_objekt' und suche den Pfad der Teile raus. Hierbei findet er aber bei Exemplaren von Baugruppen immer nur das erste Exemplar, siehe Bild. Ich hoffe das war einigermaßen verständlich! Hat jemand ne Idee? Gruß Michael
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: 09. Sep. 2024 16:06 <-- editieren / zitieren --> Unities abgeben: Nur für MiBr
Ohhhh .. jeee.. Den Teil von Zeile 31 bis Zeile 52 würde ich komplett auf Macro Ebene machen. a) ME10 Macro ist sauschnell b) jeder sd-execute-annotator-function call heist: ** gucken ob es einen Annotator.exe gibt, die mit SolidDesigner spricht ** SolidDesigner schickt string an Annotator.exe ** Annotator.exe macht bissle was ** Annotator.exe muss LISP string zusammen bauen und in den 'Briefkasten' werfen ** SolidDesigner muss gucken ob was im 'Briefkasten' ist ** diese gegebenfalls als String ntutzen ** den String lesen und als LISP ausführen. Das ist OVERHEAD und das in einer schleife mit 100.... 1000 schleifchen, Kein Wunder das das schnarcht! Schreib Dir EINEN Makro der das macht. Der möge dann ja untermakros aufrufen, um den code besser zu strukturieren.
Code: DEFMACRO: Get_3D_Partnames_of_view .. ENDMACRO ;; bekommt die UPID der ausgewählten view.
In Zeile 50 bremst du dich zusätzlich aus. Nimm (pprint (car id_nummern_liste)) ; also nicht noch die FNC erneut aufrufen! Wenn Du den Macro gescheit machst hast du schon dort, auf Macroebene, keine Duplicates mehr. NOCH BESSER: Auf Macro Ebene kannst du auch den Subtree der Teile Struktur der Ansicht abfragen, musst also gar nicht über alle GEOs drüber nudeln!!!!
Ähmm da habe ich doch letzte Woche 'nem Kollegen ne Steilvorlage geliefert. Da gibt es schon vorhanden Macros, die man nur geschickt nutzen muss. Zeile 45..56
Code: (setq teile_pfade (mapcar 'sd-inq-obj-pathname (sd-am-view-struct-parts-3d (sd-am-inq-view ausw_besit))))
Zeile 63..67 Gucke da mal nach common Lisp function (set-difference .... ) = Unterschied zwischen 2 Listen. Das ist bestimmt effektiver unterm ____ Strich. -------------------------------------- ausmodellierte Federn erzeugen in der Ableitung immer SPLINCES mit Tonnen von Stützepunkten, das macht die Datenmenge gross. Nun, es heisst ja SYS ID .. also nur EINE für alle Exemplare.
So bissle wild runtergeschrieben heute .. ------------------ ● Firefox ESR ● Java Forum Stuttgart JUGS ● OSD Hilfeseite (de) / help page (en) ● NotePad++ ● BuFDi ● 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: 09. Sep. 2024 16:24 <-- editieren / zitieren --> Unities abgeben: Nur für MiBr
Noch ein TIP zur Macro Definition INNERHALB Lisp code Code: (sd-execute-annotator-command :cmd (format nil "~a~a~a~a~a~a~a~a~a~a~a~a" "DEFINE SW_send_teile_id_of_geo_objekt" " ...." " ...." "END_DEFINE" ))
Da muss man Erbsen zählen, bzw. "~a" s und Zeilen Code: (sd-execute-annotator-command :cmd (format nil "~{~a~%~}" '( "DEFINE SW_send_teile_id_of_geo_objekt" "...." "...." "...." " ..." "END_DEFINE" )))
Hier ändert man einfach den Macro ohne den Format Befehl immer und immer wieder anzupassen => Änderungsfreundlicher. Man schreibt den Macro also als Liste von Strings und der Format Befehl dröselt es richtig auf. ‼️ In beiden Varianten: nicht mit zu langen macros verwenden ‼️ (sd-get-max-cmd-length) beachten! Eselsbrücke: '1000 Zeichen' kann man sich merken! ------------------ ● Firefox ESR ● Java Forum Stuttgart JUGS ● OSD Hilfeseite (de) / help page (en) ● NotePad++ ● BuFDi ● 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: 09. Sep. 2024 17:10 <-- editieren / zitieren --> Unities abgeben: Nur für MiBr
Michael, warum fängst in der Ansicht denn mit den Linien an??? Es gibt den dokumentierten (!!) generischen sel-type *sd-anno-part-seltype*. Code: (setf alle_ME10Teile (sd-call-cmds (get_selection :focus_type *sd-anno-part-seltype* .. in Ansicht X))
Jenen dann noch mit sd-am-inq-unique-name nach würzen. Der beinhaltet dann natürlich auch skizzen und symbole. Die musst Du rechtzeitig mit sd-am-sketch-p, sd-am-symbol-p etc... wieder aussortieren. So, ich habe Euch für den Moment genug voll gelabert.. 😂 ------------------ ● Firefox ESR ● Java Forum Stuttgart JUGS ● OSD Hilfeseite (de) / help page (en) ● NotePad++ ● BuFDi ● Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MiBr Mitglied Konstrukteur
Beiträge: 576 Registriert: 30.06.2015 HP Z440 Workstation 64GB Modeling 20.1.2.0 (x64) Drafting 20.1.2.0 (64x) klas. UI Modell Manager 20.1.2.0 Ansys Workbeanch 22R2 Mechanicail Pro + FKM Inside
|
erstellt am: 12. Sep. 2024 11:43 <-- editieren / zitieren --> Unities abgeben:
Hallo, die Funktion gibt es von Haus aus und wird meinerseits jetzt öfter genuzt. Diese versteckt sich ein wenig im Menü Teile/AE verwalten, da sie erst nach anklicken von 'Erweitern' mit 'Unsicht entf' erscheint, siehe Bild. In der Modelig Hilfe steht:
Zitat: Unsicht entf oder Unsicht hinzu (nur in Creo Elements/Direct Annotation) Legt fest, ob nicht sichtbare Teile oder Arbeitsebenen aus der Komponentenliste der Ansicht entfernt werden sollen. (Creo Elements/Direct Annotation durchsucht zunächst die 2D-Geometrie in der Ansicht, um festzustellen, welche Teile oder Arbeitsebenen in dieser Ansicht tatsächlich sichtbar sind.) Diese Option kommt besonders bei Detailansichten oder Baugruppen mit vielen verdeckten Teilen zum Tragen, weil sie die Zeit für die Aktualisierung von Ansichten wesentlich verkürzen kann.
Kannte ich noch nicht und Danke Wolfgang für die ganze Mühe! Gruß Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
lix b Mitglied Konstrukteur, CAD-Admin
Beiträge: 292 Registriert: 03.10.2014 Creo Elements / Direct Modeling 20.4 Creo Elements / Direct Model Manager 20.4 <P>Notepad++ Win 11
|
erstellt am: 24. Sep. 2024 16:03 <-- editieren / zitieren --> Unities abgeben: Nur für MiBr
Hallo Michael, ich weiß ja nicht wie umfangreich eure Getriebebaugruppen sind. Aber wir aktualisieren unsere Anlagenbaugruppen mit mehreren 100tsd Teilen in 2-3 Minuten. Ich sag zu meinen Kollegen immer, wenn eine Aktualisierung länger als 5 Minuten dauert, passt mit deinen Modellen oder den Ansichtseigenschaften etwas nicht. Features wie die grafische Aktualisierung und das Filtern von kleinen Geometrien schaffen auch riesige Baugruppe in kurzer Zeit. Das Erfassen von, von außen nicht sichtbaren Teilen, ist schon praktisch, aber eher im Bereich der Modellvereinfachung (Know-How-Schutz und Datenexport). Bei Zeichnungsansichten wäre mir das zu viel Aufwand. ------------------ Viele Grüße Felix Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MiBr Mitglied Konstrukteur
Beiträge: 576 Registriert: 30.06.2015 HP Z440 Workstation 64GB Modeling 20.1.2.0 (x64) Drafting 20.1.2.0 (64x) klas. UI Modell Manager 20.1.2.0 Ansys Workbeanch 22R2 Mechanicail Pro + FKM Inside
|
erstellt am: 25. Sep. 2024 08:21 <-- editieren / zitieren --> Unities abgeben:
Hallo Felix, unsere Baugruppen haben eher mehrere hundert Bauteile, also im Prinzip nicht viele. Diese Bauteile, als Getriebebauer natürlich die Zahnräder, haben sehr viele Freiformen bzw. Splineoberflächen. Und wenn ich dann noch Federpakete mit in Getriebe nehme dann habe ich da tausende Flächen die aufwendig berechnet werden müssen. Den grafischen Modus meide ich hierbei ein wenig, weil ich dadurch auch nicht den großen Sprung sehe und ich alle Detial´s benötige. Hab gerade mal ein Einzelteil Zeichnung von einem Kegelrad aktualisiert und dies brauch allein schon 15sek.. Von daher braucht Modeling bei den Getriebezeichnungen so lange. Und wenn ich dann Ansichten habe, die das Getriebe nur von außen zeigen und ich 100te Teile nicht berechnen lassen muss und das mit wenigen Klicks. Dann bin ich schon der Meinung das sich das für mich Lohnt, da die Aktualisierung im Schnitt nur noch halb solang dauert. Werde mir noch ein Tool schreiben, dass alle Ansichten wählt und verdeckte Teile ausblendet, so dass ich nur einmal drücken muss und fertig ist´s. Gruß Michael 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: 25. Sep. 2024 09:48 <-- editieren / zitieren --> Unities abgeben: Nur für MiBr
Zitat: Original erstellt von MiBr: Werde mir noch ein Tool schreiben, dass alle Ansichten wählt und verdeckte Teile ausblendet, so dass ich nur einmal drücken muss und fertig ist´s.
Über den Zaun werf: Code: (manage_parts :this_view (apply 'nconc (mapcar 'oli:sd-am-sheet-struct-views (mapcar 'oli:sd-am-inq-sheet (oli:sd-am-inq-all-sheets)))) :expand_dialog :on :rem_invisible_parts )
Funktioniert aber nicht, weil :rem_invisible_parts / :add_invisible_parts bei multiple selection aus gegraut sind. Also eine Loop über die views: Code: (dolist (a-v (apply 'nconc (mapcar 'oli:sd-am-sheet-struct-views (mapcar 'oli:sd-am-inq-sheet (oli:sd-am-inq-all-sheets))))) (manage_parts :this_view a-v :expand_dialog :on :rem_invisible_parts ) )
manage_parts würde für Flat Views eh keinen Sinn machen, also brauchen wir die auch nicht aufsammeln. PS: ich schreibe sowas mit dem oli:: prefix, da ich es auf der command line via copy'n paste ausprobiere. Giesse ich das später in ein ordentliches LISP file ist "(oli::" schnell durch "(" ausgetauscht und der Code ist wieder sauber. ═══════════════════════════════════════════════════════════ Tadaaaaa! Das war Beitrag Nummer zweitausendzweihundertzweiundzwanzig ═══════════════════════════════════════════════════════════ ------------------ ● Firefox ESR ● Java Forum Stuttgart JUGS ● OSD Hilfeseite (de) / help page (en) ● NotePad++ ● BuFDi ● 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: 25. Sep. 2024 12:37 <-- editieren / zitieren --> Unities abgeben: Nur für MiBr
Zitat: Original erstellt von MiBr: die Funktion gibt es von Haus aus
Michael und ich hatten im Hintergrund noch paar mal hin-und-her gemailt bis zu dem obigen Geistesblitz / Aha-Erlebnis. Eine Teil Aufgabe möchte ich hier noch zur Verfügung stellen, in 3 Varianten. Es ging darum aus einer Liste von Objekt Pfadangaben die 3D Teile zu erhalten. Und das möglichst unfallfrei:
der LISP Novize: Code: (setq meine-teile nil) (dolist (a-path teile-namen-liste) (setf a-obj (sd-pathname-to-obj a-path)) (if a-obj (when (sd-inq-part-p a-obj) (setf meine-teile (append meine-teile (list a-obj))) ) ) )(pprint "Meine TeileListe 01:") (dolist (a-part meine-teile) (pprint (sd-inq-obj-pathname a-part)) )
der Fortgeschrittene: Code: (setq meine-teile nil) (dolist (a-path teile-namen-liste) (when (and (setq a-obj (sd-pathname-to-obj a-path)) (sd-inq-part-p a-obj) ) (push a-obj meine-teile) ) )(pprint "Meine TeileListe 02:") (dolist (a-part meine-teile) (pprint (format nil "* ~S" (sd-inq-obj-pathname a-part))) )
der weit Fortgeschrittene: Code: (setq meine-teile (delete-if-not '(lambda(si)(and(sel_item-p si)(sd-inq-part-p si))) (mapcar 'sd-pathname-to-obj teile-namen-liste))) (format T "~&Meine TeileListe 03:~%~{* ~S~%~}" (mapcar 'sd-inq-obj-pathname meine-teile))
Auf die Sortierung der Listen wurde kein Wert gelegt (das würde vom Context abhängen, ob man es braucht oder nicht) In beigehängtem LISP file könnt ihr oben mit den Pfadangaben rumspielen und dann die Datei einfach reinladen. Übernehmt die Variante, die Euch am besten gefällt und die ihr versteht. ------------------ ● Firefox ESR ● Java Forum Stuttgart JUGS ● OSD Hilfeseite (de) / help page (en) ● NotePad++ ● BuFDi ● Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |