Save File as PDF Example (VB.NET)
This example shows how to save multiple drawing sheets to a PDF file.
'----------------------------------------------------------------------------
' Preconditions:
' 1. Specified drawing document to open exists.
' 2. The folder (c:\test) to which to save
' the PDF file exists. If it does not exist,
' create it or change the path to one that
' exists on your system.
'
' Postconditions:
' 1. Specified drawing document is opened.
' 2. All but the last drawing sheet are saved to an array.
' 3. The array of drawing sheets are saved to a PDF
' file called foodprocessor.pdf.
' 4. foodprocessor.pdf opens.
'----------------------------------------------------------------------------
Imports
System.Runtime.InteropServices
Imports
SolidWorks.Interop.sldworks
Imports
SolidWorks.Interop.swconst
Imports
System
Imports
System.Diagnostics
Partial
Class
SolidWorksMacro
Public
Sub main()
Dim
swExportPDFData As
ExportPdfData
Dim
swModel As
ModelDoc2
Dim
swModExt As
ModelDocExtension
Dim
swDrawDoc As
DrawingDoc
Dim
boolstatus As
Boolean
Dim
filename As
String
Dim
errors As
Integer
Dim
warnings As
Integer
Dim
objs() As
Object
Dim
obj As
Object
Dim
dispWrapArr() As
DispatchWrapper
' Save PDF file to this folder and
filename
filename =
"c:\test\foodprocessor.pdf"
'
Open drawing document
swModel = swApp.OpenDoc6("C:\Program
Files\SolidWorks Corp\SolidWorks\samples\tutorial\advdrawings\foodprocessor.slddrw",
swDocumentTypes_e.swDocDRAWING, swOpenDocOptions_e.swOpenDocOptions_Silent,
"",
errors, warnings)
swModExt = swModel.Extension
swExportPDFData = swApp.GetExportFileData(swExportDataFileType_e.swExportPdfData)
' Get the names of the drawing
sheets in the drawing
'
to get the size of the array of drawing sheets
swDrawDoc = swModel
obj = swDrawDoc.GetSheetNames
Dim
count As
Integer
count = UBound(obj)
ReDim
objs(count)
Dim
i As
Integer
'
Activate each drawing sheet, except the last drawing sheet, for
'
demonstration purposes only and add each sheet to an array
'
of drawing sheets
For
i = 0 To
count - 1
boolstatus = swDrawDoc.ActivateSheet(obj(i))
Dim
swSheet As
Sheet
swSheet = swDrawDoc.GetCurrentSheet
objs(i) = swSheet
Next
i
' Convert the .NET array of drawing
sheets objects to IDispatch
dispWrapArr =
ObjectArrayToDispatchWrapperArray(objs)
' Save the drawings sheets to a PDF
file
boolstatus = swExportPDFData.SetSheets(swExportDataSheetsToExport_e.swExportData_ExportSpecifiedSheets,
dispWrapArr)
swExportPDFData.ViewPdfAfterSaving =
True
Debug.Print(swExportPDFData.ViewPdfAfterSaving)
boolstatus = swModExt.SaveAs(filename,
swSaveAsVersion_e.swSaveAsCurrentVersion,
swSaveAsOptions_e.swSaveAsOptions_Silent, swExportPDFData, errors, warnings)
End
Sub
Function
ObjectArrayToDispatchWrapperArray(ByVal
Objects As
Object())
As
DispatchWrapper()
Dim
ArraySize As
Integer
ArraySize =
Objects.GetUpperBound(0)
Dim
d(ArraySize) As
DispatchWrapper
Dim
ArrayIndex As
Integer
For
ArrayIndex = 0 To
ArraySize
d(ArrayIndex) = New
DispatchWrapper(Objects(ArrayIndex))
Next
Return
d
End
Function
Public
swApp As
SldWorks
End
Class