marting 发表于 2025-4-4 17:28:36

XD::DOC:PlotToFile

本帖最后由 marting 于 2025-4-4 17:32 编辑


(defun XD::DOC:PlotToFile (ConfigName MediaName Window FileName / AcadObj ActiveDocObj
                      ActiveLayoutObj PlotObj
                     )
;; 函数功能:将AutoCAD图形按指定配置和窗口范围输出到文件
;; 参数说明:
;;   ConfigName - 打印机/绘图仪配置名称(字符串)
;;   MediaName - 介质/纸张名称(字符串)
;;   Window - 窗口范围(二维点表,格式:((x1 y1)(x2 y2)))
;;   FileName - 输出文件名(包含完整路径)

;; 获取AutoCAD应用程序对象
(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)

;; 设置打印旋转角度为0度(不旋转)
(vla-Put-PlotRotation ActiveLayoutObj ac0degrees)

;; 设置打印原点为默认值(0,0)
(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)

;; 释放所有COM对象(避免内存泄漏)
(foreach o (list PlotObj ActiveLayoutObj ActiveDocObj AcadObj)
    (vlax-release-object o)
)

;; 隐式返回nil
)


例子:

(XD::DOC: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")
)

bghyu 发表于 2025-12-23 15:01:43

:kiss::L:loveliness:
页: [1]
查看完整版本: XD::DOC:PlotToFile