Set productDocument1 = CATIA.ActiveDocument
Set selection = productDocument1.Selection
Set visPropertySet = selection.VisProperties
Set product1 = productDocument1.Product
Set products1 = product1.Products
For m=1 to products1.Count-1
For n=m+1 to products1.Count
str1 = products1.Item(m).PartNumber
str2 = products1.Item(n).PartNumber
if (Instr(str1,str2)) Then
Set producti = products1.Item(n)
Set products1 = producti.Parent
selection.Add producti
Set visPropertySet = visPropertySet.Parent
visPropertySet.SetShow 1
selection.Clear
end if
Next
Next
For i=1 to products1.Count
Set producti = products1.Item(i)
Set products1 = producti.Parent
selection.Add producti
Set visPropertySet = visPropertySet.Parent
visPropertySet.GetShow showstate
selection.Clear
If showstate <> 1 Then '隐藏为1
If not(Instr(products1.Item(i).PartNumber,strName)) Then
j=j+1
str = CStr(int(j))
if j<10 then
str = "0" & str '零件号尾部
end if
if 10<j<=100 then
str = "0" & str '零件号尾部
end if
products1.Item(i).PartNumber= strName & "-" & str '批量修改零件号
strPartNumber = products1.Item(i).PartNumber
products1.Item(i).name = strPartNumber & "." & 1
SaveToFile products1.Item(i), DocPath '保存重命名的文件
end if
end if
Next
' -----------------------------------------------------------
'寻找相同的part,并编号
' -----------------------------------------------------------
k2=1
For m=1 to products1.Count-1
Set producti = products1.Item(m)
Set products1 = producti.Parent
selection.Add producti
Set visPropertySet = visPropertySet.Parent
visPropertySet.GetShow showstate
selection.Clear
If showstate <> 1 Then
For n=m+1 to products1.Count
str1 = products1.Item(m).PartNumber
str2 = products1.Item(n).PartNumber
If (Instr(str1,str2)) Then
k2=k2+1
products1.Item(n).name = str2 & "." & k2
End if
Next
k2=1
End if
Next
Sub SaveToFile(oProduct, DocPath)
'loop inside the product
Dim i 'As Integer
Dim intIncrement 'As Integer
On Error Resume Next
oProduct.ReferenceProduct.Parent.SaveAs DocPath & "\" & oProduct.PartNumber
On Error GoTo 0
For i = 1 To oProduct.Products.Count
Set prdSubProduct = oProduct.Products.Item(i)
If prdSubProduct.HasAMasterShapeRepresentation() Then
Set prdRefProduct = prdSubProduct.ReferenceProduct
Set docSubDocument = prdRefProduct.Parent
strSubFullPath = docSubDocument.FullName
'identification of the component (CATPart or CATProduct)
Dim extension 'As String
If InStr(strSubFullPath, ".CATPart") Then
extension = ".CATPart"
Else
extension = ".CATProduct"
End If
docSubDocument.SaveAs DocPath & "\" & prdRefProduct.Name & extension
CATIA.DisplayFileAlerts = False
Else
Dim oSubSubProds 'As Products
Set oSubSubProds = prdSubProduct.Products
If oSubSubProds.Count > 0 Then
Call SaveToFile(prdSubProduct, DocPath)
End If
End If
Next