This example shows how to get and set print options.
'-------------------------------------------------------------- ' Preconditions: ' 1. Create a VBA macro in a software product in which VBA is ' embedded. ' 2. Copy and paste this example into the Visual Basic IDE. ' 3. Add a reference to the DraftSight type library, ' install_dir\bin\dsAutomation.dll. ' 4. Start DraftSight and open a document. ' 6. Run the macro. ' ' Postconditions: Message boxes pop up if setting any printer ' option fails for the specified printer. Read the text in each ' message box before clicking OK to close it. '----------------------------------------------------------------
Sub main()
Dim dsApp As DraftSight.Application Dim dsDoc As DraftSight.Document
'Connect to DraftSight Set dsApp = GetObject(, "DraftSight.Application") 'Abort any command currently running in DraftSight 'to avoid nested commands dsApp.AbortRunningCommand
'Get active document Set dsDoc = dsApp.GetActiveDocument() If Not dsDoc Is Nothing Then 'Get and set printing options GetSetPrintOptions dsApp End If
End Sub Sub GetSetPrintOptions(dsApp As DraftSight.Application) Dim dsPrintMgr As DraftSight.PrintManager Dim printerName As String Dim dsVarPaperSizes As Variant Dim paperLength As Double Dim paperWidth As Double Dim rightLength As Double Dim rightWidth As Double Dim paperSize As String Dim precision As Double Dim xOffset As Double Dim yOffset As Double Dim printOrientation As DraftSight.dsPrintOrientation_e Dim centerPrint As Boolean Dim printQuality As Long Dim scaleLineWeight As Boolean Dim scaleToFit As Boolean Dim styleTable As String Dim userScale As Boolean Dim viewDisplayStyle As DraftSight.dsViewDisplayStyle_e
'Get PrintManager Set dsPrintMgr = dsApp.GetPrintManager
If Not dsPrintMgr Is Nothing Then
'Get printer name printerName = "JPG" dsPrintMgr.Printer = printerName If printerName = "" Then MsgBox "Failed to set IPrintManager.Printer property " & printerName & " value." End If
'Get available paper sizes dsVarPaperSizes = dsPrintMgr.AvailablePaperSizes
If IsArray(dsVarPaperSizes) And UBound(dsVarPaperSizes) = 0 Then MsgBox "List of available paper sizes is empty for " & dsPrintMgr.Printer & " printer." End If
'Set paper size to "UserDefinedRaster (87.00 x 134.00Pixels)" paperSize = "UserDefinedRaster (87.00 x 134.00Pixels)" dsPrintMgr.paperSize = paperSize
If paperSize <> dsPrintMgr.paperSize Then MsgBox "Failed to set IPrintManager.PaperSize property to " & paperSize & " value." End If
'Get paper size rightLength = 134 rightWidth = 87 dsPrintMgr.GetPaperSize paperLength, paperWidth
'Verify paper length value precision = 0.000000001 If Abs(rightLength - paperLength) > precision Then MsgBox "IPrintManager.GetPaperSize method returns wrong paper length for '" & paperSize & "' paper size." End If
'Verify paper width value If Abs(rightWidth - paperWidth) > precision Then MsgBox "IPrintManager.GetPaperSize method returns wrong paper width for '" & paperSize & "' paper size." End If
'Set paper size to "VGA_(640.00_x_480.00_Pixels)" paperSize = "VGA_(640.00_x_480.00_Pixels)" dsPrintMgr.paperSize = paperSize
If paperSize <> dsPrintMgr.paperSize Then MsgBox "Failed to set IPrintManager.PaperSize property to " & paperSize & " value." End If
'Get paper size rightLength = 480 rightWidth = 640 dsPrintMgr.GetPaperSize paperLength, paperWidth
'Verify paper length value If Abs(rightLength - paperLength) > precision Then MsgBox "IPrintManager.GetPaperSize method returns wrong paper length for '" & paperSize & "' paper size." End If
'Verify paper width value If Abs(rightWidth - paperWidth) > precision Then MsgBox "IPrintManager.GetPaperSize method returns wrong paper width for '" & paperSize & "' paper size." End If
'Get print margins Dim top As Double Dim bottom As Double Dim left As Double Dim right As Double dsPrintMgr.GetPrintMargins top, bottom, left, right
'Set print offset xOffset = 5# yOffset = 10# dsPrintMgr.SetPrintOffset xOffset, yOffset
'Get print margins Dim resultXOffset As Double Dim resultYOffset As Double
dsPrintMgr.GetPrintOffset resultXOffset, resultYOffset
'Verify print offset values If Abs(resultXOffset - xOffset) > precision Then MsgBox "IPrintManager.GetPrintOffset method returns wrong XOffset value. It should be " & xOffset & ", but it is " & resultXOffset & "." End If
If Abs(resultYOffset - yOffset) > precision Then MsgBox "IPrintManager.GetPrintOffset method returns wrong YOffset value. It should be " & yOffset & ", but it is " & resultYOffset & "." End If
'Set print orientation printOrientation = dsPrintOrientation_Landscape dsPrintMgr.Orientation = printOrientation
'Verify if print orientation was set If printOrientation <> dsPrintMgr.Orientation Then MsgBox "Failed to set IPrintManager.Orientation property. It should be " & printOrientation & ", but it is " & dsPrintMgr.Orientation & "." End If
'Set PrintOnCenter property centerPrint = False dsPrintMgr.PrintOnCenter = centerPrint
If centerPrint <> dsPrintMgr.PrintOnCenter Then MsgBox "Failed to set IPrintManager.PrintOnCenter property to " & centerPrint End If
'Set print quality printQuality = 300 dsPrintMgr.Quality = printQuality
'Set ScaleLineWeight property scaleLineWeight = False dsPrintMgr.scaleLineWeight = scaleLineWeight
If scaleLineWeight <> dsPrintMgr.scaleLineWeight Then MsgBox "Failed to set IPrintManager.ScaleLineWeight property." End If
'Set ScaleToFit property scaleToFit = False dsPrintMgr.scaleToFit = scaleToFit
If scaleToFit <> dsPrintMgr.scaleToFit Then MsgBox "Failed to set IPrintManager.ScaleToFit property to " & scaleToFit End If
'Set StyleTable property styleTable = "default.ctb" dsPrintMgr.styleTable = styleTable
If styleTable <> dsPrintMgr.styleTable Then MsgBox "Failed to set IPrintManager.StyleTable property to " & styleTable End If
'Set UserScale property userScale = False dsPrintMgr.userScale = userScale
'Set ViewDisplayStyle property viewDisplayStyle = dsViewDisplayStyle_Rendered dsPrintMgr.viewDisplayStyle = viewDisplayStyle
If viewDisplayStyle <> dsPrintMgr.viewDisplayStyle Then MsgBox "Failed to set IPrintManager.ViewDisplayStyle property to " & viewDisplayStyle End If
Else MsgBox "IDocument.GetPrintManager returns Nothing." End If End Sub