明经CAD社区

 找回密码
 注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 268|回复: 5

[提问] 大神们,救命啊!!!!!求打印超级实用的代码

[复制链接]
发表于 2021-11-19 06:13 | 显示全部楼层 |阅读模式
10明经币
不要批量打印,每一个CAD文件只有一个图框,图框有时大有时小,求一个lisp代码,运行后自动把大小位置变化的、唯一的图框自动设置为打印窗口,不用每次去选取真的很烦,如果能做到,绝对是超级实用。求大神大侠们出手,10个明经币先奉上,拜托拜托,感谢感谢~~~~~~

发表于 2021-11-19 07:59 | 显示全部楼层
;;;*******************多文件批量打印********************
(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:1000  3. 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)
)

评分

参与人数 1明经币 +1 收起 理由
bssurvey + 1 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2021-11-19 08:04 | 显示全部楼层
如果图框外没有东西或者图框是一个块或者是四边形,
取得包围框4点就行,
回复

使用道具 举报

 楼主| 发表于 2021-11-19 09:02 | 显示全部楼层
nxchenjk 发表于 2021-11-19 07:59
;;;*******************多文件批量打印********************
(defun c:mypt ()
  (vl-load-com)

谢谢回复,我需要的是设定打印区域,有一个图框,外面什么也没有,我需要的是一键把这个图框设定成打印区域,或者打印成PDF,一键就行,太繁琐就不方便
回复

使用道具 举报

发表于 2021-11-19 14:56 | 显示全部楼层
结构计算书?
回复

使用道具 举报

发表于 2021-11-23 08:25 | 显示全部楼层
了解一下CAD自带的 发布 一个CAD一个文件 打印模版设置成范围
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2021-12-2 07:57 , Processed in 0.555778 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.3

© 2001-2013 Comsenz Inc.

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