Hey K.Siebert,
danke, hat gut gefunzt.
Hab das jetzt aber soweit abgeändert, dass die Revision nicht mehr geändert wird. Leider funktioniert dann nicht mehr der zweite Teil mit der Instance. Aber warum? Ich hab doch nur im ersten Teil was geändert. Zum zweiten Teil änder ich nichts.
Hier mein geändertes Macro:
Language="VBSCRIPT"
' Globale Variable definieren (auch für Subroutinen)
Private Eingabe1
' jetzt gehts weiter
Sub CATMain()
Dim myproduct As Product
Set myproduct = CATIA.ActiveDocument.Product
Box = MsgBox(" Nomenklatur wird gleich dem Filename gesetzt", , "Hinweis")
' Die ganze Produktstruktur wird gescannt
ScanProductStructure myproduct
MsgBox "Alle Nomeklaturen wurden geändert"
End Sub
Sub ScanProductStructure(myproduct2 As Product) ' aus myproduct wird myproduct3
Dim currentprod As Product
Dim ii As Integer
On Error Resume Next
'für CATProducts__________________________________________________________________________
'Filename extrahieren und Endung ab . entfernen
Ausgabe = Left(myproduct2.ReferenceProduct.Parent.Name, InStrRev(myproduct2.ReferenceProduct.Parent.Name, ".") - 1)
myproduct2.Nomenclature = ""&Ausgabe&""
myproduct2.Definition = ""&Ausgabe&""
' Für CATPart_____________________________________________________________________________
For ii = 1 To myproduct2.Products.Count
Set currentprod = myproduct2.Products.Item(ii)
If currentprod.Products.Count = 0 Then
Err.Clear
'Filename extrahieren und Endung ab . entfernen
'für alle Parts
Ausgabe = Left(currentprod.ReferenceProduct.Parent.Name, InStrRev(currentprod.ReferenceProduct.Parent.Name, ".") - 1)
currentprod.Nomenclature = ""&Ausgabe&""
currentprod.Definition = ""&Ausgabe&""
If Err.Number <> 0 Then
End If
Else
ScanProductStructure currentprod.ReferenceProduct
End If
Next
On Error GoTo 0
End Sub
'#################################################################################
'CATScript http://ww3.cad.de/foren/ubb/Forum137/HTML/001678.shtml#000012
Sub Exemplarname()
Set oMainProduct = CATIA.ActiveDocument.product
Dim oMainProducts As Products
Set oMainproducts = oMainProduct.Products
Umbenennen oMainProducts
End Sub
Sub Umbenennen(oProducts As Products)
Dim oPartName As String
Dim oName As String
Dim i As Long
For x = 1 to oProducts.Count
Set oInstance = oProducts.Item(x)
oNumber = oInstance.PartNumber
oName = oInstance.Name
i=0
Do
On Error Resume Next
i = i+1
If i>5000 Then ' Zahl soll angepasst werden
Exit Do
End If
oInstance.Name = oNumber & "." & i
If Err.Number = 0 Then
Umbenennen oProducts.Item(x).ReferenceProduct.Products
Exit Do
ElseIf Err.Number = -2147467259 Then
Err.Clear
Err.Number = 0
Else
Exit Do
End If
Loop
If oInstance.Products.Count > 0 Then
Umbenennen oInstance.Products
End If
Next
End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP