Change Drawing Reference - DocumentManager

Hi there, I have been running up against a consistent issue while trying to replace the referenced file for a drawing with swDM. SwDmDocumentSaveError always returns a zero indicating that it saved happily, but when i check the reference through solidworks open dialog, no change has taken place.

Also i have made absolutely sure that I am using getdocuemnt with the open as read only value set to false. I have additionally tried calling the replace both before, and after using CloseDoc. Either way there are no open errors, no save errors, but no results.

I am aware that this has been touched on in other threads, including this one where i left a very similar comment. Not a lot of traffic there though since it has been marked answered and i decided it would be best to repost this as a new disscussion since the problem obviously has a different solution.

The code I'm using does a lot of other things, so i will just post the relevant (failing) portion here for your picking pleasure.

(and yes, the licKey is present elsewhere in the code, all other swDm methods are working fine)


    'Move drawing files to appropriate folders and re-referenceto new parent files

    For i = LBound(drwFiles) To UBound(drwFiles)

    If Not drwFiles(i) = Empty Then

       

        Set swDoc = swDm.GetDocument(drwFiles(i), SwDmDocumentType.swDmDocumentPart, False, mOpenErrors)

          Debug.Assert (SwDmDocumentOpenError.swDmDocumentOpenErrorNone = nRetVal)

          swDoc.CloseDoc

       

        '/Set an array of existing references

        DrwRefArr = GetDrawingRefs(drwFiles(i))

        '/Find appropriate b or d folder based on partNo

        destFolder = FindDrwFolder(drwFiles(i))

       

            '/use existing reference array to set new references

            Debug.Print "References Replaced for drawing: " & drwFiles(i)

            For j = LBound(DrwRefArr) To UBound(DrwRefArr)

              oldRef = DrwRefArr(j)

             

              If Not oldRef = Empty Then

                'Debug.Print oldRef & " Is not empty"

               

                If InStr(oldRef, "BOX") Or InStr(oldRef, "PUSHER") Then

                    'Debug.Print oldRef & " Is not empty but contains box or pusher"

                    oldRef = ""

                Else

                    newRef = Replace(drwFiles(i), extFind(drwFiles(i)), extFind(oldRef))

                    'newRef = strOutputPath & GetFullPartNo(oldRef) & extFind(oldRef)

                    swDoc.ReplaceReference oldRef, newRef

                    swDoc.Save

                    swDoc.CloseDoc

                        Debug.Print "   OLD REFERENCE: " & oldRef & " has been replaced with NEW REFERENCE: " & newRef

                        Debug.Print ""

                    '/Empty ref containers

                    oldRef = ""

                    newRef = ""

                       

                End If

              Else

              End If

            Next j

       

        newName = destFolder & "\" & GetFullPartNo(drwFiles(i)) & extFind(drwFiles(i))

        newName = UCase(newName)

       

        '/Move Drawing to appropriate b or d folder

        moveError = swDm.MoveDocument(swDoc.FullName, newName, fromChildren, toChildren, vOption, pSrcOption)

            If Not moveError = 0 Then

            Debug.Print "ERROR CODE -" & moveError & "- " & drwFiles(i) & " failed to move to " & FindDrwFolder(newName)

            Debug.Print ""

            Else

            Debug.Print drwFiles(i) & " Has been moved to " & FindDrwFolder(newName)

            Debug.Print ""

            End If

            drwFiles(i) = newName

       

    End If

   

    Set swDoc = Nothing

    destFolder = ""

    refExt = ""

   

    Next i


SolidworksApi macros