26 Replies Latest reply on Dec 3, 2015 3:59 AM by Heinz Navratil

    "Print to PDF" and save to specified directory

    Shaun Jalbert

      We've been performing "Save as PDF" for creating all of our PDF's but ran into some issues recently and now management wants us to "print to PDF" instead.

       

      For our save as PDF, we had a handy little macro that:

      1) ran the save as PDF command.

      2) saved the PDF to a specified location.

       

      Is it possible to manipulate our API code to do this again, but launch the "Print as PDF" command instead?

      Another issue is that we require the PDF file to be full scale - so is there an option for that too?

       

      Below is our previous code for reference:

       

      Dim swApp As SldWorks.SldWorks

      Dim swModel As SldWorks.ModelDoc2

      Dim sFileName As String

      Dim sPathName As String

      Dim strFullPath As String

      Dim bRet As Boolean

      Dim nErrors As Long

      Dim nWarnings As Long

      Dim Path As String

       

      Sub main()

          Set swApp = Application.SldWorks

          Set swModel = swApp.ActiveDoc

             

          sFileName = Mid(swModel.GetPathName, InStrRev(swModel.GetPathName, "\") + 1)

          sFileName = Left(sFileName, InStrRev(sFileName, ".") - 1)

                

          sPathName = Environ("USERPROFILE") & "\Desktop\Export\"

           

          If Dir(sPathName) = "" Then

                  MkDir sPathName

          End If

       

          sPathName = sPathName & sFileName & ".PDF"

                  

          bRet = swModel.SaveAs4(sPathName, swSaveAsCurrentVersion, swSaveAsOptions_Silent, nErrors, nWarnings)

          Beep

       

          If bRet = False Then

              swApp.SendMsgToUser2 "Problems saving file.", swMbWarning, swMbOk

          End If

       

      End Sub

       

      Public Function FolderFromPath(strFullPath As String) As String

          Dim I As Integer

         

          strFullPath = Left(swModel.GetPathName, InStrRev(swModel.GetPathName, "\") - 1)

             

          For I = Len(strFullPath) To 1 Step -5

              If Mid(strFullPath, I, 1) = "\" Then

                  FolderFromPath = Left(strFullPath, I)

                  Exit For

              End If

          Next

      End Function