Ever wanted to automate updating plotter device settings (printer/plotter name) on existing drawings and make sure that it updates both model space and all layouts. Here is a CAD Manager trick.
I made a modification of the PlotDevicesFunctions.lsp code.
Just change Device old.pc3 and Device.pc3 to match your needs.
Call (updateAllTabs) and it will update any tab that needs to be updated.
(vl-load-com)
(defun ActLay ()
(vla-get-ActiveLayout
(vla-get-activedocument
(vlax-get-acad-object)
)
)
)
(defun GetActivePlotDevice ()
(vla-get-ConfigName
(ActLay)
)
)
(defun PutActivePlotDevice (PlotDeviceName)
(vla-put-ConfigName
(ActLay)
PlotDeviceName
)
)
(defun updatePlotDevice ()
(if
(=
(GetActivePlotDevice)
"Device old.pc3"
)
(PutActivePlotDevice "Device.pc3")
)
)
(defun updateAllTabs ()
(setvar "CTAB" "Model")
(updatePlotDevice)
(foreach LAYOUT (layoutlist)
(setvar "CTAB" LAYOUT)
(updatePlotDevice)
)
)
This can be added to acaddoc.lsp so it is run on a drawing as soon as it is opened or AutoCAD Automation Tools or SmartPurger can be used to script through a bunch of drawings.
When you use this lisp routine on layouts with different sizes, one of the sizes of the bachground layout is used for each layout. Is there a way to avoid this?
ReplyDeleteHi Richard,
ReplyDeleteIt's probably possible to solve somehow. If interested to pay for the work needed contact me at info@jtbworld.com.