以下代码在2004中能成功得到打印时window选择的区域范围,为何在2007中就不行了。从05开始就没有"Save change to layout"了,有好的什么办法能够得到plot时所选的window范围?谢谢:) (vl-load-com) (defun C:PlotInfos ( / appObj docObj layObj pltObj ll ur) (SaveChangeToLayout t);将"Save change to layout"的勾勾上。
;get some objects (setq appObj (vlax-get-acad-object) docObj (vla-get-ActiveDocument appObj) layObj (vla-get-ActiveLayout docObj) pltObj (vla-get-plot docObj) ) ;get the window corners (vla-GetWindowToPlot layObj 'll 'ur) (setq ll (vlax-safearray->list ll) ur (vlax-safearray->list ur) ) ;display info (princ (strcat "\nPrinter:\t" (vla-get-ConfigName layObj))) ;打印机名 (princ (strcat "\nPaper: \t" (vla-get-CanonicalMediaName layObj))) ;打印纸的大小 (princ (strcat "\nWindow: \t" "(" (rtos(car ll)) "," (rtos(cadr ll)) ")" " to " "(" (rtos(car ur)) "," (rtos(cadr ur)) ")")) ;打印的window的范围 (princ (strcat "\nCopies: \t" (rtos(vla-get-NumberOfCopies pltObj)))) ;打印的数量 (princ) ) ;本程序是可以让在打印对话框中的"Save change to layout"的勾,勾上或不勾。 ;(SaveChangeToLayout t)则勾上 ;(SaveChangeToLayout nil)则不勾上 ;返回值为T
;;;******************************************************************* ;;;一定要将此程序写入Acad200x.lsp中,才能在启动cad的一开始就能得到设置 ;;;******************************************************************* ;;;--------------------------------------- ;;;在RUN中打入regedit,可以查看注册表 ;;;--------------------------------------- (defun SaveChangeToLayout (arg) (and (vl-registry-write (strcat "HKEY_CURRENT_USER\\" (vlax-product-key) "\\Profiles\\" (getvar "cprofile");返回profile的名字 "\\Dialogs\\Plot" ) ;end strcat "SaveChangeToLayout" (if arg "true" "false") );end vl-registry-write );end and );end defun
|