Replace references in components or drawing views using SOLIDWORKS Document Manager API
This example demonstrates how to replace references (components or drawing views) in SOLIDWORKS files (assemblies or drawings) using Document Manager API.
- Specify the full path to the parent file (e.g. assembly)
- Specify the full path to the document to replace
- Specify the full path to the new document
ISwDMDocument::ReplaceReference SOLIDWORKS Document Manager API method is used to replace the old reference with new one.
Const FILE_PATH As String = "Full path to replace reference in"
Const ORIGINAL_REFERENCE As String = "Full path to reference to be replaced"
Const NEW_REFERENCE As String = "Full path to the new reference"
Const LIC_KEY As String = "Your license key"
Dim swDmApp As SwDocumentMgr.SwDMApplication4
Sub main()
Dim swClassFact As SwDocumentMgr.SwDMClassFactory
Set swClassFact = New SwDocumentMgr.SwDMClassFactory
Set swDmApp = swClassFact.GetApplication(LIC_KEY)
Dim swDmDoc As SwDocumentMgr.SwDMDocument19
Set swDmDoc = OpenDocument(FILE_PATH)
Dim searchOpts As SwDocumentMgr.SwDMSearchOption
Set searchOpts = swDmApp.GetSearchOptionObject
searchOpts.SearchFilters = SwDmSearchFilters.SwDmSearchExternalReference + SwDmSearchFilters.SwDmSearchRootAssemblyFolder + SwDmSearchFilters.SwDmSearchSubfolders + SwDmSearchFilters.SwDmSearchInContextReference
'this method must be called otherwise replacement will fail
swDmDoc.GetAllExternalReferences4 searchOpts, Empty, Empty, Empty
swDmDoc.ReplaceReference ORIGINAL_REFERENCE, NEW_REFERENCE
swDmDoc.Save
End Sub
Function OpenDocument(filePath As String) As SwDocumentMgr.SwDMDocument19
Dim err As SwDmDocumentOpenError
Dim docType As SwDocumentMgr.SwDmDocumentType
Dim ext As String
ext = LCase(Right(filePath, 6))
Select Case ext
Case "sldprt"
docType = swDmDocumentPart
Case "sldasm"
docType = swDmDocumentAssembly
Case "slddrw"
docType = swDmDocumentDrawing
End Select
Dim swDmDoc As SwDocumentMgr.SwDMDocument19
Set swDmDoc = swDmApp.GetDocument(filePath, docType, False, err)
Set OpenDocument = swDmDoc
End Function