Converting AutoCAD Drawings to PDF for Visual Basic.NET
'----------------------------------------------------------------------
' 1) Autodesk AutoCAD 2000 or above should be installed and activated on your PC.
'
' 2) Universal Document Converter 5.2 or above should be installed, too.
'
' 3) Open your project in Microsoft Visual Basic.NET.
'
' 4) In Visual Basic main menu press "Project->Add Reference...".
'
' 5) In "Add Reference" window go to "COM" tab and double click into
' "Universal Document Converter Type Library".
'----------------------------------------------------------------------
Private Sub PrintACADToPDF(ByVal strFilePath As String)
' Define constantsConst acExtents = 1
Const acScaleToFit = 0
Dim nBACKGROUNDPLOT, nFILEDIA, nCMDDIA As LongDim objUDC As UDC.IUDC
Dim itfPrinter As UDC.IUDCPrinter
Dim itfProfile As UDC.IProfile
Dim objACADApp As ObjectDim itfDrawing As ObjectDim itfLayout As ObjectDim itfActiveSpace As ObjectDim AppDataPath As StringDim ProfilePath As String
objUDC = New UDC.APIWrapper
itfPrinter = objUDC.Printers("Universal Document Converter")
itfProfile = itfPrinter.Profile
' Use Universal Document Converter API to change settings of converterd document' Load profile located in folder "%APPDATA%\UDC Profiles".' Value of %APPDATA% variable should be received using Environment.GetFolderPath method.' Or you can move default profiles into a folder you prefer.
AppDataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
ProfilePath = Path.Combine(AppDataPath, "UDC Profiles\Drawing to PDF.xml")
itfProfile.Load(ProfilePath)
itfProfile.OutputLocation.Mode = UDC.LocationModeID.LM_PREDEFINED
itfProfile.OutputLocation.FolderPath = "C:\Out"
itfProfile.PostProcessing.Mode = UDC.PostProcessingModeID.PP_OPEN_FOLDER
' Run AutoCAD as COM-serverOn Error Resume Next
objACADApp = CreateObject("AutoCAD.Application")
' Open drawing from file
itfDrawing = objACADApp.Documents.Open(strFilePath, False)
' Change AutoCAD preferences for scaling the drawing to pageIf itfDrawing.ActiveSpace = 0 Then
itfActiveSpace = itfDrawing.PaperSpace
itfLayout = itfActiveSpace.Layout
Else
itfActiveSpace = itfDrawing.ModelSpace
itfLayout = itfActiveSpace.Layout
End If
itfLayout.PlotType = acExtents
itfLayout.UseStandardScale = True
itfLayout.StandardScale = acScaleToFit
itfLayout.CenterPlot = True
nBACKGROUNDPLOT = itfDrawing.GetVariable("BACKGROUNDPLOT")
nFILEDIA = itfDrawing.GetVariable("FILEDIA")
nCMDDIA = itfDrawing.GetVariable("CMDDIA")
Call itfDrawing.SetVariable("BACKGROUNDPLOT", 0)
Call itfDrawing.SetVariable("FILEDIA", 0)
Call itfDrawing.SetVariable("CMDDIA", 0)
itfDrawing.Plot.QuietErrorMode = True ' Plot the drawingCall itfDrawing.Plot.PlotToDevice("Universal Document Converter")
' Restore AutoCAD default preferencesCall itfDrawing.SetVariable("BACKGROUNDPLOT", nBACKGROUNDPLOT)
Call itfDrawing.SetVariable("FILEDIA", nFILEDIA)
Call itfDrawing.SetVariable("CMDDIA", nCMDDIA)
' Close drawingCall itfDrawing.Close(False)
itfDrawing = Nothing
' Close Autodesk AutoCADCall objACADApp.Quit()
objACADApp = Nothing
End Sub