明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1171|回复: 9

[提问] 布局批量打印

  [复制链接]
发表于 2025-10-20 23:33:57 | 显示全部楼层 |阅读模式
布局批量打印,分享给大家!共同改良,测试结果。文件沒有保存之前,是无法执行打印的,已经保存了的,直接可以打印。程序中缺陷;在程序中保存DWG文件之后,没有执行打印程序,我是初学者,功底不深,没有办法把它写更好,各位前辈有缘路过,出手指点一下!如有提问不到位,表达不清楚的,请海涵!!



本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2025-10-21 00:21:40 | 显示全部楼层
本帖最后由 qazxswk 于 2025-10-21 00:22 编辑

批量最好用vla函数,vl-cmdf函数有太多限制性,不通用。下面是我收集的代码,供参考
原代码地址:http://bbs.mjtd.com/thread-191129-1-1.html

(vl-load-com)
(defun PlotToFile (ConfigName         MediaName     Window
                   FileName         /               AcadObj
                   ActiveDocObj         ActiveLayoutObj
                   PlotObj
                  )
  (setq        AcadObj                (vlax-get-acad-object)
        ActiveDocObj        (vla-get-ActiveDocument AcadObj)
        ActiveLayoutObj        (vla-get-ActiveLayout ActiveDocObj)
  )
  (vla-RefreshPlotDeviceInfo ActiveLayoutObj)
  (vla-Put-ConfigName ActiveLayoutObj ConfigName)
  (setq PlotObj (vla-get-Plot ActiveDocObj))
  (vla-Put-CanonicalMediaName ActiveLayoutObj MediaName)
  (vla-Put-StandardScale ActiveLayoutObj acScaleToFit)
  (vla-Put-PlotRotation ActiveLayoutObj ac0degrees)
  (vla-put-PlotOrigin
    ActiveLayoutObj
    (vlax-make-variant
      (vlax-make-safearray vlax-vbDouble '(0 . 1))
    )
  )
  (vla-Put-CenterPlot ActiveLayoutObj :vlax-false)
  (vla-SetWindowToPlot
    ActiveLayoutObj
    (vlax-make-variant
      (vlax-safearray-fill
        (vlax-make-safearray vlax-vbDouble '(0 . 1))
        (car Window)
      )
    )
    (vlax-make-variant
      (vlax-safearray-fill
        (vlax-make-safearray vlax-vbDouble '(0 . 1))
        (cadr Window)
      )
    )
  )
  (vla-Put-PlotType ActiveLayoutObj acWindow)
  (vla-PlotToFile PlotObj FileName)
  (foreach o (list PlotObj ActiveLayoutObj ActiveDocObj AcadObj)
    (vlax-release-object o)
  )
)

(PlotToFile
  "DWG To PDF.pc3"
  "ANSI_A_(11.00_x_8.50_Inches)"
  (list (list 0 0) (list 100 100))
  (strcat (getvar "DWGPREFIX") (getvar "DWGNAME") ".pdf")
)
回复 支持 2 反对 0

使用道具 举报

发表于 2025-10-21 09:24:21 | 显示全部楼层
谢谢分享

秋枫很够用了
回复 支持 1 反对 0

使用道具 举报

发表于 2025-10-21 09:09:49 | 显示全部楼层
都是高手,只能用编译好的软件
回复 支持 反对

使用道具 举报

发表于 2025-10-21 09:28:48 | 显示全部楼层
lxl217114 发表于 2025-10-21 09:24
谢谢分享

秋枫很够用了

确实不错,秋枫很赞
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-10-21 11:12:52 | 显示全部楼层
本帖最后由 lingfne 于 2025-10-21 11:48 编辑
qazxswk 发表于 2025-10-21 00:21
批量最好用vla函数,vl-cmdf函数有太多限制性,不通用。下面是我收集的代码,供参考
原代码地址:http://b ...

;;的确-用vla函数好。
;;下面这段话,按照目前我的水平,做不出批量打印。
(PlotToFile
  "DWG To PDF.pc3"
  "ANSI_A_(11.00_x_8.50_Inches)"
  (list (list 0 0) (list 100 100))
  (strcat (getvar "DWGPREFIX") (getvar "DWGNAME") ".pdf")
)
回复 支持 反对

使用道具 举报

发表于 2025-10-21 16:31:53 | 显示全部楼层
lingfne 发表于 2025-10-21 11:12
;;的确-用vla函数好。
;;下面这段话,按照目前我的水平,做不出批量打印。
(PlotToFile

要批量就加循环,你用vl-cmdf函数批量打印,也是用到循环函数foreach。慢慢琢磨吧,相信你能搞明白的。
回复 支持 反对

使用道具 举报

发表于 2025-10-22 08:42:11 | 显示全部楼层
lxl217114 发表于 2025-10-21 09:24
谢谢分享

秋枫很够用了

还是得有新的出来,才能不断提升
回复 支持 反对

使用道具 举报

发表于 2025-10-28 16:55:16 | 显示全部楼层
又是大神,看看
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-29 12:55 , Processed in 0.190276 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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