| |
| CATIA V5 Grundkurs | Einsteiger - 5 Std. 15 Min |
| |
| KISTERS 3DViewStation optimiert die Lizenzverwaltung für ihre Kunden, eine Pressemitteilung
|
Autor
|
Thema: Schleife für alle Körper und Geöffnete Körper (660 mal gelesen)
|
martin2 Mitglied Konstrukteur
Beiträge: 1013 Registriert: 05.2002.27
|
erstellt am: 04. Jul. 2023 08:36 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe ein CATPart geöffnet. Ich kann eine Schleife erzeugen, welche durch die ganzen Körper des CATParts läuft: For Zaehler = 1 to part1.Bodies.Count Code Next Zaehler Ich kann eine Schleife erzeugen, welche durch die ganzen Geöffneten Körper des CATParts läuft:
For Zaehler2 = 1 to part1.HybridBodies.Count Code Next Zaehler2 Gibt es eine Möglichkeit anstatt zwei Schleifen nur eine Schleife zu erzeugen welche sowohl die Bodies als auch die HybridBodies in einem Durchgang durchläuft?
Danke! Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Randle_Flag Mitglied
Beiträge: 1 Registriert: 31.03.2003
|
erstellt am: 04. Jul. 2023 08:52 <-- editieren / zitieren --> Unities abgeben: Nur für martin2
Hallo, mit welchem Ziel? Selbst wenn das gehen sollte, was macht man denn wenn es 3 Körper und nur 1 geöffneten Körper gibt? Da es sich hier um zwei unterschiedliche Objekte handelt, wirst du auch zwei Schleifen brauchen. Gruß Randle Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
martin2 Mitglied Konstrukteur
Beiträge: 1013 Registriert: 05.2002.27 Windows 11 / 64bit CATIA V5-6R2020 bis V5-6R2024
|
erstellt am: 04. Jul. 2023 09:49 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe ein CATPart mit vielen Bodies und Hybridbodies. Nun möchte ich für jeden Body ein CATPart erstellen und für jeden Hybridbody ebenfalls. Das funktioniert soweit auch. Jedes neue CATPart wird mit der Zaehlernummer der Schleife abgespeichert. Problem: Wenn ich zwei Schleifen verwende, so stimmt die Reihenfolge nicht mehr. Mit zwei Schleifen kommen zuerst alle Bodys und danach alle HybridBodies. Mit einer Schleife könnte ich die originale Reihenfolge beibehalten. (z.B.: Body, Hybridbody, Body, Hybridbody, Body) Gruß Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Randle Mitglied CAD/PLM Consultant
Beiträge: 744 Registriert: 12.04.2003 Win10 x64 CATIA V5 R18, R19, R21, R27-29
|
erstellt am: 04. Jul. 2023 10:19 <-- editieren / zitieren --> Unities abgeben: Nur für martin2
ok. Dann würde ich mir zwei Collections erstellen (eine für Bodies, eine für HybridBodies). Diese dann jeweils über die zwei Schleifen füllen und dann über eine dritte Schleife beide Collections durchlaufen. Dann solltest du deine gewünschte Reihenfolge beibehalten können. Aber Fehlerbehandlung nicht vergessen, für den Fall das die Anzahl Bodies/HybridBodies nicht gleich ist. Gruß Randle ------------------ Planung ersetzt Fehler durch Irrtum! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
martin2 Mitglied Konstrukteur
Beiträge: 1013 Registriert: 05.2002.27
|
erstellt am: 04. Jul. 2023 13:20 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich steh am Schlauch bzw. ich kann Dir nicht folgen. Eine Collection ist ein Array - korrekt? Ich habe ein CATPart. Dieses hat z.B. folgende Baumstruktur: Körper_1 Geöffneter_Körper_1 Körper_2 Geöffneter_Körper_2 Körper_3 Nun mache ich die Schleife mit den Körpern. Ergebnis: Die erste Collection sieht so aus: Körper_1 Körper_2 Körper_3 Dann die zweite Schleife mit den geöffneten Körpern. Ergebnis: Die zweite Collection sieht so aus: Geöffneter_Körper_1 Geöffneter_Körper_2 Nun der Teil den ich nicht verstehe. Wie funktioniert das mit der dritten Colletion? Woher weis ich an welcher Position ein Körper oder Geöffneter Körper ursprünglich in der Baumstruktur stand? Danke vorab! Martin
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Randle Mitglied CAD/PLM Consultant
Beiträge: 744 Registriert: 12.04.2003 Win10 x64 CATIA V5 R18, R19, R21, R27-29
|
erstellt am: 04. Jul. 2023 13:32 <-- editieren / zitieren --> Unities abgeben: Nur für martin2
Nein eine Collection ist kein Array Habe dir mal ein entsprechendes (rudimentäres/ungetestetes) Codebeispiel geschrieben. Code:
Sub CATMain() Dim BodyCol As New Collection Dim HBodyCol As New Collection Dim PartDoc As PartDocument Dim Prt As Part Dim Bdy As Body Dim HBody As HybridBody Dim i As IntegerSet PartDoc = CATIA.ActiveDocument Set Prt = PartDoc.Part For Each Body In Prt.Bodies BodyCol.Add Body Next For Each HBody In Prt.HybridBodies HBodyCol.Add HBody Next For i = 1 To BodyCol.Count Set Body = BodyCol.Item(i) Set HBody = HBodyCol.Item(i) 'Body, HBody verarbeiten, gemeinsamer Zähler = i Next
End Sub
Um alle Bodies/HybridBodies zu erwischen ist es wichtig das die Anzahl der beiden gleich ist (evtl. Fehlerbehandlung einfügen). Da ich deinen Modellaufbau nicht kenne, weiß ich jetzt natürlich nicht ob die Abhängigkeiten zwischen Body/Hybridbody mit diesem Codebeispiel richtig abgebildet werden. Gruß Randle ------------------ Planung ersetzt Fehler durch Irrtum! [Diese Nachricht wurde von Randle am 04. Jul. 2023 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
martin2 Mitglied Konstrukteur
Beiträge: 1013 Registriert: 05.2002.27
|
erstellt am: 04. Jul. 2023 14:32 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich glaube das klappt so nicht. Wenn die Struktur des CATParts z.B. so wäre: Körper Körper Geöffneter Körper Körper Geöffneter Körper Geöffneter Körper Geöffneter Körper Körper Geöffneter Körper krieg ich die Reihenfolge wieder nicht hin. (Die Reihenfolge und Anzahl der Körper / Geöffneten Körper ist stets anders.) Trotzdem aber Danke für die geleistete Mühe! Gruß Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 12014 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 04. Jul. 2023 18:33 <-- editieren / zitieren --> Unities abgeben: Nur für martin2
Servus Martin Kleiner Hinweis: die Bodies-Collection enthält alle Körper, auch die in einer Booleschen Operation verwendet werden. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |