Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Deaktivierte Elemente rekursiv auswählen (Selection)

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Deaktivierte Elemente rekursiv auswählen (Selection) (2707 mal gelesen)
8user8
Mitglied



Sehen Sie sich das Profil von 8user8 an!   Senden Sie eine Private Message an 8user8  Schreiben Sie einen Gästebucheintrag für 8user8

Beiträge: 36
Registriert: 30.07.2010

Catia V5R19 x64
Visual C# 2010

erstellt am: 15. Sep. 2010 18:14    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen,
ich bins mal wieder mit meinem nächsten Problem. Leider bin ich mit hilfe der Suche nicht so richtig fündig geworden und das ewige Try and Error nervt 
Also: ich möchte die Elemente meines MainBody nach deaktivierten Objekten rekursiv durchsuchen(da sie teilweise verschachtelt vorliegen) und jeweils die Kinderobjekte mit in die Selection aufnehmen.

hier mal der code:

Sub CATmain()

Set list = CATIA.ActiveDocument.Selection
list.Clear
Set CATPart = CATIA.ActiveDocument.Part
Set koerperset = CATPart.Bodies

For i = 1 To koerperset.Count
    On Error Resume Next
    Set Feat = CATPart.MainBody.Shapes.Item(i)
    rekurSel Feat, list
    If CATPart.IsInactive(Feat) Then
    list.Add Feat
    End If
Next i

End Sub
-------------------
Sub rekurSel(Feat, list)

For k = 1 To Feat.Shape.Count
    Set child = Feat.Body.Item(k)
    list.Add child
    rekurSel child, list
Next
End Sub

Bisher komm ich nur an die Elemente auf erster Ebene der Baumstruktur. das Makro springt zwar in die sub, aber durchläuft die Schleife nicht. Ich bin mir aber auch unschlüssig ob ich sie richtig definiert hab. wäre schön wenn mir dort weiter geholfen werden könnte 
Und ich hab keine Ahnung wie ich die Kinder-Elemente der inaktiven Objekte selektieren könnte, die sie ja unterschiedlen Typs sein können.

besten Dank fürs weiter helfen und nen schönen Feierabend an die, die es noch lesen 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

8user8
Mitglied



Sehen Sie sich das Profil von 8user8 an!   Senden Sie eine Private Message an 8user8  Schreiben Sie einen Gästebucheintrag für 8user8

Beiträge: 36
Registriert: 30.07.2010

Catia V5R19 x64
Visual C# 2010

erstellt am: 15. Sep. 2010 19:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

zu meinem letzteren Problem: ist eine Selection anhand des Pfades möglich?

das hier klappt nicht, ich kann mir nicht erklären, warum die falschen Elemente ausgewählt werden:

For i = 1 To koerperset.Count
    On Error Resume Next
    Set Feat = CATPart.MainBody.Shapes.Item(i)
    If CATPart.IsInactive(Feat) Then
        list.Add Feat
        For k = 1 To CATPart.MainBody.Shapes.Item(Feat)
            Set child = CATPart.Bodies.Item(k)
            list.Add child
        Next k
    End If
Next i

eigentlich sollten mir damit je die Bodies unter den Shapes selektiert werden, dachte ich. Wenn jemand weiter weiß, ich lasse mir gerne helfen 

besten dank

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 15. Sep. 2010 20:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für 8user8 10 Unities + Antwort hilfreich

Servus
Hast du mal ein Bild des Strukturbaum, mit den deaktivierten Shapes und was du selektieren willst.

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

8user8
Mitglied



Sehen Sie sich das Profil von 8user8 an!   Senden Sie eine Private Message an 8user8  Schreiben Sie einen Gästebucheintrag für 8user8

Beiträge: 36
Registriert: 30.07.2010

Catia V5R19 x64
Visual C# 2010

erstellt am: 15. Sep. 2010 23:50    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Servus,
ein screenshot wird schwierig. Es handelt sich um boolsche Körper (Add/Remove) und darunter jeweils der Body.
Die gepostete Schleife liefert mir aber nicht die richtigen bodys.
oder meinst du nen Screenshot wg der rekursiven Suche? Teilweise befinden sich unter den Bodys weitere boolsche Körper. Diese und deren Unterkörper/Childs will ich dazu noch selektieren.
Darauhin sollen alle gelöscht werden, aber das stellt das geringste Problem dar.
Grüße

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

8user8
Mitglied



Sehen Sie sich das Profil von 8user8 an!   Senden Sie eine Private Message an 8user8  Schreiben Sie einen Gästebucheintrag für 8user8

Beiträge: 36
Registriert: 30.07.2010

Catia V5R19 x64
Visual C# 2010

