Plot Device functions for AutoLISP. See also pagesetup.lsp and GetPlotDevices.lsp to find paper sizes or plot sizes.. More Free AutoLISP and Visual LISP code snippets for AutoCAD
;;; By Jimmy Bergmark ;;; Copyright (C) 1997-2006 JTB World, All Rights Reserved ;;; Website: www.jtbworld.com ;;; E-mail: info@jtbworld.com ;;; ;;; PlotDevicesFunctions.lsp ;;; ;;; 2003-01-09 More functions added ;;; 2006-07-30 Make it possible to add this lisp into your acaddoc.lsp ;;; 2006-12-15 Corrected a minor bug ;;; (vl-load-com) (defun ActLay () (vla-get-ActiveLayout (vla-get-activedocument (vlax-get-acad-object) ) ) ) ; Return the Plotter configuration name (defun GetActivePlotDevice () (vla-get-ConfigName (ActLay) ) ) ; Return the Plot style table name (defun GetActiveStyleSheet () (vla-get-StyleSheet (ActLay) ) ) ; Force the Plotter configuration to something (defun PutActivePlotDevice (PlotDeviceName) (vla-put-ConfigName (ActLay) PlotDeviceName ) ) ; Force the Plot style table to something (defun PutActiveStyleSheet (StyleSheetName) (vla-put-StyleSheet (ActLay) StyleSheetName ) ) ; Return a list of all Plotter configurations (defun PlotDeviceNamesList () (vla-RefreshPlotDeviceInfo (ActLay)) (vlax-safearray->list (vlax-variant-value (vla-GetPlotDeviceNames (ActLay) ) ) ) ) ; Return a list of all Plot style tables (defun PlotStyleTableNamesList () (vla-RefreshPlotDeviceInfo (ActLay)) (vlax-safearray->list (vlax-variant-value (vla-GetPlotStyleTableNames (ActLay) ) ) ) ) ; If the saved Plotter configuration doesn't exist set it to None (defun PutActivePlotDeviceToNoneIfNotExist () (if (not (member (GetActivePlotDevice) (PlotDeviceNamesList))) (PutActivePlotDevice "None") ) ) ; If the saved Plot style table doesn't exist set it to None (defun PutActiveStyleSheetToNoneIfNotExist () (if (not (member (GetActiveStyleSheet) (PlotStyleTableNamesList)) ) (PutActiveStyleSheet "") ) ) ; Change the Plotter configuration "CompanyStandard.pc3" to your need (defun PutActivePlotDeviceToCompanyStandardIfNotExist () (if (not (member (GetActivePlotDevice) (PlotDeviceNamesList))) (PutActivePlotDevice "CompanyStandard.pc3") ) ) ; Change the Plot style table "CompanyStandard-A3-BW.ctb" to your need (defun PutActiveStyleSheetToCompanyStandardIfNotExist () (if (not (member (GetActiveStyleSheet) (PlotStyleTableNamesList)) ) (PutActiveStyleSheet "CompanyStandard-A3-BW.ctb") ) ) ; Change the Plotter configuration to the default one set in the options ; if the active plot device does not exist (defun PutActivePlotDeviceToDefaultIfNotExistOrNone () (if (or (not (member (GetActivePlotDevice) (PlotDeviceNamesList))) (= (GetActivePlotDevice) "None") ) (if (= (vla-get-UseLastPlotSettings (vla-get-output (vla-get-preferences (vlax-get-acad-object)) ) ) :vlax-true ) (PutActivePlotDevice (getenv "General\\MRUConfig") ) (PutActivePlotDevice (vla-get-DefaultOutputDevice (vla-get-output (vla-get-preferences (vlax-get-acad-object)) ) ) ) ) ) ) ; Change the Plot style table to the default one set in the options ; if the active Plot style table does not exist (defun PutActiveStyleSheetToDefaultIfNotExistOrNone () (if (or (not (member (GetActiveStyleSheet) (PlotStyleTableNamesList)) ) (= (GetActiveStyleSheet) "") ) (PutActiveStyleSheet (vla-get-DefaultPlotStyleTable (vla-get-output (vla-get-preferences (vlax-get-acad-object)) ) ) ) ) ) ; Customize this as you want ; Either force the Plot Device and/or the Style Sheet to something ; or only if the saved setting doesn't exist. ; If the Plot Device (printer, plotter or PC3 file) saved in the drawing ; and that will be used when printing does not exist or is set to None ; set it instead to your default plotter/printer (PutActivePlotDeviceToDefaultIfNotExistOrNone) ; If the Plot Style Table saved in the drawing ; and that will be used when printing does not exist or is set to None ; set it instead to your default plot style table (PutActiveStyleSheetToDefaultIfNotExistOrNone) ; These below can be used if you want them set to None if they don't exists ;(PutActivePlotDeviceToNoneIfNotExist) ;(PutActiveStyleSheetToNoneIfNotExist) ; If you want to enforce another company standard you can ; activate and change in these functions ;(PutActivePlotDeviceToCompanyStandardIfNotExist) ;(PutActiveStyleSheetToCompanyStandardIfNotExist) (princ) |