布局的批量打印程序-很好用,但还缺一点点
本帖最后由 逐月飞鸿 于 2011-11-5 09:43 编辑;;;把所有布局出图;;;;;;程序设计:lfs;hnrbi;;;2011.11.04;;---------------;;;
(defun C:bj (/ N PLO_LAYOUTS PLO_LAYOUTL)
(command "_.layout" "delete" "Layout1")
;del掉原来大师多余的布局
; -取得注册表中默认打印机--------------------------------------------------------
(defun defultprint (/ device)
(substr (setq device
(vl-registry-read
"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Windows"
"Device"
) ;_ 结束vl-registry-read
) ;_ 结束setq
1
(vl-string-search "," device)
) ;_ 结束substr
) ;_ 结束defun
; ==取得注册表中默认打印机end========================================================
(command ".ucs" "W")
(command "setvar" "dimzin" "0")
(command "setvar" "DYNMODE" "0")
(setq myprint (defultprint))
(setq ctb_type "monochrome.ctb")
(command "osnap" "off")
(vl-load-com) ;==================================
;取得打印纸张打印
(setq papersc (getstring "\n出图大小A3/A4:<A3>"))
(setq scale "unknow")
(if (or (= papersc "") (= papersc "3"))
(setq scale 1)
(setq scale 0.707)
) ;_ 结束if
(if (or (= papersc "") (= papersc "3"))
(setq paper "A3")
(setq paper "A4")
) ;_ 结束if
(setq printtype (getstring "\n打印全部布局/当前布局:<A>"))
(setq printt "unknow")
(setq PLO_LAYOUTS (LAYOUTLIST))
(setq PLO_LAYOUTSL (length PLO_LAYOUTS))
(setq N 0)
(if (or (= printtype "") (= printtype "A") (= printtype "a"))
((repeat PLO_LAYOUTSL
(command ".plot"
"y"
(nth N PLO_LAYOUTS)
myprint
paper
"M"
"L"
""
"L"
scale
""
;;;输入打印偏移 (x,y) <0.00,0.00>:
"Y"
ctb_type
""
""
""
""
""
""
""
) ;_ 结束command
(setq N (1+ N))
) );_ 结束repeat)
(打印当前布局语句,抽空再完善)
) ;_ 结束if
; ==============================================================================
(princ)
) ;_ 结束defun
上面是昨天抽空改写的一段批量打印布局的程序;很好用,自动完成了页面设置和打印机的自动获取;
但是,美中不足的地方:
1.用lisp怎样获取当前的布局名称,并且只打印当前布局的语句,请高人给指点一下;
2.对于layout1不打印,现在采取的是删除的办法,这个感觉不是很好,采用什么方法不删除,但是确不打印layout1?
就是说,只有一个layout1名称的布局时候,就不打印了,但是也不删除layout1?
请lisp高人给完善一下,先谢!
3.有没有办法实现,打开的文档都执行一下这个命令?就是说输入bj后,打开的文档都打印布局?
不错,值得学习 获取当前的布局名称:(getvar "ctab")
个人认为布局的批量打印适用性很低,远不如在模型空间中的批量打印有用。出几张图就不用编程了,直接用CAD的打印命令好了。 布局CAD就自带有打印程序,但是不支持一个布局中有很多图的情况。但写程序来打印还是很有用的,值得学习 能不能有大侠给完善一下?获取当前的布局名称:(getvar "ctab")
个人认为布局的批量打印适用性很低,远不如在模型空间中的批量打印有用。出几张图就不用编程了,直接用CAD的打印命令好了。
这个改怎么继续? 人呢?请高人指点 批量布局打印的效果应该是:不打开文件,自动打印当前路径里所有文件的所有布局。前提是每个文件的布局及打印格式全部设置好的,平时cad下手工打印也仅仅是 布局---ctrl p---回车就能出图。至于份数我觉得不重要。再运行程序也不难。因为99%的工作都自动化了。
这样的程序其实意义很大。可以一次性出整套图纸。我正在做个程序。希望多给建议。 还真很少用布局打印,...
支持.. 建议用图纸集 谁有模型空间的批量打印程序呀!
页:
[1]