明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1947|回复: 8

得到打印区域的信息

[复制链接]
发表于 2008-4-21 20:26 | 显示全部楼层 |阅读模式

以下代码在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

"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2008-4-23 11:45 | 显示全部楼层

我顶啊!有没有办法?:(

发表于 2008-4-23 11:57 | 显示全部楼层
我有时间可惜没有高版本测试,<呵呵,实话说估计我的水平也测试不出来>
所以我也帮你顶~
发表于 2008-4-23 12:55 | 显示全部楼层

06,09版都有啊

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2008-4-23 13:36 | 显示全部楼层

但是现在有没有办法通过VLISP把这个框的钩给钩上呢?谢谢。

发表于 2008-4-23 13:48 | 显示全部楼层

高版本的注册表路径改了

(defun SaveChangeToLayout (arg)
 (and (vl-registry-write
        (strcat "HKEY_CURRENT_USER\\"
                (vlax-product-key) 
                "\\Profiles\\"
                (getvar "cprofile");返回profile的名字
                "\\Dialogs\\Plot Stamp"
         ) ;end strcat
        "SaveChangeToLayout"
        (if arg "true" "false")
      );end vl-registry-write
  );end and
);

 楼主| 发表于 2008-4-23 15:50 | 显示全部楼层
Great! :)
 楼主| 发表于 2008-4-23 16:02 | 显示全部楼层

还有两个问题。
1.有没有办法知道在上次调用打印的时候当设置都做好了最后是选择了ok命令还是canncel命令
2.有没有办法知道上次调用打印是用了extention, display, limited和window的哪种打印区域的选择法是呢?
谢谢。:)

发表于 2008-4-23 22:35 | 显示全部楼层
本帖最后由 作者 于 2008-4-23 23:08:03 编辑

参考vba的对象 PreferencesOutput,

和一些属性

PlotType

UseLastPlotSettings

常规的一些打印设置都保存在当前图形文档中,

我通常在设置好打印后,按一下“应用到布局”,然后 qsave

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-10 15:18 , Processed in 0.142866 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表