Szybkie pytanie, czy możliwe jest naprawienie wszystkich części, zespołów i podzespołów po prostu po otwarciu stopnia, na 1. poziomie nie ma obaw, ale potem trzeba wdrożyć i otworzyć, aby naprawić. Na pewno coś tam jest, ale nie mogę tego znaleźć.
Option Explicit
Dim swApp As SldWorks.SldWorks
Sub main()
Dim swModel As ModelDoc2
Dim swAssy As AssemblyDoc
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swAssy = swModel
TransverseComponents swAssy
swApp.SendMsgToUser "Terminé" & Chr(10) & ":-)"
swAssy.ForceRebuild2 (True)
End Sub
Sub TransverseComponents(swAssy As AssemblyDoc)
Dim vComponents As Variant
Dim i As Integer
Dim swComponent As Component2
Dim swModel As ModelDoc2
Dim swAssembly As AssemblyDoc
vComponents = swAssy.GetComponents(True)
For i = 0 To UBound(vComponents)
Set swComponent = vComponents(i)
Set swModel = swComponent.GetModelDoc2
Debug.Print swComponent.Name2
swComponent.Select4 False, Nothing, False
swAssy.FixComponent
If Not swModel Is Nothing Then
If swModel.GetType = swDocASSEMBLY Then
Set swAssembly = swModel
TransverseComponents swAssembly
End If
End If
Next i
End Sub
@stefbeno, podczas moich pierwszych zastosowań nie zwracałem na to uwagi, ale po uruchomieniu dwa lub trzy razy PRT został naprawiony. Może mały błąd ze względu na nowe wersje, bo jestem w 2020 roku. Może sprawdź z @remrem, czy on też zauważył ten błąd?