Document Mgr change refs

I am trying to re-reference an assembly to the same namedparts in a different directory. It seems like this code shouldwork. Actually it does but only if the files are a different name.Anyone have any ideas. I'm about all out. Thanks.

 


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

SolidworksApi macros