1 Reply Latest reply on Oct 21, 2013 5:12 PM by Kyle Chamberlain

    Change Drawing Reference - DocumentManager

    Kyle Chamberlain

      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