Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Selektion in der Schleife läuft auf Fehler

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:  Selektion in der Schleife läuft auf Fehler (668 / mal gelesen)
Erich
Mitglied
Senior Consultant selbstständig


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

Beiträge: 198
Registriert: 03.10.2000

i7-9850H
RAM 32,0 GB
Nvidia Quadro T2000
Windows 7 Professional 64Bit

erstellt am: 07. Feb. 2020 12:53    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
für folgendes Script bräuchte ich Unterstützung. Es soll
alle Bodies ohne Partbodies im Produkt finden und wenn diese
leer sind, löschen. D.h. diesen Code habe ich hier im Forum
gefunden und etwas erweitert. Nach dem löschen bekomme ich in
der Zeile "Set body1 = Selection1.Item(i).Value" einen Fehler.
Wer kann mir hierzu weiterhelfen. Danke im Vorraus.

Sub CATMain()
  Dim productDocument1
  Dim selection1
  Dim body1
  Dim part1
  Set productDocument1 = CATIA.ActiveDocument
  Set selection1 = productDocument1.Selection
  Selection1.Search "CATPrtSearch.BodyFeature,all" 'Alle Bodies im aktiven Dokument suchen
  For i = 1 To Selection1.Count


      Set body1 = Selection1.Item(i).Value


      Set part1 = body1
      Do While Not TypeName(part1) = "Part"
          Set part1 = part1.parent
      Loop
      If body1.Shapes.Count = 0 And body1.Sketches.Count = 0 And NOT _
      part1.MainBody.GetItem("ModelElement").InternalName = body1.GetItem("ModelElement").InternalName Then
          Selection1.Add body1
          Selection1.Delete
          Selection1.clear
      End If
  Next
End Sub

------------------
mfg
Erich

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: 07. Feb. 2020 18:10    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 Erich 10 Unities + Antwort hilfreich

Servus Erich

Arbeite mal die Schleife von hinten nach vorne ab. Sonst kommt der Zähler etwas durcheinander (die höheren Nummern gibt es nicht mehr).

Code:
For i = Selection1.Count to 1 Step -1

Des weiteren: es gibt nur eine Selektion. Wenn du im ersten Schleifendruchlauf mit Delete alle Elemente löschst oder per Clear alles deselkierts ist ja nichts mehr selektiert du die Schleife läuft in einen Fehler.
Vorschlag: Schleife über die Selektion (von hinten nach vorne laufen lassen), wenn der Körper die Bedingung NICHT erfüllt (Hauptkörper, Elemente im Körper, ...) diesen aus der Selektion entfernen (Remove).
Nach der Schleife über Delete alle noch selektierten Elemente löschen.

Gruß
Bernd

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

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

Erich
Mitglied
Senior Consultant selbstständig


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

Beiträge: 198
Registriert: 03.10.2000

i7-9850H
RAM 32,0 GB
Nvidia Quadro T2000
Windows 7 Professional 64Bit

erstellt am: 09. Feb. 2020 18:25    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 Bernd
vielen Dank für die Hinweise.
Bin wohl das Thema zu schnell angegangen.
Jetzt verstanden und Script läuft.

------------------
mfg
Erich

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