fonte

;;; 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)