夜雨聆风学习资料网

ARTICLE · 1331096

CAD图纸批量转换PDF-WorkBuddy

CAD图纸批量转换PDF-WorkBuddy
矢量 · 判据 · 可复现|CAD批量转换PDF 命令行出图流水线CAD图纸批量转换PDF 是我在 WorkBuddy 上做成的一套生产力工具,技能名叫 CAD批量转换PDF:它把整批 DWG 图纸转成真矢量 PDF,自动合并成带书签的总册,并给每一张图留下可复现的校验判据。如果你按「WorkBuddy 技能」「DWG 转 PDF」「CAD 批量出图」「矢量 PDF」这几个词找过来,本文拆的就是这条命令行流水线。批量出图最容易翻车的地方,是某一张图上的尺寸标注、材料表或焊点悄悄丢了。整批 123 张,抽查几页都正常,交付之后被对方一张一张翻出来,退回重做。真正麻烦的不是重做,而是你没法证明剩下那 122 张是对。先把三个词放在这里:矢量、判据、可复现。后面七节,讲的都是这三个词怎么落进脚本里。

一、难点从来不是「转」

把一张 DWG 变成 PDF,几乎所有 CAD 软件都能做到。难的是同时满足下面这几条:

◦︎ 一百多张图,每一张都要出,且结果可以无限次重跑、前后一致;

◦︎ 文字、尺寸线、材料表、焊点、线宽线型,一样都不能少;

◦︎ 放大到 400% 还得是矢量,不能糊成位图;

◦︎ 换一台电脑打开,中文字不能变成方框;

◦︎ 最后要合成一册,带目录页、带书签,能直接交给对方。

用"打开软件 → 打印 → 另存"这套动作,前三条靠运气,后两条基本靠人肉。打印驱动、字体、图层状态、页面设置,任何一台机器上的一点差异都会让结果漂移。

所以这条链路里,CAD 内核只被用了一步:把 DWG 换成 DXF。剩下的解析、渲染、排版、合并、校验,全部由脚本完成。渲染不依赖打印驱动,也不需要交互式看图环节,同一批图因此可以无限次重跑且结果一致。

清点 → DWG→DXF(仅输入 DWG 时)→ 逐份矢量出图 → 结构索引 → 六项自检      → 合并总册(目录页 + 书签)→ 逐份校验 → 逐字节复制到交付目录

二、它具体做了什么

我把功能整理成六组,全部对应技能里确实存在的脚本,没有写"计划中"的能力。

组
能力
矢量出图
真矢量路径而非位图;文字转字形轮廓;线宽 / 线型三层继承;凸度弧、样条、椭圆弧、属性文字;HATCH 实体填充与真彩色填充
图层
生成原生 OCG 图层,在 Acrobat / WPS 里可逐层开关;图上的「不打印」层默认关闭
文字
TrueType 字形轮廓池,换机不掉字;中文字体候选链可用环境变量指定
总册
A4 横向目录页,每条图纸一条书签,按图号自然排序
自检
六条硬指标,全部从磁盘产物反查,不信任中间变量
交付
逐份可打开且页数正确,复制后逐字节比对,同名不同内容默认不覆盖

其中我最看重的是"不信任中间变量"这一条。程序自己说"我画完了"没有意义,得让另一个脚本去打开刚写出来的 PDF,重新数一遍文字、图层、页数、图幅内容,才算数。

六条硬指标分别是:

指标
判据
失败含义
H1 文字
字形调用数 / 页内文字数 ∈ [0.8, 40]
文字被丢
H2 字形
横向拉伸的字形矩阵数 == 0
字形变形
H3 图层
进了 PDF 的「不打印」层全部默认关闭
隐藏内容跑到 PDF 上
H4 缺字
缺字表为空或每条可归因
字体覆盖不全
H5 分页
图幅数 > 0、页数 / 页尺寸正确、单位比来源非 fallback
漏页 / 页尺寸错
H6 空框
识别到的图幅框内都有内容
交出纯白页

这里有个容易踩的坑:H5 必须先判"图幅数 > 0"。否则一张图都没出的时候,0 == 0 会把"全军覆没"判成通过。这条是写进判读口径的,不是事后补的。

三、一个让我改了四轮的小波浪线

转折出现在一处折断符号上。同一张图里,下方竖管两端的波浪线是好的,左上和中上两处却散成几截孤立的短弧。

前三轮我一直在线型上找原因。先怀疑虚线把弧切碎了,改成整块强制实线;改完发现波浪线是连上了,可本该是虚线的接续延长线也一起变成实线了,与 CAD 原图不符。再收窄到只覆盖曲线类实体,延长线恢复了虚线,可那两处弧还是碎的。

第四轮才找到真因:椭圆弧的短轴方向不是固定"长轴逆时针转 90°"。DXF 里 210 组码给出的拉伸方向决定它是逆时针还是顺时针镜像:

230 = +1 → 短轴 = 比例 × (−My, +Mx) 230 = −1 → 短轴 = 比例 × (+My, −Mx)   ← 镜像,弧被翻到长轴另一侧

同一张图上"这批对、那批错"的分界,就是这两类块的 230 正负不同。一批图纸里共有 967 个椭圆,其中 327 个是负方向,123 张图张张都有受影响的符号。

