5 Replies Latest reply on Feb 1, 2016 3:44 AM by Viktor Bovzdarenko

    Macro to save drawing to single PDF and DXF to multiple sheet with Revision

    Remy Snippe

      Hi all,

       

      Hope some of you are able to help me out with a macro.

       

      Currently I am using two macro's. On to save a drawing to a PDF which includes the property 'Current Revision' in the Filename.

       

      I got the Macro from this website and the only change I had to made was  the Propertyname of the Revision property.

       

      This one runs great and the code is as following:

       

      -------------------------------

       

      Sub main()

       

      Dim swApp           As SldWorks.SldWorks

      Dim swModel         As SldWorks.ModelDoc2

      Dim swDrawModel     As SldWorks.ModelDoc2

      Dim swDraw          As SldWorks.DrawingDoc

      Dim swView          As SldWorks.View

      Dim nErrors         As Long

      Dim nWarnings       As Long

      Dim Revision As String

       

      Set swApp = Application.SldWorks

      Set swDrawModel = swApp.ActiveDoc

       

      If swDrawModel Is Nothing Then

              MsgBox "There is no active drawing document"

              Exit Sub

      End If

        

      If swDrawModel.GetType <> swDocDRAWING Then

              MsgBox "Open a drawing first and then TRY again!"

              Exit Sub

      End If

       

      Set swDraw = swDrawModel

       

      Set swView = swDraw.GetFirstView

      Set swView = swView.GetNextView

      Set swModel = swView.ReferencedDocument

       

      If swModel.GetPathName = "" Then

              MsgBox "Insert a View first and then TRY again!"

              Exit Sub

      End If

       

          Revision = swModel.GetCustomInfoValue("", "Current revision")

       

          If Revision = "" Then

       

                  Revision = ""

       

          Else

       

              Revision = "_" & Revision

       

          End If

       

      swDraw.SaveAs3 Left(swDraw.GetPathName, InStrRev(swDraw.GetPathName, ".") - 1) & Prop & Revision & ".PDF", 0, 0

       

      End Sub

       

      ----------------------------------------------

       

      The second one i use is one I also got from this site and I want to use it to save the drawing to DXF with different Sheets.

       

      It is the following one but it does'nt include the Revision in the Filename. It is naming the file '002001-00-04023_-1_1.DXF' instead of '002001-00-04023_0-1_1.DXF' Note the revionnumber '0'in the filename.

       

      The code is the following:

       

      ---------------------------------------------------------

       

      Sub main()

       

          Dim swApp                       As SldWorks.SldWorks

          Dim swModel                     As SldWorks.ModelDoc2

          Dim swDraw                      As SldWorks.DrawingDoc

          Dim vSheetName                  As Variant

          Dim nErrors                     As Long

          Dim nWarnings                   As Long

          Dim nRetval                     As Long

          Dim bShowMap                    As Boolean

          Dim nNumSheet                   As Long

          Dim i                           As Long

          Dim bRet                        As Boolean

          Dim FileName                    As String

         

         

      Set swApp = Application.SldWorks

      Set swModel = swApp.ActiveDoc

       

      ' Is document active?

       

      If swModel Is Nothing Then

       

          swApp.SendMsgToUser2 "A Drawing document must be active.", swMbWarning, swMbOk

       

          Exit Sub

       

      End If

       

       

      ' Is it a Drawing document?

       

      If swModel.GetType <> swDocDRAWING Then

       

          swApp.SendMsgToUser2 "A Drawing document must be active.", swMbWarning, swMbOk

       

          Exit Sub

       

      End If

       

       

      Set swDraw = swModel

       

      ' Rebuild the Drawing

       

          swDraw.ForceRebuild3 (False)

       

          vSheetName = swDraw.GetSheetNames

       

          For i = 0 To UBound(vSheetName)

       

          bRet = swDraw.ActivateSheet(vSheetName(i))

         

      ' Zoom to Fit the Sheet

         

          swDraw.ViewZoomtofit2

       

      'Set File Name Here

         

          FileName = Left(swDraw.GetPathName, InStrRev(swDraw.GetPathName, ".") - 1) ' Strips off the file extension

       

          FileName = FileName & "_" & swModel.GetCustomInfoValue("", "Current revision") & "-" & i + 1 & "_" & swDraw.GetSheetCount

       

          bRet = swModel.SaveAs4(FileName & ".DXF", swSaveAsCurrentVersion, swSaveAsOptions_Silent, nErrors, nWarnings)

       

          Next i

       

      ' Switch back to first sheet

       

          bRet = swDraw.ActivateSheet(vSheetName(0))

       

      End Sub

       

       

      ----------------------------------------------------------------

       

      Now my questions are:

       

      1. What is wrong in the DXF code that is failing to write the property 'Current revision' to the filename.

       

      2 Is it possible to combine both macro's into one?

       

      Hope you can help me out on this.

       

      Kind regards

       

      Remy Snippe