Hallo Community,
leider muss ich ein 2. mal kurz hintereinander nach hilfe frage. Da mir gerade eben erst weitergeholfen wurde zu dem Replace Problem habe ich nun folgendes Problem:
Mein Makro erstellt von jedem Kind der Hauptbaugruppe ein "Neu aus" und ersetzt diese. Wenn es sich bei dem Kind um eine Baugruppe handelt soll er die Methode rekursiv aufrufen und soll von den Kindern der Baugruppe ebenfalls ein Neu aus erstellen, an diesem Punkt tritt der oben genannte Fehler auf.
Ich habe bereits versucht die Methode vor dem Replace aufzurufen, der Versuch blieb aber ohne Erfolg.
Könnt ihr mir bitte noch einmal weiterhelfen?
Code:
Sub NewFromAssembly()
Dim sOriginProductPath As String
sOriginProductPath = "Pfad"
Dim oNewRootProductDoc As ProductDocument
Set oNewRootProductDoc = CATIA.Documents.NewFrom(sOriginProductPath) 'Neu aus vom Root Produkt
Call NewFromChilds(oNewRootProductDoc)
End SubPrivate Sub NewFromChilds(ProductDoc As ProductDocument)
Dim oCurrentProduct As Product
Dim oNewFromDocPart As PartDocument
Dim oNewFromDocAssembly As ProductDocument
For Each oCurrentProduct In ProductDoc.Product.Products 'Schleife um alle Items durchzugehen
If (TypeName(oCurrentProduct.ReferenceProduct.Parent) = "ProductDocument") Then 'Es handelt sich um ein Produkt oder einer Komponente
If (oCurrentProduct.ReferenceProduct.Parent.Saved) Then 'Das Dokument ist gespeichert -> Neu aus und ersetzen
Set oNewFromDocAssembly = CATIA.Documents.NewFrom(oCurrentProduct.ReferenceProduct.Parent.FullName)
Set nothing1 = ProductDoc.Product.Products.ReplaceProduct(oCurrentProduct, oNewFromDocAssembly.Product, True)
Call NewFromChilds(oNewFromDocAssembly)
oNewFromDocAssembly.Close
End If
ElseIf (TypeName(oCurrentProduct.ReferenceProduct.Parent) = "PartDocument") Then 'Es handelt sich um ein Part
If oCurrentProduct.ReferenceProduct.Parent.Saved Then 'Das Dokument ist gespeichert -> Neu aus und ersetzen
Set oNewFromDocPart = CATIA.Documents.NewFrom(oCurrentProduct.ReferenceProduct.Parent.FullName)
Set nothing1 = ProductDoc.Product.Products.ReplaceProduct(oCurrentProduct, oNewFromDocPart.Product, True)
oNewFromDocPart.Close
End If
End If
Next
End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP