明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1450|回复: 7

[提问] 提供打印机名和纸张名,如何取得该纸张的具体尺寸?

[复制链接]
发表于 2015-3-4 14:56 | 显示全部楼层 |阅读模式
提供打印机名和纸张名,如何取得该纸张的具体尺寸?

比如运行下面的自定义函数:
(get-paper-size "Adobe PDF" "A4")
就得到表(210 297)

这个自定义函数“get-paper-size”如何编写呢?
本人只懂得一点简单的Autolisp,请高手有空帮忙一下,谢谢先

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2015-3-4 16:27 | 显示全部楼层
试试这个吧
  1. (defun get-paper-size (printde paper)
  2.   (setq AcadObject(vlax-get-acad-object)  
  3.       AcadDocument(vla-get-ActiveDocument AcadObject)
  4.         preferenceSel(vla-get-Preferences AcadObject)
  5.         AcadPref(vla-get-Output preferenceSel)
  6.         activeLayoutSel(vla-get-ActiveLayout AcadDocument)
  7.   )
  8.   (vla-put-DefaultOutputDevice AcadPref printde);设置打印设备
  9.   (vla-put-CanonicalMediaName activeLayoutSel paper);图纸大小
  10.   (vla-getpapersize activeLayoutSel 'pWidth 'pHeight)
  11.   (list (atoi (rtos pWidth)) (atoi (rtos pHeight)))
  12. )
 楼主| 发表于 2015-3-4 21:21 | 显示全部楼层
springwillow 发表于 2015-3-4 16:27
试试这个吧

谢谢springwillow帮忙,
但试了下,程序运行到这句(vla-put-CanonicalMediaName activeLayoutSel paper)时出现错误提示:
Automation 错误。 输入无效

能帮忙再改下吗?
发表于 2015-3-5 10:57 | 显示全部楼层
clh521 发表于 2015-3-4 21:21
谢谢springwillow帮忙,
但试了下,程序运行到这句(vla-put-CanonicalMediaName activeLayoutSel paper) ...

要保证你的打印机支持你所设的图纸类型,不支持的话就会出错,所以程序一般都不是这么用的,都是先用代码得至系统的打印机列表,再得到可以纸张列表,然后去选择使用。你这样很容易出现纸线与打印机可以纸张不符的情况,而且你的打印机名称也要和系统中的名称完全一样才行(包括空格)。
 楼主| 发表于 2015-3-5 18:48 | 显示全部楼层
springwillow 发表于 2015-3-5 10:57
要保证你的打印机支持你所设的图纸类型,不支持的话就会出错,所以程序一般都不是这么用的,都是先用代码 ...

我加载此函数后,在命令行输入(get-paper-size "Adobe PDF" "A4")回车也不行哦,"Adobe PDF"我确定是支持"A4"的,
发表于 2015-3-6 08:33 | 显示全部楼层
clh521 发表于 2015-3-5 18:48
我加载此函数后,在命令行输入(get-paper-size "Adobe PDF" "A4")回车也不行哦,"Adobe PDF"我确定是支持 ...


我这里试过了,没有问题。要保证你的CAD装了这个打印机才可以啊!

本帖子中包含更多资源

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

x
 楼主| 发表于 2015-3-6 20:50 | 显示全部楼层
本帖最后由 clh521 于 2015-3-6 21:00 编辑
springwillow 发表于 2015-3-6 08:33
我这里试过了,没有问题。要保证你的CAD装了这个打印机才可以啊!

我仔细测试过了,还是错:
1.先把打印机设置为无,点“应用到布局”,如下图

2.加载函数后,再在命令栏输入(get-paper-size "Adobe PDF" "A4"),就出错了,如下图

3.分析原因:可能是错在这一句上(vla-put-DefaultOutputDevice AcadPref printde);设置打印设备
这一句并没有正确的把打印机设置为"Adobe PDF",所以就出错了

当然了,如果打印机不是设置为“无”,那就不会出错,因为基本上所有的打印机都是支持“A4”图纸的
注:我的CAD是安装了"Adobe PDF"打印机了的。

本帖子中包含更多资源

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

x
发表于 2015-6-19 17:12 | 显示全部楼层
谢谢老师的分享
老师这个不能获取局域网共享的打印机的纸张尺寸,
老师能不能再优化一下呢.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-26 15:18 , Processed in 0.432226 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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