Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Instanzen eines Produktes 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:  Instanzen eines Produktes finden und löschen (785 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: 04. Sep. 2021 22:43    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
ich möchte eine Exceliste erstellen in der alle Produkte eingetragen sind.
(Erledigt)
Was noch nicht erledigt ist - alle Mehrfachverbauungen = Instanzen sollen
im Produkt als auch im Excelsheet nicht mehrvorhanden sein, also gelöscht
sein.
Wer kann mir hierzu einen Anschub geben. Würde mich freuen. Danke

------------------
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: 05. Sep. 2021 08:58    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

Zum löschen in Catia würde ich die Products-Collection mit einer Schleife abarbeiten. Im groben so (kaum getestet).

Code:
Sub CATMain()

Dim oDocument as Document
Dim oRootProduct as Product

Set oDocument = CATIA.ActiveDocument
Set oRootProduct = oDocument.Product

RemoveDoubleInstances oRootProduct.Products

End Sub

Sub RemoveDoubleInstances(oProducts as Products)

Dim i as Integer
Dim j as Integer
Dim oTestInstance as Product
Dim oInstance as Product

for i = oProducts.Count to 2 Step -1
    Set oTestInstance = oProducts.Item(i)
    for j = 1 to (i - 1)
        Set oInstance = oProducts.Item(j)
        If oInstance.ReferenceProduct.PartNumber = oTestInstance.ReferenceProduct.PartNumber then
            oProducts.Remove(i)
            exit for
        end if 
    next
next

End Sub


Um nur die doppelten in Excel zu vermeiden würde ich beim auslesen der Instanzen diese gleich ausschließen. Also im Array/Collection/Dictonary gleich die schon vorhandenen auslassen.

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: 05. Sep. 2021 19:30    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 Deinen Beitrag. Ich hab Dein Script auf Rekursiv umgebaut und es bleiben immer noch doppelte Instanzen übrig.

Sub CATMain()
Dim oDocument as Document
Dim oRootProduct as Product
Set oDocument = CATIA.ActiveDocument
Set oRootProduct = oDocument.Product
RemoveDoubleInstances oRootProduct.Products
End Sub

Sub RemoveDoubleInstances(oProducts)
Dim i as Integer
Dim j as Integer
Dim oTestInstance as Product
Dim oInstance as Product
for i = 1 to oProducts.Count
    Set oTestInstance = oProducts.Item(i)
    'Msgbox oProducts.Item(i).name
    On Error Resume next
    For j = 1 to (i-1)
        Set oInstance = oProducts.Item(j)
        If oInstance.ReferenceProduct.PartNumber = oTestInstance.ReferenceProduct.PartNumber then
            oProducts.Remove(i)
            exit for
        end if
    next
    Set oProductsUebergabe = oProducts.Item(i).Products
    RemoveDoubleInstances(oProductsUebergabe)
next
End Sub

Vieleicht findest Du das Problem.

------------------
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: 05. Sep. 2021 19: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 Nur für Erich 10 Unities + Antwort hilfreich

Servus Erich

Warum hast du On Error Resume next drin? (verwende ich nur sparsam und für wenige Zeilen)
Du bekommst keine Rückmeldung wo ein Fehler auftritt und suchst dir einen Wolf.
Ich würde vor dem rekursiven Aufrufe prüfen, ob es Unterprodukte gibt (oProducts.Item(i).Products.Count <> 0)

Gruß
Bernd

EDIT: gibt es oProducts.Item(i) dann noch? ggf wurde es ja zuvor entfernt

------------------
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: 05. Sep. 2021 19:42    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
On Error Resume next steht wegen folgender Fehlermeldung drin -

Description: The method ReferenceProduct failed.

------------------
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: 05. Sep. 2021 19:46    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

Und warum scheitert ReferenceProduct?
Gibt es das Product noch? cgr-Modus? wrl oder cgr verbaut? ....
ggf musst du dir was anderes zum Vergleichen der Instanzen suchen, wenn es die PartNumber nicht überall gibt.

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: 05. Sep. 2021 20:47    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
Deine Vermutung kann ich ausschließen. Das Produkt muss generellen
Inhalten entsprechen sonst könnte es nicht in einer Datenbank gespeichert
werden. D.h. CGR können in einem Standard-Produkt nicht gespeichert und
die Partnumber ist deswegen auch immer vorhanden.

------------------
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: 05. Sep. 2021 21:33    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

Geht das Makro gar nicht, oder erst nach deiner Modifikation?
Schlägt es an einer bestimmten Instanz fehlt? Was ist an der besonders?

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: 06. Sep. 2021 13: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


test.zip

 
Hallo Bernd
ich habe Dir eine Test-Struktur zusammengestellt. Am Makro habe ich keine weiteren Änderungen vorgenommen.

------------------
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: 06. Sep. 2021 15: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 Erich 10 Unities + Antwort hilfreich

Servus Erich

Da ich kein R30 hab, kann ich dir nicht weiterhelfen.

Gruß
Bernd

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

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: 09. Sep. 2021 19: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 Erich 10 Unities + Antwort hilfreich

Servus Erich

Was mir noch eingefallen ist: ggf geht der Zugriff auf die Partnumber auch direkt über oInstance.PartNumber (also ohne ReferenceProduct)
Steht in der Doku was dazu das sich an ReferenceProduct was in R30 verändert hat?

Gruß
Bernd

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

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