大神们,救命啊!!!!!求打印超级实用的代码
不要批量打印,每一个CAD文件只有一个图框,图框有时大有时小,求一个lisp代码,运行后自动把大小位置变化的、唯一的图框自动设置为打印窗口,不用每次去选取真的很烦,如果能做到,绝对是超级实用。求大神大侠们出手,10个明经币先奉上,拜托拜托,感谢感谢~~~~~~;;;*******************多文件批量打印********************
(defun c:mypt ()
(vl-load-com)
(command "_pagesetup")
(setq acaddoc (vla-get-activedocument (vlax-get-acad-object)))
(setq clayout (vla-get-activelayout acaddoc))
(vla-refreshplotdeviceinfo clayout)
(setq printname (vla-get-configname clayout))
(setq papersize (vla-GetLocaleMediaName clayout(vla-get-CanonicalMediaName clayout)))
(setq PlotStyle (vla-get-stylesheet clayout))
;(setq currScale (vla-get-StandardScale clayout)) 获得打印例
(setq printorta (vla-get-plotrotation clayout))
(if(= printorta 0)(setq Rote "L")(setq Rote "P"))
(setq Filepath"D:/")
(if (setq Filepath (getfiled "请选择数据源文件夹的任意一个文件" Filepath "dwg" 2))
(progn
(command "-style" "" "宋体" "" "" "" "" "" "")
(setq strpath (vl-filename-directory Filepath)
filelist(vl-directory-files strPath "*.dwg" 1)
)
(command "erase" "all" "")
(setq currscale(getint"\n请选择打印比例1. 1:500 2. 1:10003. 1:2000<1-3>:"))
(if (= currscale 1)(setq printscale 2))
(if (= currscale 2)(setq printscale 1))
(if (= currscale 3)(setq printscale 0.5))
(setq m(getint"\n请输入打印份数:"))
(setq u 0)
(repeat m
(setq i 0)
(repeat (length filelist)
(setq FileName (strcat strpath "/" (nth i filelist)))
(command "-insert" FileName "0,0")
(while (not (zerop (getvar "CMDACTIVE"))) (command ""))
(if (null (tblsearch "BLOCK" (nth i filelist)))
(progn
(command "_.PLOT"
"Y" ;_是否需要详细打印配置?[是(Y)/否(N)] <否>: y
"" ;_输入布局名或 [?] <模型>:
printname ;_输入输出设备的名称或 [?]
papersize ;_输入图纸尺寸或 [?] <A3>:
"M" ;_输入图纸单位 [英寸(I)/毫米(M] <毫米>:
Rote ;_输入图形方向 [纵向(P)/横向(L)] <横向>:
"N" ;_是否反向打印?[是(Y)/否(N)] <否>:
"E" ;_输入打印区域 [显示(D)/范围(E)/图形界限(L)/视图(V)/窗口(W)] <范围>: w
printscale ;_输入打印比例 (打印的 毫米=图形单位) 或 [布满(F)] <Fit>: fit
"C" ;_输入打印偏移 (x,y) 或 [居中打印(C)] <0.00,0.00>: c
"Y" ;_是否按样式打印?[是(Y)/否(N)] <是>:
PlotStyle;_输入打印样式表名称或 [?] (输入 . 表示无) <hp5100.ctb>:
"Y" ;_是否打印线宽?[是(Y)/否(N)] <是>:
"N" ;_是否删除隐藏线?[是(Y)/否(N)] <否>:
"N" ;_是否打印到文件 [是(Y)/否(N)] <N>:
"N" ;_是否保存模型选项卡的修改.
"Y" ;_是否继续打印.
)
(setq u(1+ u))
)
)
(command "erase" "all" "")
(setq i(1+ i))
)
)
(setq thr (strcat "打印" (rtos m 2 0) "份,共"(rtos (* m u) 2 0)"张"))
(alert thr)
)
)
(princ)
) 如果图框外没有东西或者图框是一个块或者是四边形,
取得包围框4点就行, nxchenjk 发表于 2021-11-19 07:59
;;;*******************多文件批量打印********************
(defun c:mypt ()
(vl-load-com)
谢谢回复,我需要的是设定打印区域,有一个图框,外面什么也没有,我需要的是一键把这个图框设定成打印区域,或者打印成PDF,一键就行,太繁琐就不方便 结构计算书? 了解一下CAD自带的 发布 一个CAD一个文件 打印模版设置成范围
页:
[1]