提供打印机名和纸张名,如何取得该纸张的具体尺寸?
提供打印机名和纸张名,如何取得该纸张的具体尺寸?比如运行下面的自定义函数:
(get-paper-size "Adobe PDF" "A4")
就得到表(210 297)
这个自定义函数“get-paper-size”如何编写呢?
本人只懂得一点简单的Autolisp,请高手有空帮忙一下,谢谢先
试试这个吧(defun get-paper-size (printde paper)
(setq AcadObject(vlax-get-acad-object)
AcadDocument(vla-get-ActiveDocument AcadObject)
preferenceSel(vla-get-Preferences AcadObject)
AcadPref(vla-get-Output preferenceSel)
activeLayoutSel(vla-get-ActiveLayout AcadDocument)
)
(vla-put-DefaultOutputDevice AcadPref printde);设置打印设备
(vla-put-CanonicalMediaName activeLayoutSel paper);图纸大小
(vla-getpapersize activeLayoutSel 'pWidth 'pHeight)
(list (atoi (rtos pWidth)) (atoi (rtos pHeight)))
) springwillow 发表于 2015-3-4 16:27 static/image/common/back.gif
试试这个吧
谢谢springwillow帮忙,
但试了下,程序运行到这句(vla-put-CanonicalMediaName activeLayoutSel paper)时出现错误提示:
Automation 错误。 输入无效
能帮忙再改下吗? clh521 发表于 2015-3-4 21:21 static/image/common/back.gif
谢谢springwillow帮忙,
但试了下,程序运行到这句(vla-put-CanonicalMediaName activeLayoutSel paper) ...
要保证你的打印机支持你所设的图纸类型,不支持的话就会出错,所以程序一般都不是这么用的,都是先用代码得至系统的打印机列表,再得到可以纸张列表,然后去选择使用。你这样很容易出现纸线与打印机可以纸张不符的情况,而且你的打印机名称也要和系统中的名称完全一样才行(包括空格)。 springwillow 发表于 2015-3-5 10:57 static/image/common/back.gif
要保证你的打印机支持你所设的图纸类型,不支持的话就会出错,所以程序一般都不是这么用的,都是先用代码 ...
我加载此函数后,在命令行输入(get-paper-size "Adobe PDF" "A4")回车也不行哦,"Adobe PDF"我确定是支持"A4"的, clh521 发表于 2015-3-5 18:48 static/image/common/back.gif
我加载此函数后,在命令行输入(get-paper-size "Adobe PDF" "A4")回车也不行哦,"Adobe PDF"我确定是支持 ...
我这里试过了,没有问题。要保证你的CAD装了这个打印机才可以啊! 本帖最后由 clh521 于 2015-3-6 21:00 编辑
springwillow 发表于 2015-3-6 08:33 static/image/common/back.gif
我这里试过了,没有问题。要保证你的CAD装了这个打印机才可以啊!
我仔细测试过了,还是错:
1.先把打印机设置为无,点“应用到布局”,如下图
2.加载函数后,再在命令栏输入(get-paper-size "Adobe PDF" "A4"),就出错了,如下图
3.分析原因:可能是错在这一句上(vla-put-DefaultOutputDevice AcadPref printde);设置打印设备
这一句并没有正确的把打印机设置为"Adobe PDF",所以就出错了
当然了,如果打印机不是设置为“无”,那就不会出错,因为基本上所有的打印机都是支持“A4”图纸的
注:我的CAD是安装了"Adobe PDF"打印机了的。 谢谢老师的分享
老师这个不能获取局域网共享的打印机的纸张尺寸,
老师能不能再优化一下呢.
页:
[1]