找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 126|回复: 0

[工具] XD::DOC:PlotToFile

[复制链接]

已领礼包: 20个

财富等级: 恭喜发财

发表于 2025-4-4 17:28:36 | 显示全部楼层 |阅读模式
函数发布
函数名称: XD::DOC:PlotToFile
调用格式: (XD::DOC:PlotToFile ConfigName MediaName Window FileName)
参数说明: ;; 参数说明:
;; ConfigName - 打印机/绘图仪配置名称(字符串)
;; MediaName - 介质/纸张名称(字符串)
;; Window - 窗口范围(二维点表,格式:((x1 y1)(x2 y2)))
;; FileName - 输出文件名(包含完整路径)
返回值:
函数简介: ;; 函数功能:将AutoCAD图形按指定配置和窗口范围输出到文件
;; 参数说明:
;; ConfigName - 打印机/绘图仪配置名称(字符串)
;; MediaName - 介质/纸张名称(字符串)
;; Window - 窗口范围(二维点表,格式:((x1 y1)(x2 y2)))
;; FileName - 输出文件名(包含完整路径)
函数来源: 二次修改
函数作者: marting
适用版本: 不限 
最后更新时间: 2025-04-04
备注: 例子:
(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")
)
演示图片: -

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

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

  1. (defun XD::DOC:PlotToFile (ConfigName MediaName Window FileName / AcadObj ActiveDocObj
  2.                       ActiveLayoutObj PlotObj
  3.                      )
  4.   ;; 函数功能:将AutoCAD图形按指定配置和窗口范围输出到文件
  5.   ;; 参数说明:
  6.   ;;   ConfigName - 打印机/绘图仪配置名称(字符串)
  7.   ;;   MediaName - 介质/纸张名称(字符串)
  8.   ;;   Window - 窗口范围(二维点表,格式:((x1 y1)(x2 y2)))
  9.   ;;   FileName - 输出文件名(包含完整路径)
  10.   
  11.   ;; 获取AutoCAD应用程序对象
  12.   (setq AcadObj (vlax-get-acad-object)
  13.         ;; 获取当前活动文档对象
  14.         ActiveDocObj (vla-get-ActiveDocument AcadObj)
  15.         ;; 获取当前活动布局对象
  16.         ActiveLayoutObj (vla-get-ActiveLayout ActiveDocObj)
  17.   )
  18.   
  19.   ;; 刷新绘图设备信息(确保获取最新配置)
  20.   (vla-RefreshPlotDeviceInfo ActiveLayoutObj)
  21.   
  22.   ;; 设置打印配置名称
  23.   (vla-Put-ConfigName ActiveLayoutObj ConfigName)
  24.   
  25.   ;; 获取打印对象
  26.   (setq PlotObj (vla-get-Plot ActiveDocObj))
  27.   
  28.   ;; 设置打印介质/纸张类型
  29.   (vla-Put-CanonicalMediaName ActiveLayoutObj MediaName)
  30.   
  31.   ;; 设置打印比例为"适应图纸"
  32.   (vla-Put-StandardScale ActiveLayoutObj acScaleToFit)
  33.   
  34.   ;; 设置打印旋转角度为0度(不旋转)
  35.   (vla-Put-PlotRotation ActiveLayoutObj ac0degrees)
  36.   
  37.   ;; 设置打印原点为默认值(0,0)
  38.   (vla-put-PlotOrigin
  39.     ActiveLayoutObj
  40.     (vlax-make-variant (vlax-make-safearray vlax-vbDouble '(0 . 1)))
  41.   )
  42.   
  43.   ;; 设置打印不居中
  44.   (vla-Put-CenterPlot ActiveLayoutObj :vlax-false)
  45.   
  46.   ;; 设置打印窗口范围
  47.   (vla-SetWindowToPlot
  48.     ActiveLayoutObj
  49.     (vlax-make-variant
  50.       (vlax-safearray-fill (vlax-make-safearray vlax-vbDouble '(0 . 1))
  51.                            (car Window)  ; 窗口左下角坐标
  52.       )
  53.     )
  54.     (vlax-make-variant
  55.       (vlax-safearray-fill (vlax-make-safearray vlax-vbDouble '(0 . 1))
  56.                            (cadr Window) ; 窗口右上角坐标
  57.       )
  58.     )
  59.   )
  60.   
  61.   ;; 设置打印类型为窗口打印
  62.   (vla-Put-PlotType ActiveLayoutObj acWindow)
  63.   
  64.   ;; 执行打印到文件操作
  65.   (vla-PlotToFile PlotObj FileName)
  66.   
  67.   ;; 释放所有COM对象(避免内存泄漏)
  68.   (foreach o (list PlotObj ActiveLayoutObj ActiveDocObj AcadObj)
  69.     (vlax-release-object o)
  70.   )
  71.   
  72.   ;; 隐式返回nil
  73. )


例子:
  1. (XD::DOC:PlotToFile
  2.   "DWG To PDF.pc3"
  3.   "ANSI_A_(11.00_x_8.50_Inches)"
  4.   (list (list 0 0) (list 100 100))
  5.   (strcat (getvar "DWGPREFIX") (getvar "DWGNAME") ".pdf")
  6. )

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-4-28 11:13 , Processed in 0.365725 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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