Description
This macro is a one-action solution that exports the active SolidWorks drawing as a PDF file. It combines all the drawing sheets into one single PDF file. This utility is made to be paired with a custom button on the SolidWorks toolbar as a quick one-click way for engineers to create a SolidWorks PDF directly from the drawing environment. The SOLIDWORKS macro to save drawings as PDF makes this process even more efficient by automating the export with a single command.
System Requirements
- SolidWorks Version: SolidWorks 2014 or newer
- Operating System: Windows 7 or later
Pre-Conditions
- The active document must be a saved drawing file (.SLDDRW).
- The drawing file must have a valid path (not saved to read-only).
- This macro is designed to exclusively work with drawing documents and will not work with part or assembly files.
Results
- Every sheet contained in the active drawing is exported into a single PDF file.
- The PDF file is automatically saved in the same directory as the original drawing file, and uses the original drawing name with the extension of .PDF.
- A message box indicates the status of the operation (Completion status or Failure).
Steps to Set Up the Macro
To create the one-click PDF export functionality:
- Create the Macro File: In SolidWorks, choose Tools > Macro > New….
- Save the File: Give the macro a name (e.g., ExportDrawingPDF.swp) and save it to a location you intend to keep it. The VBA editor will launch immediately after.
- Insert the Code: Copy the code from the “VBA Macro Code” below and paste it in the VBA editor, erasing the prefilled content.
- Save and Close: Save in the VBA editor.
- Create the Button on the Toolbar:
- Go to: Tools > Customize (this can also be called Options > Customize).
- Click on the Commands tab.
- Select Macro from the Categories list.
- Click and drag the ‘New Macro Button’ and drop it in an existing toolbar, or create a new custom toolbar.
- Configure the Button: Right-click the new button and select “Customize Macro Button…”.
- Macro File: Browse to the folder where you saved the ExportDrawingPDF.swp and select it.
- Method: Specify the main subroutine.
- Tooltip/Image: Provide an appropriate tooltip (e.g., One-Click Save as PDF) and also provide a toolbar icon.
VBA Macro Code
Visual Basic
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
' Disclaimer: ' The code provided should be used at your own risk. ' Blue Byte Systems Inc. assumes no responsibility for any issues or damages that may arise from using or modifying this code. ' For more information, visit [Blue Byte Systems Inc.](https://bluebyte.biz). Option Explicit ' -------------------------------------------------------------------------- ' Main subroutine to save the active drawing as a PDF file ' -------------------------------------------------------------------------- Sub main() ' Declare and initialize necessary SolidWorks objects Dim swApp As SldWorks.SldWorks ' SolidWorks application object Dim swModel As SldWorks.ModelDoc2 ' Active document object (drawing) Dim swModelDocExt As SldWorks.ModelDocExtension ' Document extension object for saving operations Dim swExportData As SldWorks.ExportPdfData ' PDF export data object Dim boolstatus As Boolean ' Boolean status to capture operation results Dim filename As String ' String to hold the file path of the drawing Dim lErrors As Long ' Error variable for save operation Dim lWarnings As Long ' Warning variable for save operation ' Initialize SolidWorks application and get the active document Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc ' Check if there is an active document open If swModel Is Nothing Then MsgBox "No current document. Please open a drawing and try again.", vbCritical, "No Active Document" End End If ' Check if the active document is a drawing If swModel.GetType <> swDocDRAWING Then MsgBox "This macro only works on drawings. Please open a drawing and try again.", vbCritical, "Invalid Document Type" End End If ' Get the document extension object for saving operations Set swModelDocExt = swModel.Extension ' Get the export PDF data object to specify PDF export options Set swExportData = swApp.GetExportFileData(swExportPDFData) ' Get the file path of the active drawing filename = swModel.GetPathName ' Check if the drawing has been saved previously (it must have a valid file path) If filename = "" Then MsgBox "Please save the file first and try again.", vbCritical, "File Not Saved" End End If ' Generate the PDF file path by changing the file extension to .PDF filename = Strings.Left(filename, Len(filename) - 6) & "PDF" ' Set the export option to include all sheets in the PDF file boolstatus = swExportData.SetSheets(swExportData_ExportAllSheets, 1) ' Save the drawing as a PDF file using the specified filename and options boolstatus = swModelDocExt.SaveAs(filename, 0, 0, swExportData, lErrors, lWarnings) ' Check if the save operation was successful and display a message box If boolstatus Then MsgBox "Save as PDF successful!" & vbNewLine & filename, vbInformation, "Save Successful" Else MsgBox "Save as PDF failed. Error code: " & lErrors, vbExclamation, "Save Failed" End If End Sub |
Macro
You can download the macro from here
Need a Macro Developed to Improve Your Custom Workflow?
Contact us to either customize this macro or build completely new solutions to satisfy your specific workflow needs precisely.