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.
'---------------------------------------
Imports System.Runtime.InteropServices
Imports SolidWorks.Interop.sldworks
Imports SolidWorks.Interop.swconst
Imports System
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
'
Active 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)
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
'''
<summary>
'''
The SldWorks swApp variable is pre-assigned for you.
'''
</summary>
Public
swApp As SldWorks
End Class