明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: ludaweb

在秋枫发布的源码基础上修改的批量打印程序v3.6.1(2024-07-28更新)

    [复制链接]
发表于 2020-8-28 23:35:00 | 显示全部楼层
加长图纸没有合适的图纸
发表于 2020-8-30 09:35:16 来自手机 | 显示全部楼层
    简易的多文件批量打印 1.预先设置好页面设置ps1 2.按照ps1打印打开的几个dwg文件 问题是,程序只能打印当前的dwg文件,求网友查错。  (defun ax:2dpoint (pt) (vlax-make-variant   (vlax-safearray-fill   (vlax-make-safearray vlax-vbdouble '(0 . 1))   (list (car pt) (cadr pt))   ) ) )  (defun objs-lst    (objs) (setq obj-lst nil) (vlax-for obj objs (setq obj-lst (cons obj obj-lst))) (reverse obj-lst) )  (defun getblock_name-yf    (str var) (princ str) (if (and (/= var nil) (/= var ""))   (progn (princ "<") (princ var) (princ ">")) ) (princ ":") (if (setq in (entsel ""))   (setq var (cdr (assoc 2 (entget (car in)))))   (eval var) ) )   ;;;获取打印文件存储位置 (defun qf_getfolder (msg / winshell shfolder path catchit) (vl-load-com) (setq winshell (vlax-create-object "Shell.Application")) (setq shfolder (vlax-invoke-method winshell 'browseforfolder 0 msg 1)) (setq   catchit (vl-catch-all-apply       '(lambda ()        (setq shfolder (vlax-get-property shfolder 'self))        (setq path (vlax-get-property shfolder 'path))      )     ) ) (if (vl-catch-all-error-p catchit)   nil   path ) )  ;;;边界函数AX:GETBOUNDINGBOX (ENT) (defun ax:getboundingbox2 (obj) (vla-getboundingbox obj 'll 'ur) (mapcar 'vlax-safearray->list (list ll ur)) )  (defun dwj-plot         (path doc layout plotcfg drawingframe-blkname) ;;;根据图框块名过滤出某个布局中的图框 (setq drawingframe_lst nil) (vlax-for block (vla-get-block layout)   (if    (and (= (vla-get-objectname block) "AcDbBlockReference")      (= (vla-get-name block) drawingframe-blkname)     )   (setq drawingframe_lst (cons block drawingframe_lst))   ) )  (setq llurs nil) (foreach obj drawingframe_lst   (setq llur (ax:getboundingbox2 obj))   (setq ll (reverse (cdr (reverse (car llur)))))   (setq ur (reverse (cdr (reverse (cadr llur))))) ;;;  获取属性变量   (setq var (vla-getattributes obj)) ;;;  属性变量转为属性表   (setq attr-lst (vlax-safearray->list (vlax-variant-value var))) ;;;  根据属性标签,寻找属性文字   (foreach attr attr-lst   (setq tagstring (vla-get-tagstring attr))   (cond     ((= tagstring "图号")    (setq tuhao (vla-get-textstring attr))     )     ((= tagstring "图纸名称")    (setq tuming (vla-get-textstring attr))     )     ((= tagstring "图纸名称1")    (setq tuming1 (vla-get-textstring attr))     )     (t t)   )   )   (setq filename (strcat tuhao "_" tuming tuming1))   (setq llur (list ll ur filename))   (setq llurs (cons llur llurs)) )  (setq llurs (sxzy llurs 10))  (foreach x llurs   (setq ll (car x))   (setq ur (cadr x))   (setq filename (last x)) ;;;设置打印范围   (vla-setwindowtoplot   plotcfg   (ax:2dpoint ll)   (ax:2dpoint ur)   ) ;;;指定页面设置为当前   (vla-copyfrom layout plotcfg) ;;;获取当前页面设置   (setq plot (vla-get-plot doc)) ;;;打印   (vla-plottofile   plot   (strcat path "\\" filename)   ) ) )   (defun c:mp () (vl-load-com) (load "_lib-yf.lsp") (princ   "\nmp-批量打印-多文件,预设页面设置,打开的文件都将被打印" ) (setq old (getvar "OSMODE")) (setvar "OSMODE" 0) ;;;cad (setq app (vlax-get-acad-object)) ;;;文档 (setq docs (vla-get-documents app)) ;;;当前文档 (setq *doc* (vla-get-activedocument app)) ;;;当前布局 ;;;(setq *lay* (vla-get-activelayout *doc*)) ;;;页面设置 (setq *plotcfgs* (vla-get-plotconfigurations *doc*)) (setq tmp2 (nth 2 (objs-lst *plotcfgs*))) ;;;页面设置名表 (setq pagesetup_name-lst nil) (vlax-for *plotcfg* *plotcfgs*   (setq pagesetup_name (vla-get-name *plotcfg*))   (setq modeltype (vla-get-modeltype *plotcfg*))   (setq pagesetup_name-lst (cons pagesetup_name pagesetup_name-lst)) ) (setq pagesetup_name-lst (reverse pagesetup_name-lst)) (setq index 1) (setq tmp nil) (foreach x pagesetup_name-lst   (setq tmp (cons (itoa index) tmp))   (setq tmp (cons "->" tmp))   (setq tmp (cons x tmp))   (setq tmp (cons ";" tmp))   (setq index (+ 1 index)) ) (setq tmp (reverse tmp)) (setq string (apply 'strcat tmp)) (setq string (strcat "\n选择页面设置名称<" string ">")) (setq index2 (getint-yf string index2)) ;;;页面设置名称 (setq pagesetup_name (nth (- index2 1) pagesetup_name-lst)) ;;;页面设置,用户要用的 (setq *plotcfg* (vla-item *plotcfgs* pagesetup_name))  (setq *windowtitle* (vla-get-windowtitle *doc*)) (vlax-for doc    docs ;;;;;;当前文档的页面设置复制到其他文档   (if    (/= (strcase (vla-get-windowtitle doc))     (strcase *windowtitle*)     )   (progn ;;;    在其他文档创建页面设置名为pagesetup_name的页面设置     (setq plotcfg (vla-add             (vla-get-plotconfigurations doc)             pagesetup_name             :vlax-false           )     ) ;;;将*plotcfg*复制进plotcfg     (vla-copyfrom plotcfg *plotcfg*)     (vlax-for layout (vla-get-layouts doc)     (if (/= (vla-get-name layout) "Model")     (vla-copyfrom       layout       plotcfg     )     )     )   )   ) )  (setq    drawingframe-blkname    (getblock_name-yf      "\n选择图框,获取图框块名"      drawingframe-blkname    ) ) (princ drawingframe-blkname)  (setq path (qf_getfolder "选择打印文件保存位置"))  (vlax-for doc    docs   (setq doc doc)   (setq plotcfgs (vla-get-plotconfigurations doc))   (setq plotcfg (vla-item plotcfgs pagesetup_name)) ;;;  (vla-put-activedocument app doc) ;;;  (vla-activate doc)   (vlax-for layout (vla-get-layouts doc)   (setq name (vla-get-name layout))   (if (/= name "Model")     (dwj-plot path doc layout plotcfg drawingframe-blkname)   )   ) )  ;;;(setq docs (vla-get-documents (vlax-get-acad-object))) ;;;(setq doc (vla-item docs 0)) ;;;(setq plotcfgs (vla-get-plotconfigurations doc)) ;;;(setq plotcfg (vla-item plotcfgs "yf-dwg to pdf-A2")) ;;;(setq layout (vla-get-activelayout doc)) ;;;(dwj-plot path doc layout plotcfg drawingframe-blkname)  (princ) )
发表于 2020-8-30 18:39:46 | 显示全部楼层
一个打印功能,那么多的限制,太难用了
看看什么是自动化智能打印,企业级产品,目标客户主要是设计院,个人用户打印功能完全免费
www.eplot.com.cn
发表于 2020-8-31 16:36:38 | 显示全部楼层
hengdong123 发表于 2020-8-30 18:39
一个打印功能,那么多的限制,太难用了
看看什么是自动化智能打印,企业级产品,目标客户主要是设计院,个 ...

想全部打印成A4怎么设置?加不了210*297  A4图纸,列表中又没有。还是楼主的习惯些
发表于 2020-8-31 17:24:22 | 显示全部楼层
COOCH 发表于 2020-8-24 17:25
插件设为启动组跟随cad一起启动,设置文件就会自动保存在插件目录下

是随CAD一起启动的,家里的电脑能自动保存在插件同目录,单位的电脑就不行,保存在temp文件夹下了
发表于 2020-8-31 17:29:28 | 显示全部楼层
楼主您好,配置文件“BatchPlot.cfg”在家里的电脑能自动保存在插件同目录,单位的电脑就不行,只能保存在temp文件夹下,您知道是怎么回事吗?
发表于 2020-8-31 18:29:08 | 显示全部楼层
sunny_8848 发表于 2020-8-31 16:36
想全部打印成A4怎么设置?加不了210*297  A4图纸,列表中又没有。还是楼主的习惯些

框选模式中有的

本帖子中包含更多资源

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

x
发表于 2020-8-31 20:29:37 | 显示全部楼层

谢谢,框选模式,是否意味着多文件不适用一次性全部打成A4了?
发表于 2020-8-31 21:31:21 | 显示全部楼层
本帖最后由 hengdong123 于 2020-8-31 21:57 编辑
sunny_8848 发表于 2020-8-31 20:29
谢谢,框选模式,是否意味着多文件不适用一次性全部打成A4了?

一般情况下,图幅什么尺寸,打印机按相应的图纸尺寸打印(pdf出图时,打印机没有的图纸尺寸,工具会自动创建)
框选模式是一种特殊的辅助手段,真实的业务场景下,不会是经常把不同类型的图幅,都按一种尺寸打印
所以说,根据上百家设计院客户的反馈来看,还没有多文件都打印一种尺寸的情况
www.eplot.com.cn   让每个设计师用上免费而好用的出图工具

发表于 2020-8-31 21:49:44 来自手机 | 显示全部楼层
hengdong123 发表于 2020-8-30 18:39
一个打印功能,那么多的限制,太难用了
看看什么是自动化智能打印,企业级产品,目标客户主要是设计院,个 ...

广告请走开,要推广自己发帖,不要在人家帖子下面酸。
本帖作者肝代码,一直更新,而且是免费提供。
你那个可以做到免费?
你这个我点进去看了你网页的介绍视频,功能一般,识别速度很慢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 17:54 , Processed in 0.258038 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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