📌 技术分享 · 每日更新

CAD 图纸自动分析流水线:LibreDWG + 自动化

苏运AI · 发布于 2026-10-05

为什么要把 DWG 先转成 DXF

甲方甩过来的图纸九成是 .dwg,而大多数开源解析库(含我自己搭的分析器)对 DWG 的版本兼容性很差,R2018 以上的文件经常读不全、甚至直接崩。我们的做法很朴素:进流水线第一步一律用 LibreDWG(GPL、完全免费)先转成 .dxf,后面的图层/实体/文字解析全部针对 DXF 做,稳定性立刻上一个台阶。

经验:转换在前、解析在后,把"格式兼容"这层脏活隔离成一个独立环节,后面所有逻辑只认 DXF,排查问题范围直接砍半。

流水线的三个环节

1. 转换(LibreDWG)

2. 分析(图层 / 实体 / 文字)

3. 报告(前端呈现)

报告不堆原始数据,只给甲方看得懂的三块:图件基本信息、图层清单带占比、疑似问题清单(缺标题栏、尺寸线游离、块未定义)。能点开看明细,也能一键导出。

卡死我们的坑:转换失败就永久跳过

第一版分析器写得很"聪明":转换环节返回非 0,就 continue 跳到下一张,并在数据库标 skipped。结果某天 LibreDWG 升级后一批图纸报了"版本警告但转出了可用 DXF"——我们的代码把"非零退出码"当致命错误,整批被标 skipped,之后再跑因为已标记 skipped 又直接跳过,永远停在失败态。

坑:"转换失败 = 永久跳过"是个自杀式设计。非零退出码里混着"真失败"和"警告但产出可用",一刀切跳过会把可救的图也埋了,而且状态位一旦写下就再不回头。
修法:① 把"退出码"和"是否产出有效 DXF 文件"拆开判断——文件存在且非空才算成功,退出码只当参考;② skipped 状态改成"可重试",每次重跑都先清掉旧跳过标记;③ 转换环节单独保留日志,区分 FATAL(真没文件)与 WARN(有文件但带告警)。改完那批图全部正常产出。

前端怎么把报告呈现出来

经验:分析器的价值不在"读出了多少实体",而在"甲方能不能 30 秒判断这张图能不能用"。呈现层省下的沟通成本,比多解析两个图层值钱。

小结

CAD 图纸自动分析不是单点技术,而是一条"转换→解析→报告"的流水线。最贵的教训是:任何"失败即永久跳过"的状态机,都会把可救的活变成永久烂尾。把"是否产出"和"退出码"分开、给重跑留后路,流水线才真正扛得住真实甲方的脏数据。

← 返回技术分享栏目,看更多每日分享