改完只有一处代码,但验证方式我换了思路:不靠肉眼看渲染,改用纯几何判据——每段弧至少有一端要精确落在同块的接续线端点上,容差 0.02 块单位。全批 283 个符号、566 段弧,通过率 100%。这条探针现在做成了独立脚本,以后谁改解析口径,跑一遍就能证伪。

我讲这段不是想说波浪线有多重要,而是想说:"看着没问题"和"能证明没问题"之间,隔着一套判据。

四、把三个词变成三道检查点

技能原本每个判据都有,但它们散在不同脚本里,"什么时候该跑哪个"靠人记。我把它们串成三个带退出码的检查点:

检查点
触发点
拦什么
出图前
运行转换之前
目录与图纸清点、单位比是否显式指定、输入含 DWG 的许可提示、是否已存基线快照
出图后
合总册之前
六条硬指标 + 折断符号几何探针 + 技能包自检,任一非零即拦截
交付前
复制之前
逐份可打开、页数正确、复制后逐字节一致(复用技能自带脚本)

需要说清楚的是:这是一组可插拔的外挂脚本,不是平台内置的自动拦截机制。平台不会自动读取配置文件,也不会自动触发它们;调用方式写在检查点脚本包里,编排层或人工按清单执行即可。我把这组脚本做成独立外挂,没有并进已安装的技能包,这样技能升级时两边不会互相覆盖。

在真实工作目录上试跑的结果:前置检查点 PASS(两条 WARN:输入含 DWG、未存基线快照);后置检查点三道判据全绿,rc=0。其中自检 738 条判定全部 OK、0 FAIL,几何探针 283 个符号 / 566 段弧全部通过。

五、三个命令跑完

工作目录里放好 DWG 或 DXF 就行,产物自动落在同一目录。

set DXF2PDF_UNIT_PER_MM=1 python run.py --root "<工作目录>" --no-index python make_book.py --root "<工作目录>" --title "图纸总册" python verify.py --root "<工作目录>" --copy-to "<交付目录>/PDF"

第一条命令完成转换、出图和自检;第二条合总册;第三条校验并交付。中间那行环境变量不是可有可无的装饰——图纸按 1 单位 = 1 mm 绘制时要显式设 1,否则脚本会去猜,自检报告里的 unit_src 一旦是 fallback,页面尺寸就不可信,不能签收。

依赖很轻:Python 3.7+,核心出图只用标准库;索引页、自检、总册与交付校验需要 PyMuPDF;只有输入是 DWG 时才需要外部转换器,纯 DXF 不用装。技能本身不分发二进制、不联网、不自动安装。

六、必须说清的两件事

第一,它不万能。图上零件序号只标了部分行、材料表文字偏挤、坐标块与焊口号重叠这类情况,要先回原图核对再判断是不是缺陷,转换器不会改动原图布局。极少数 LINE 类图案填充尚未实现;三维模型、可编辑 PDF 表单、源文件是图片或 PDF 的场景都不适用。单张图纸随手看一眼,直接开 CAD 更快。

第二,商业交付要留意转换器的授权边界。DWG→DXF 这一步常用的 ODA File Converter,官方 FAQ 原文是:

"If you are not an ODA member, you can use them for non-commercial applications only."

官方中文页写的是"非 ODA 会员仅限非商业用途使用"。工程交付属于商业用途,因此这一步不适合直接用于收费项目。干净的解法有两个:让上游直接提供 DXF(技能本来就吃 DXF,链路里可以完全去掉这一步),或者用你已有授权的 CAD 软件批量另存 DXF。这条提醒我专门写进文章,是因为工具再顺手,也不该让读者在不知情的情况下踩授权红线。

七、最后

这套东西解决的核心问题,其实不是"怎么把图纸转成 PDF",而是怎么在一百多张图纸里,把"我认为没问题"换成"我能证明没问题"。三道检查点、六条硬指标、一条几何探针,做的都是同一件事:把判断交给可复核的判据,而不是交给那天下午的耐心。矢量、判据、可复现——开篇那三个词,到这里才算有着落。

如果你的图纸也出过"看着没问题、放大就露馅"的情况,评论区说说丢的是哪一样——文字、尺寸、材料表,还是线型?我挑三个最典型的,另写一篇讲排查顺序。

需要功能清单和三道检查点脚本的,在评论区留关键词「清单」,我整理好统一发。

文中数据说明

可验证事实:本文所有功能描述来自技能包 SKILL.md v1.1.1 与 19 个脚本源码;738 条自检、283 个符号 / 566 段弧、123 张 / 127 页的数据来自本机全量重建与检查点试跑日志,只代表这一批图纸,不构成性能承诺;ODA 授权语句来自官方 FAQ 中英文页面。

个人判断:"难点不是转,而是证明"属于我做这套工具后的归纳,不是任何文档的原文;文中关于"受限的是使用行为、不是交付成果"的区分,条款原文并未涉及产物,此处不作展开。

资料来源

Open Design Alliance. "Public Examples." Open Design Alliance, https://www.opendesign.com/faq/public-examples. Accessed 7 Nov. 2026.

Open Design Alliance. "ODA Viewer 与 ODA File Converter 是什么?" Open Design Alliance, https://www.opendesign.com/cn/node/3218. Accessed 7 Nov. 2026.

回首页,搜索你想要的文档

在首页搜索框输入关键词,快速定位资料

文库首页搜索指引 立即搜索

相关学习资料