Hier is een macro die het actieve document opnieuw laadt als het een onderdeel is, of het geselecteerde onderdeel in het geval van een assemblage
Optie Expliciete
Dim swApp als SldWorks.SldWorks
Sub hoofd()
Dim swModel als SldWorks.ModelDoc2
Dim swPart As SldWorks.PartDoc
Dim swAss als SldWorks.AssemblyDoc
Dim nRetVal As swComponentReloadError_e
Stel swApp = CreateObject("SldWorks.Application") in
Stel swModel = swApp.ActiveDoc in
Selecteer Case swModel.GetType
Kader swDocumentTypes_e.swDocPART
Stel swPart in = swModel
swModel.ForceReleaseLocks
nRetVal = swModel.ReloadOrReplace(Onwaar, swModel.GetPathName, True)
Doos swDocumentTypes_e.swDocASSEMBLY
'We testen of een component is geselecteerd
Dim blUnGeselecteerd als Booleaans
Stel swAss in = swModel
Dim swSelectionMgr As SldWorks.SelectionMgr
Stel swSelectionMgr = swModel.SelectionManager in
Als swSelectionMgr.GetSelectedObjectCount2(0) = 0 Dan is blUnSelected = Waar
Als swSelectionMgr.GetSelectedObjectType3(1, 0) <> swSelectType_e.swSelCOMPONENTS Dan blUnSelected = Waar
Als blUnSelected Dan
MsgBox "Selecteer a.u.b. een component", vbInformatie
Sub afsluiten
Einde als
' We halen het geselecteerde onderdeel op
Dim swComponent als SldWorks.Component2
Stel swComponent in = swSelectionMgr.GetSelectedObject6(1, 0)
'We laden het op
Dim swDoc als SldWorks.ModelDoc2
Stel swDoc = swComponent.GetModelDoc2 in
swDoc.ForceReleaseLocks
nRetVal = swDoc.ReloadOrReplace(Onwaar, UCase(swDoc.GetPathName), Waar)
Einde selecteren
' Bericht van bevestiging
Dim stErr als variant
stErr = Array("Oké", "Toegangsfout", "Versiefout", "Gewijzigde niet opnieuw geladen fout", "Ongeldige optie", _
"Fout bestand niet opgeslagen", "Ongeldige componentfout", "Onverwachte fout", "Component lichtgewicht fout", _
"Fout Bestand bestaat niet", "Fout bestand ongeldig of dezelfde naam", "Document heeft geen weergave", "Fout Document al geopend", _
"Fout documentgebeurtenis", "Document niet gewijzigd", "Herladen annuleren")
MsgBox CStr(stErr(nRetVal))
'' Of we vervangen hem
' Dim stPath As String: stPath = ...
' dim stConfigName als tekenreeks: stConfigName = ...
' Dim blRet als Booleaanse
' blRet = swAss.ReplaceComponents(stPath, stConfigName, True, True)
'
' Indien blRet Dan
' MsgBox "Vervanging geslaagd", vbInformation
' Anders
'MsgBox' Vervanging mislukt, vbExclamation
' Einde als
Einde Sub
replace.zip