Code:
Dim mySel As SelectionSub CATMain()
Dim myActiveDoc As Document
Dim strActiveDocType As String
Set myActiveDoc = CATIA.ActiveDocument
strActiveDocType = TypeName(myActiveDoc)
Set mySel = myActiveDoc.Selection
mySel.Clear
Call walkThroughStructure(myActiveDoc.Product)
End Sub
'Durchlaufen des Strukturbaumes (rekursiv) und Aufruf der Löschfunktion (deleteUserRefProperties)
Private Sub walkThroughStructure(myProd As Product)
Dim myChildDoc As Document
Dim childProd As ProductStructureTypeLib.Product
Dim i As Integer
'Operation am übergebenen Objekt selbst
Debug.Print ("Prod: (" & myProd.Name & ")")
deleteUserRefProperties myProd
For i = 1 To myProd.Products.Count
Debug.Print ("-----------------------------------------------------------------")
Set childProd = myProd.Products.Item(i)
'Debug.Print ("Prod: " & childProd.PartNumber & "(" & childProd.Name & ")")
Debug.Print ("Prod: (" & childProd.Name & ")")
Set myChildDoc = childProd.ReferenceProduct.Parent
Debug.Print ("(" & i & ") Doc: " & myChildDoc.Name & " Prod: " & childProd.PartNumber & "(" & childProd.Name & ")")
strActiveDocType = TypeName(myChildDoc)
Select Case strActiveDocType
Case "PartDocument"
deleteUserRefProperties childProd
Case "ProductDocument"
deleteUserRefProperties childProd
walkThroughStructure childProd
Case Else
End Select
Next
End Sub
'Löschen der UserRefProperties des übergebenen Products mittels Selection
Sub deleteUserRefProperties(myProd As Product)
Dim myParameters As Parameters
Dim myParameter As Parameter
Dim paramName As String
Dim paramCountAtStart As Integer
Dim paramCountAtEnd As Integer
'Dim mySel As INFITF.Selection
Dim myDoc As Document
Set myDoc = myProd.ReferenceProduct.Parent
'Set mySel = myDoc.Selection
mySel.Clear
Set myParameters = myProd.ReferenceProduct.UserRefProperties
paramCountAtStart = myParameters.Count
Debug.Print ("Params at start: " & paramCountAtStart)
For Each myParameter In myParameters
mySel.Add myParameter
Next
If mySel.Count > 0 Then mySel.Delete
mySel.Clear
paramCountAtEnd = myProd.ReferenceProduct.UserRefProperties.Count
Debug.Print ("Params at end : " & paramCountAtEnd)
End Sub