获取打印机以及相应纸张(更新为批量打印,附件在15楼)
本帖最后由 feng582304 于 2014-11-12 01:12 编辑(defun feng:plot ( / layout file dcl nameli sizeli pr )
(setq layout (vla-get-ActiveLayout (vla-get-ActiveDocument (vlax-get-acad-object)))
file (open (setq dcl (VL-FILENAME-MKTEMP nil nil ".dcl")) "w")
)
(WRITE-LINE
"plot:dialog {\n
label = \"打印配置\" ;\n
width = 100 ;\n
:row {\n
:list_box {\n
label = \"打印机名称:\" ;\n
key = \"name\" ;\n
}
:list_box {\n
label = \"纸张:\" ;\n
key = \"size\" ;\n
height = 50 ;\n
}\n
}\n
ok_cancel;\n
}\n"
file
)
(close file)
(NEW_DIALOG "plot" (LOAD_DIALOG dcl))
(START_LIST "name")
(MAPCAR 'ADD_LIST (setq nameli (cdr (vlax-safearray->list (vlax-variant-value (vla-GetPlotDeviceNames layout))))))
(END_LIST)
(ACTION_TILE "name" "(setq sizeli (feng:plot:size layout nameli $VALUE))")
(ACTION_TILE "accept" "(setq pr (list (GET_TILE \"name\") (GET_TILE \"size\"))) (DONE_DIALOG 1)")
(if (= (START_DIALOG) 1) (princ (setq pr (MAPCAR 'nth (MAPCAR 'atoi pr) (list nameli sizeli)))))
)
(defun feng:plot:size ( layout li nu / sizeli )
(vla-put-ConfigName layout (nth (atoi nu) li))
(vla-RefreshPlotDeviceInfo layout)
(START_LIST "size")
(MAPCAR 'ADD_LIST (setq sizeli (MAPCAR '(LAMBDA (x) (vla-GetLocaleMediaName layout x)) (vlax-safearray->list (vlax-variant-value (vla-GetCanonicalMediaNames layout))))))
(END_LIST)
sizeli
) feng582304 发表于 2014-11-12 01:11
之前的代码中的横竖向判断有点问题,修改了另一种判断方式,应该说现在比较理想可靠。只提供布满比例的打印 ...
不足之后就是无法保存打印设置
建议大师再增加保存设置
如CAD中选择上次打印一样
就算保存在当前图中也好
谢谢 feng582304 发表于 2014-11-12 01:11
之前的代码中的横竖向判断有点问题,修改了另一种判断方式,应该说现在比较理想可靠。只提供布满比例的打印 ...
留着备用,需要批量打印源代码
多谢楼主分享批量打印源码 试用了下,效果不错,感谢楼主的分享 很实用的程序,对于经常打印来说,结合其他源码,可以用来快速设置,判断。。。。 edata 发表于 2014-6-9 10:46 static/image/common/back.gif
很实用的程序,对于经常打印来说,结合其他源码,可以用来快速设置,判断。。。。
跟我想到一块去了!!!我就是想把之前的批量打印整合一下,使得兼容性更好一点。 论坛有个打印配置设置的软件
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=88087&fromuid=338795
也很不错。。。
论坛还有秋枫的批量源码。。
论坛因为你们,资源丰富啊。。。 好像 不会用呢 怎么修改或增加打印机的纸张设置呢? 不错,就是纸规格多时,有点慢 hnfsf 发表于 2014-9-9 18:35 static/image/common/back.gif
怎么修改或增加打印机的纸张设置呢?
修改或增加应该在打印机特性里弄吧,这个是获取列表的一种方式 多谢多谢,我找了好久的代码终于有了