Witaj Cyrylu,
Publikuję cały mój kod. Umieściłem dwie pętle, ponieważ jeśli już zmieniłem nazwy moich elementów, to nie zadziałało, więc najpierw zmieniam ich nazwy za pomocą licznika (1,2,3,4...), a następnie zmieniam ich nazwy za pomocą linijki.
Opcja jawna
Dim swApp jako SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swRootComp jako SldWorks.Component2
Przyciemnione dzieci jako wariant
Dim swChild jako SldWorks.Component2
Dim SwSelData jako SldWorks.SelectData
Dim ChildCount As Long
Dim oldName As String
Dim newName As Ciąg
Słońce j tak długo
Słońce h tak długo
Dim ParentName As Ciąg
Błędy przyciemnieniaZmień nazwę na tak długo
Stan przyciemnienia Jako wartość logiczna
Ostrzeżenia o przyciemnieniu tak długo
Oszczędzaj tak długo
Dim swModelDocExt As ModelDocExtension
Dim swCustProp As CustomPropertyManager
Dim bool As wartość logiczna
Dim val As String
Dim valout As String
Sub main()
Ustaw swApp = Application.SldWorks
Ustaw swModel = swApp.ActiveDoc
ParentName = Lewo(swModel.GetTitle, 7)
Set swRootComp = swModel.ConfigurationManager.ActiveConfiguration.GetRootComponent3(True)
j = 1
h = 1
Komponent trawersu swRootComp, 1
swModel.ForceRebuild3 Prawda
status = swModel.Save3(swSaveAsOptions_SaveReferenced, errorsSave, ostrzeżenia)
Koniec subwoofera
Sub TraverseComponent(swComp As SldWorks.Component2, nLevel As Long)
Dim vChildComp jako wariant
Dim swChildComp As Component2 (Komponent2)
Dim swModelChild jako SldWorks.ModelDoc2
Dim swCustProp As CustomPropertyManager
Dim val As String (Ciąg dim val)
Dim valout As String
Słońce i tak długo
Dim status2 As Boolean
Dim val1 As String (Ciąg znaków
Dim valout1 As String
vChildComp = swComp.GetChildren
Dla i = 0 TB UBound(vChildComp)
Ustaw swChildComp = vChildComp(i)
PrzechodzićKomponent swChildComp, nLevel + 1
swChildComp.Select4 False, SwSelData, False
Set swModelChild = swChildComp.GetModelDoc2
Set swCustProp = swModelChild.Extension.CustomPropertyManager("Default") ' wpisz nazwę konfiguracji wraz z parametrem
Jeśli nie, swCustProp jest niczym, to
status = swCustProp.Get4("SWOODCP_PanelStockLength", False, val, valout)
status2 = swCustProp.Get4("SPRZĘT", Fałsz, val1, valout1)
Jeśli wartość <> "" Lub wartość1 <> "" Wtedy
newName = h
errorsRename = swModel.Extension.RenameDocument(nowaNazwa)
Debug.Print swModelChild.GetTitle & " : " & h & " - " & errorsRename
h = h + 1
Zakończ jeżeli:
Zakończ jeżeli:
Dalej i
Dla i = 0 TB UBound(vChildComp)
Ustaw swChildComp = vChildComp(i)
PrzechodzićKomponent swChildComp, nLevel + 1
swChildComp.Select4 False, SwSelData, False
Set swModelChild = swChildComp.GetModelDoc2
Set swCustProp = swModelChild.Extension.CustomPropertyManager("Default") ' ustawia nazwę konfiguracji wraz z parametrem
Jeśli nie, swCustProp jest niczym, to
status = swCustProp.Get4("SWOODCP_PanelStockLength", False, val, valout)
status2 = swCustProp.Get4("SPRZĘT", Fałsz, val1, valout1)
Jeśli wartość <> "" Lub wartość1 <> "" Wtedy
newName = ParentName & "-000" & j
Jeśli Len(nowaNazwa) > 12, to
newName = Left(nowaNazwa, 8) i Right(nowaNazwa, 4)
Zakończ jeżeli:
errorsRename = swModel.Extension.RenameDocument(nowaNazwa)
Debug.Print swModelChild.GetTitle & " : " & j & " - " & errorsRename
j = d + 1
Zakończ jeżeli:
Zakończ jeżeli:
Dalej i
Koniec subwoofera