Oto makro, które ponownie wczytuje aktywny dokument, jeśli jest to część, lub wybrany komponent w przypadku złożenia
Opcja jawna
Dim swApp jako SldWorks.SldWorks
Sub main()
Dim swModel As SldWorks.ModelDoc2
Przyciemnij swPart jako SldWorks.PartDoc
Dim swAss jako SldWorks.AssemblyDoc
Dim nRetVal As swComponentReloadError_e
Ustaw swApp = CreateObject("SldWorks.Application")
Ustaw swModel = swApp.ActiveDoc
Wybierz przypadek swModel.GetType
Ramka swDocumentTypes_e.swDocPART
Ustaw swPart = swModel
swModel.ForceReleaseLocks
nRetVal = swModel.ReloadOrReplace(False, swModel.GetPathName, True)
Pudełko swDocumentTypes_e.swDocASSEMBLY
' Sprawdzamy, czy komponent jest wybrany
Dim blUnselected As Boolean
Ustaw swAss = swModel
Dim swSelectionMgr As SldWorks.SelectionMgr
Ustaw swSelectionMgr = swModel.SelectionManager
Jeśli swSelectionMgr.GetSelectedObjectCount2(0) = 0, to blUnSelected = True
Jeśli swSelectionMgr.GetSelectedObjectType3(1, 0) <> swSelectType_e.swSelCOMPONENTS Then blUnSelected = True
Jeśli blUnselected to
MsgBox "Proszę wybrać komponent", vbInformation
Wyjdź z subwoofera
Zakończ jeżeli:
' Pobieramy wybrany komponent
Przyciemnij swComponent jako SldWorks.Component2
Ustaw swComponent = swSelectionMgr.GetSelectedObject6(1, 0)
' Ładujemy go
Dim swDoc jako SldWorks.ModelDoc2
Ustaw swDoc = swComponent.GetModelDoc2
swDoc.ForceReleaseLocks
nRetVal = swDoc.ReloadOrReplace(False, UCase(swDoc.GetPathName), True)
Zakończ wybór
' Wiadomość o potwierdzeniu
Dim stErr As Variant
stErr = Array("Dobrze", "Błąd dostępu", "Błąd wersji", "Zmodyfikowano błąd nie został ponownie załadowany", "Nieprawidłowa opcja", _
"Błąd niezapisania pliku", "Błąd nieprawidłowego komponentu", "Nieoczekiwany błąd", "Błąd lekkiego komponentu", _
"Błąd "Plik nie istnieje", "Błąd nieprawidłowego pliku lub tej samej nazwy", "Dokument nie ma widoku", "Błąd już otwartego dokumentu", _
"Błąd zdarzenia dokumentu", "Dokument nie został zmieniony", "Anuluj ponowne ładowanie")
MsgBox CStr(stErr(nRetVal))
Albo go zastępujemy
' Dim stPath As String: stPath = ...
' Dim stConfigName As String: stConfigName = ...
' Dim blRet As Boolean
' blRet = swAss.ReplaceComponents(stPath, stConfigName, True, True)
'
' Jeśli blRet to
' MsgBox "Wymiana powiodła się", vbInformation
' W przeciwnym razie
' MsgBox ' Zamiana nie powiodła się, vbExquiation
' Koniec, jeśli
Koniec subwoofera
replace.zip