Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  deaktivierte Part finden und löschen

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 Part finden und löschen (1678 mal gelesen)
shoutz000
Mitglied
Techn. Produktdesigner


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

Beiträge: 168
Registriert: 19.08.2013

CatiaV5 R19
CatiaV5 R24
Windows 7 Professional

erstellt am: 05. Aug. 2014 08: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 miteinander,
ich habe mal wieder ein Problem oO
Im laufe einer Konstruktion / Entwicklung werden bei uns erst mal
nicht mehr benötigte Parts / Products deaktiviert da man so schneller
wieder darauf zugreifen kann falls man diese doch wieder verwenden
möchte.
Wenn nun die Konstruktion abgeschlossen ist müssen diese nun raus
und dies habe / versuche ich als Makro zu lösen.

Das Makro läuft einwandfrei durch und selektiert alle deaktivierten
Parts / Products. Nun gebe ich die Selection weiter und will diese
löschen. oSel.Delete müsste funktionieren das habe ich schon oft
benutzt. Aber deaktiviertes muss im Assembly ja zuerst aktiviert
werden bevor man es löschen kann. Hier liegt das Problem...
...wie bekomm ich die Elemente der oSel aktiviert?!

Public oSel

Sub CATMain()
Set oProducts = Catia.ActiveDocument.Product.Products
Set oSel = Catia.ActiveDocument.Selection
SUB_Scan oProducts
Call Delete(oProducts , oSel)
End Sub

Sub SUB_Scan(oProducts)
For Each oItem In oProducts
If oItem.Parameters.Count > 0 Then
Set oComActState = oItem.Parameters.Item(oItem.Parent.Parent.PartNumber & "\" & oItem.Name & "\" & "Component Activation State")
If oComActState.Value = 0 Then
oSel.Add(oItem)
Else
If oItem.Products.Count > 0 Then
SUB_Scan oItem.Products
End If
End If
Else
If oItem.Products.Count > 0 Then
SUB_Scan oItem.Products
End If
End If
Next
End Sub

Sub Delete(ByVal oProd As Product, ByRef oSel As Selection)
If oSel.Count > 0 Then
RetCode = MsgBox(oSel.Count & " defekte Bedingungen gefunden. Sollen diese gelöscht werden?", vbYesNo)
If RetCode = vbYes Then

oSel.ActivateDefaultShape

oSel.Delete
End If
End If
End Sub

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

imation1999
Mitglied
dipl.-ing. Maschinenbau


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

Beiträge: 276
Registriert: 02.08.2011

Dell Precision T3500
Intel® Xeon® Quad Core
NVIDIA Quadro® 5000
Win7 x64 Ultimate
CATIA V5 R20 SP2

erstellt am: 07. Aug. 2014 11:49    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 shoutz000 10 Unities + Antwort hilfreich

Hallo,

ich würde es so machen:

Code:

Set oComActState = oItem.Parameters.Item(oItem.Parent.Parent.PartNumber & "\" & oItem.Name & "\" & "Component Activation State")
If oComActState.Value = 0 Then
oComActState.Value = 1
oSel.Add(oItem)


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

shoutz000
Mitglied
Techn. Produktdesigner


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

Beiträge: 168
Registriert: 19.08.2013

CatiaV5 R19
CatiaV5 R24
Windows 7 Professional

erstellt am: 07. Aug. 2014 15:13    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

So bezieht sich das Then aber auf den Aktivierenbefehl und das oSel ist ohne Bezug. Somit kann nichts in die Selection geladen und d.h. auch nichts gelöscht werden oO
Oder hab ich was falsch verstanden?

trotzdem Danke

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

imation1999
Mitglied
dipl.-ing. Maschinenbau


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

Beiträge: 276
Registriert: 02.08.2011

Dell Precision T3500
Intel® Xeon® Quad Core
NVIDIA Quadro® 5000
Win7 x64 Ultimate
CATIA V5 R20 SP2

erstellt am: 07. Aug. 2014 15:24    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 shoutz000 10 Unities + Antwort hilfreich

Code:

If oComActState.Value = 0 Then  'wenn deaktiviert ist
oComActState.Value = 1          'aktiv setzen
oSel.Add(oItem)                  'selection zufügen, was eigentlich deaktiviert war, ist aber schon wieder aktiv


Folgende Reihen sind unnötig:

Code:

If oSel.Count > 0 Then
RetCode = MsgBox(oSel.Count & " defekte Bedingungen gefunden. Sollen diese gelöscht werden?", vbYesNo)
If RetCode = vbYes Then

oSel.ActivateDefaultShape


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

shoutz000
Mitglied
Techn. Produktdesigner


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

Beiträge: 168
Registriert: 19.08.2013

CatiaV5 R19
CatiaV5 R24
Windows 7 Professional

erstellt am: 07. Aug. 2014 15:36    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

ah ok jetzt

[Diese Nachricht wurde von shoutz000 am 07. Aug. 2014 editiert.]

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

shoutz000
Mitglied
Techn. Produktdesigner


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

Beiträge: 168
Registriert: 19.08.2013

CatiaV5 R19
CatiaV5 R24
Windows 7 Professional

erstellt am: 07. Aug. 2014 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

Top funktioniert. Aber warum ist die msbBox unnötig?
Also das ganze sieht jetzt so aus:


Public oSel

Sub CATMain()
Set oProducts = Catia.ActiveDocument.Product.Products
Set oSel = Catia.ActiveDocument.Selection
SUB_Scan oProducts
Call Delete(oProducts , oSel)
End Sub

Sub SUB_Scan(oProducts)
For Each oItem In oProducts
If oItem.Parameters.Count > 0 Then
Set oComActState = oItem.Parameters.Item(oItem.Parent.Parent.PartNumber & "\" & oItem.Name & "\" & "Component Activation State")
If oComActState.Value = 0 Then
oComActState.Value = 1
oSel.Add(oItem)
Else
If oItem.Products.Count > 0 Then
SUB_Scan oItem.Products
End If
End If
Else
If oItem.Products.Count > 0 Then
SUB_Scan oItem.Products
End If
End If
Next
End Sub

Sub Delete(ByVal oProd As Product, ByRef oSel As Selection)
If oSel.Count > 0 Then
RetCode = MsgBox(oSel.Count & " defekte Bedingungen gefunden. Sollen diese gelöscht werden?", vbYesNo)
If RetCode = vbYes Then
oSel.Delete
End If
End If
End Sub

Vielen Dank :-)

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

imation1999
Mitglied
dipl.-ing. Maschinenbau


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

Beiträge: 276
Registriert: 02.08.2011

Dell Precision T3500
Intel® Xeon® Quad Core
NVIDIA Quadro® 5000
Win7 x64 Ultimate
CATIA V5 R20 SP2

erstellt am: 07. Aug. 2014 16: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 Nur für shoutz000 10 Unities + Antwort hilfreich

Wir aktivieren die deaktivierte Componente und selektieren in eine Schleife.
Wenn Du am Ende auf "No" klickst, werden alle Parts und Products aktiv gewesen und werden nicht gelöscht.

[Diese Nachricht wurde von imation1999 am 07. Aug. 2014 editiert.]

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