erstellt am: 16. Sep. 2010 14:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Theoretisch müsste ich die Elemente ja alle als "Shapes" ansprechen können, aber wie komme ich in der Baumstruktur dann eine Ebene tiefer?

Jemand ne Idee?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

tberger
Mitglied
Application Manager CATIA V5 / V6


Sehen Sie sich das Profil von tberger an!   Senden Sie eine Private Message an tberger  Schreiben Sie einen Gästebucheintrag für tberger

Beiträge: 1385
Registriert: 13.01.2007

WIN 7 64bit
V5R21SP3HF49
3DX/V6 R2016x

erstellt am: 16. Sep. 2010 14:48    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für 8user8 10 Unities + Antwort hilfreich

Du könntest (nachdem du den PartBody durchgeforstet hast) eine Schleife über alle Bodies ziehen und dort abfragen, ob der jeweilige Body Bestandteil einer Boole-Operation ist (MyBody.InBooleanOperation). Wenn ja, kannst du deine Suche nach deaktiven Features darin auch laufen lassen und deine Selektion gefundener Features damit erweitern.

EDIT: Fehlerteufel exorziert

------------------
Grüße aus dem Thurgau
Thomas

+++++++++++++++++++++++++++++++++

CATIA - eine Laune der Natur ...

www.tobeplus.de

   tberger@tobeplus.de 

[Diese Nachricht wurde von tberger am 16. Sep. 2010 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

8user8
Mitglied



Sehen Sie sich das Profil von 8user8 an!   Senden Sie eine Private Message an 8user8  Schreiben Sie einen Gästebucheintrag für 8user8

Beiträge: 36
Registriert: 30.07.2010

Catia V5R19 x64
Visual C# 2010

erstellt am: 16. Sep. 2010 15:41    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke fürs Helfen.
Bin grad auf die Suchanfrage "Partdesign->Partdesign Features->Activity" gestoßen. Die Suche über Selection liefert mir was ich brauche, ohne rekusiv alle Elemente durchforsten zu müssen.
Deinen Tipp brauch ich trotzdem, da ich die zugehörigen Bodys auch selektieren muss. Damach ich mich mal ran...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

8user8
Mitglied



Sehen Sie sich das Profil von 8user8 an!   Senden Sie eine Private Message an 8user8  Schreiben Sie einen Gästebucheintrag für 8user8

Beiträge: 36
Registriert: 30.07.2010

Catia V5R19 x64
Visual C# 2010

erstellt am: 16. Sep. 2010 18:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Gibts eine Möglichkeit wahllos alle untergeordneten Element zu selektieren? Aber die müsste dann ja auch rekursiv laufen, hab ich festgestellt. Aber bei mir klappts nichtmal das erste Untergeordnete auszuwählen....

schönen Abend wünsch ich mal.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

tberger
Mitglied
Application Manager CATIA V5 / V6


Sehen Sie sich das Profil von tberger an!   Senden Sie eine Private Message an tberger  Schreiben Sie einen Gästebucheintrag für tberger

Beiträge: 1385
Registriert: 13.01.2007

WIN 7 64bit
V5R21SP3HF49
3DX/V6 R2016x

erstellt am: 16. Sep. 2010 18:23    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für 8user8 10 Unities + Antwort hilfreich

Du kannst in einer Suche auch angeben, wo gesucht werden soll (z.B. in einer Selektion nochmals suchen). Dir dann den Code rausschreiben wie vorhin und bist wieder ein Stück weiter


Beispiel:


Set partDocument1 = CATIA.ActiveDocument

Set selection1 = partDocument1.Selection

selection1.Search "CATPrtSearch.MechanicalFeature.Activity=TRUE,sel"

------------------
Grüße aus dem Thurgau
Thomas

+++++++++++++++++++++++++++++++++

CATIA - eine Laune der Natur ...

www.tobeplus.de

  tberger@tobeplus.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

8user8
Mitglied



Sehen Sie sich das Profil von 8user8 an!   Senden Sie eine Private Message an 8user8  Schreiben Sie einen Gästebucheintrag für 8user8

Beiträge: 36
Registriert: 30.07.2010

Catia V5R19 x64
Visual C# 2010

erstellt am: 17. Sep. 2010 08:06    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Guten morgen,
dieses Selection-Objekt scheint verdammt mächtig zu sein, nur schade, dass es ein wenig träge ist.
danke für den Tipp mit der weiteren Suche. hab jetz einfach alle "Part Design" Elemente aus der Vorherigen Suche verwendet, damit bekommt man alle Untergeordneten Objekte.

Besten Dank und nen schönen Tag wünsch ich

PS: wer braucht schon noch rekursive Schleifen 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz