Option Explicit
Dim swApp As SwDocumentMgr.SwDMApplication
Dim swDocMgr As SwDocumentMgr.SwDMApplication
Dim swDoc As SwDocumentMgr.SwDMDocument8
Dim swdoc2 As SwDMDocument
Dim classfac As SwDocumentMgr.SwDMClassFactory
Dim tapp As SwDocumentMgr.SwDMApplication
Dim swconf As SwDocumentMgr.SwDMConfiguration6
Dim swconfmgr As SwDocumentMgr.SwDMConfigurationMgr
Dim filename As String
Dim e As SwDmDocumentOpenError
Dim src As SwDMSearchOption
Dim brokenRefVar As Variant
Dim varRef As Variant
Dim VarOriArr As Variant
Dim VarNewArr As Variant
Dim i As Long
Dim RefArr As Variant
Dim CongArr As Variant
Dim States As Variant
Sub Main()
Set classfac = CreateObject("SwDocumentMgr.SwDMClassFactory")
' Get SolidWorks Document Manager object
Set tapp = classfac.GetApplication("document manager key")'Specify your license key
filename = "C:\My Stuff\Ref Test\Original\Assm1.sldasm"
' Open specified file for write access
Set swDoc = tapp.GetDocument(filename, swDmDocumentAssembly,False, e)
Set src = tapp.GetSearchOptionObject
'***********************SEARCHING FOR REFERENCES TOASSEMBLY******************************
' Get all external references
varRef = swDoc.GetAllExternalReferences2(src, brokenRefVar)
Debug.Print "All External References:"
For i = 0 To UBound(varRef)
Debug.Print varRef(i)
Next i
Debug.Print ""
'**********************CHANGED REFERENCESCALL******************************
'Get changed references
Call swDoc.GetChangedReferences(VarOriArr, VarNewArr)
Debug.Print "All Changed References:"
If (IsEmpty(VarOriArr) = False) Then
For i = 0 To UBound(VarOriArr)
Debug.Print VarOriArr(i) & " ---> " & VarNewArr(i)
Next
End If
'*************************************************************************************
'***************************DEALING WITHCONFIGUATIONS*******************************
Debug.Print ""
' Get name of configuration
Set swconfmgr = swDoc.ConfigurationManager
Set swconf = swconfmgr.GetConfigurationByName("Default")
' Get information about references
Call swconf.GetReferencesInformation(RefArr, CongArr, States)
Debug.Print "Information About References:"
If (IsEmpty(RefArr) = False) Then
For i = 0 To UBound(RefArr)
Debug.Print RefArr(i) & "---> " & CongArr(i) & "--->" & States(i)
Next
End If
Debug.Print ""
'****************************************************************************************
' replace references
Call swDoc.ReplaceReference("C:\My Stuff\RefTest\Original\Part1.SLDPRT", "C:\My Stuff\RefTest\Replaced\Part1.SLDPRT")
Call swDoc.ReplaceReference("C:\My Stuff\RefTest\Original\Part2.SLDPRT", "C:\My Stuff\RefTest\Replaced\Part2.SLDPRT")
Call swDoc.ReplaceReference("C:\My Stuff\RefTest\Original\Part3.SLDPRT", "C:\My Stuff\RefTest\Replaced\Part3.SLDPRT")
' Get changed references
Call swDoc.GetChangedReferences(VarOriArr, VarNewArr)
Debug.Print "Changed References:"
If (IsEmpty(VarOriArr) = False) Then
For i = 0 To UBound(VarOriArr)
Debug.Print VarOriArr(i) & " ---> " & VarNewArr(i)
Next
End If
Debug.Print ""
' Get information about references
Call swconf.GetReferencesInformation(RefArr, CongArr, States)
Debug.Print "Information About References:"
If (IsEmpty(RefArr) = False) Then
For i = 0 To UBound(RefArr)
Debug.Print RefArr(i) & "---> " & CongArr(i) & "--->" & States(i)
Next
End If
swDoc.SaveAs (filename)
'swDoc.save
swDoc.CloseDoc
End Sub