布局批量打印,分享给大家!共同改良,测试结果。文件沒有保存之前,是无法执行打印的,已经保存了的,直接可以打印。程序中缺陷;在程序中保存DWG文件之后,没有执行打印程序,我是初学者,功底不深,没有办法把它写更好,各位前辈有缘路过,出手指点一下!如有提问不到位,表达不清楚的,请海涵!!





网友答: 本帖最后由 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")
)

网友答: 谢谢分享

秋枫很够用了

网友答:

网友答: 都是高手,只能用编译好的软件

网友答:
lxl217114 发表于 2025-10-21 09:24
谢谢分享

秋枫很够用了

确实不错,秋枫很赞

网友答: 本帖最后由 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")
)


网友答:
lingfne 发表于 2025-10-21 11:12
;;的确-用vla函数好。
;;下面这段话,按照目前我的水平,做不出批量打印。
(PlotToFile

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

网友答:
lxl217114 发表于 2025-10-21 09:24
谢谢分享

秋枫很够用了

还是得有新的出来,才能不断提升

网友答: 又是大神,看看
  • 上一篇:转载:直接解压ZIP文件
  • 下一篇:没有了