Hier ist ein Makro, das das aktive Dokument neu lädt, wenn es sich um ein Teil handelt, oder die ausgewählte Komponente, wenn es sich um eine Baugruppe handelt
Option Explizit
Dim swApp als SldWorks.SldWorks
Sub main()
Dim swModel As SldWorks.ModelDoc2
Dim swPart als SldWorks.PartDoc
Dim swAss As SldWorks.AssemblyDoc
Dim nRetVal As swComponentReloadError_e
Set swApp = CreateObject("SldWorks.Application")
Festlegen von swModel = swApp.ActiveDoc
Case swModel.GetType auswählen
Box swDocumentTypes_e.swDocPART
Legen Sie swPart = swModel fest
swModel.ForceReleaseLocks
nRetVal = swModel.ReloadOrReplace(Falsch, swModel.GetPathName, Wahr)
Box swDocumentTypes_e.swDocASSEMBLY
" Wir testen, ob eine Komponente ausgewählt ist
Dim blUnSelected As Boolean
Festlegen von swAss = swModel
Dim swSelectionMgr As SldWorks.SelectionMgr
Festlegen von swSelectionMgr = swModel.SelectionManager
Wenn swSelectionMgr.GetSelectedObjectCount2(0) = 0, dann blUnSelected = True
if swSelectionMgr.GetSelectedObjectType3(1, 0) <> swSelectType_e.swSelCOMPONENTS then blUnSelected = True
Wenn blUnSelected dann
MsgBox "Bitte wählen Sie eine Komponente aus", vbInformation
Sub beenden
Ende, wenn
' Wir rufen die ausgewählte Komponente ab
Dim swComponent als SldWorks.Component2
Set swComponent = swSelectionMgr.GetSelectedObject6(1, 0)
" Wir laden es auf
Dim swDoc As SldWorks.ModelDoc2
Set swDoc = swComponent.GetModelDoc2
swDoc.ForceReleaseLocks
nRetVal = swDoc.ReloadOrReplace(Falsch, UCase(swDoc.GetPathName), Wahr)
Ende Auswahl
' Bestätigungsmeldung
Dim stErr als Variante
stErr = Array("In Ordnung", "Zugriffsfehler", "Versionsfehler", "Fehler bei geändertem nicht neu geladen", "Ungültige Option", _
"Fehler "Datei nicht gespeichert", "Fehler bei ungültiger Komponente", "Unerwarteter Fehler", "Fehler bei geringer Komponentenaufgabe", _
"Fehler "Datei existiert nicht", "Datei ungültig oder Fehler mit demselben Namen", "Dokument hat keine Ansicht", "Fehler beim Öffnen des Dokuments", _
"Dokumentereignisfehler", "Dokument nicht geändert", "Neuladen abbrechen")
MsgBox CStr(stErr(nRetVal))
" ' Oder wir ersetzen ihn
' Dim stPath als Zeichenfolge: stPath = ...
' Dim stConfigName als Zeichenfolge: stConfigName = ...
' Dim blRet als boolescher Wert
' blRet = swAss.ReplaceComponents(stPfad, stConfigName, Wahr, Wahr)
'
" Wenn blRet, dann
' MsgBox "Austausch erfolgreich", vbInformation
" Sonst
' MsgBox ' Ersatz fehlgeschlagen, vbExclamation
" Ende, wenn
Ende Sub
replace.zip