马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 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")
- )
|