| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Bauteile in IDW selektieren (1955 mal gelesen)
|
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 28. Feb. 2009 13:14 <-- editieren / zitieren --> Unities abgeben:
Hallo In einer Zeichnungsansicht kann man über den Auswahlfilter "Bauteile" alle Linien die zu einem Bauteil gehören gleichzeitig selektieren. Geht das über VB auch? Kurz wo ich hin möchte: Ich habe ein Skript das in einer Schleife alle Linien einzeln durchläuft und im zugehörigen Bauteil nach einem Attribut an der entsprechenden Kante sucht. Nur ganz bestimmte Bauteile haben unter Umständen so ein Attribut. In größeren IDW's dauert es aber viel zu lange alle Linien einzeln zu prüfen. Meine Idee wäre jetzt, erst jeweils ein Bauteil zu nehmen, zu prüfen ob dieses einem Kriterium entspricht das signalisiert "hier kann's kein Attribut geben, nimm das nächste Bauteil". Dann würden in einem Schleifendurchlauf 100-200 Linien auf einmal wegfallen. Dementsprechend möchte ich, wenn ein Bauteil gefunden wurde das Attribute haben kann, aus dem gewählten Bauteil alle Linien prüfen. Damit erhoffe ich mir, die Laufzeit drastisch zu reduzieren. ------------------ MfG RK Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
PaulSchuepbach Moderator Programmierer
Beiträge: 1005 Registriert: 01.10.2003
|
erstellt am: 28. Feb. 2009 13:29 <-- editieren / zitieren --> Unities abgeben: Nur für rkauskh
Hallo, Alle Linien mit einer Iteration zu durchlaufen und dann auf's Bauteil gucken, ob's da ein Attribut gibt, dauert viel zu lange In der Zeichnung weisst Du ja, welches Bauteil abgebildet ist. Also: - Bauteil öffnen (OpenVisible = False) mit AttributeManager.FindObjects findest Du in Sekundenbruchteilen die Flächen/Kanten, die ein bestimmtes AttributeSet und/oder Attribute mit/ohne einem bestimmten Wert beinhalten - der AttributeManager gibt Dir eine ObjectCollection zurück - falls .Count = 0: keine Attribute gefunden - falls .Count > 0: alle gefundenen Elemente sind in der ObjectCollection ---> geht schnell wie das Licht und braucht nur ein paar Zeilen Code HTH ------------------ Grüsse, Paul Inventor-Programmierung, Inventor-Tools und Inventor API-Schulung Meine Tochter auf Youtube Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 28. Feb. 2009 13:35 <-- editieren / zitieren --> Unities abgeben: Nur für rkauskh
|
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 28. Feb. 2009 14:02 <-- editieren / zitieren --> Unities abgeben:
Hallo DANKE euch beiden. Ich habe in der Hilfe schon viele Suchbegriffe probiert, aber den naheliegendsten natürlich ausgelassen. Die IDW stellt aber kein einzelnes Bauteil, sondern eine Baugruppe mit Unterbaugruppen dar. Kann ich dann so rangehen, daß ich über referenzierte Documente mir eine Liste der Bauteile (Baugruppen haben kein Attribut) hole und die mit Öffnen, Prüfen, Schließen durchgehe? EDIT: Stimmt FindAttributes ist im Vergleich zu meiner Methode rasant schnell und mit FindObjects (übrigens Treffer Nr. 3 der Programmierungshilfe ) krieg ich die Objekte in die ObjectCollection. Jetzt steh ich Amateur aber vor dem Problem, wie ich mit der Sammlung einen Bezug zu meinen Linien in der IDW herstelle. Ich habe vorhin unterschlagen, das abhängig vom Attribut die Linien in der IDW auf einen anderen Layer verschoben werden sollen. Sorry, aber es ist manchmal schwer vorweg alle notwendigen Informationen von den überflüssigen zu trennen. ------------------ MfG RK [Diese Nachricht wurde von rkauskh am 28. Feb. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 02. Mrz. 2009 19:56 <-- editieren / zitieren --> Unities abgeben:
Hallo Kann man, wie einen Beitrag höher beschrieben, einen Bezug von der ObjectCollection zu den DrawingCurves in der IDW herstellen? Oder wenn nicht, gibt es einen anderen möglichen Ansatz? ------------------ MfG RK Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 16. Mrz. 2009 00:12 <-- editieren / zitieren --> Unities abgeben:
Hallo Ich hab mir jetzt folgendes gebastelt. 1. Mit findobjects die Collection der Bauteile mit Attribute holen. 2. Über AllLeafOccurrences in der IDW eine Collection aller Bauteile die in der IDW referenziert sind holen 3. Eine Collection aus der "Schnittmenge" der beiden Collectionen bilden. 4. Aus dem DrawingCurvesEnumerator der Collection-Mitglieder die Linien holen und das Attribut aus dem Part holen. Ergebnis: Laufzeit 70 Sekunden, statt 35 Minuten. Danke nochmal für eure Tipps, die mich, wie immer, in die richtige Richtung geschubst haben. ------------------ MfG RK [Diese Nachricht wurde von rkauskh am 16. Mrz. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |