
1. 为什么“AI CAD”的 Demo 看起来很美过去一年多我陆陆续续试了不下二十个号称“AI 自动画图”“AI 改 CAD”“自然语言生成图纸”的工具和开源项目。朋友圈里刷到的演示视频一个比一个震撼输入一句“画一个带法兰的弯管”几秒钟后屏幕上就出现了一个像模像样的三维模型上传一张手绘草图AI 立刻把它变成带尺寸标注的工程图。评论区一片“CAD 要完了”“画图狗要失业了”。但真正把这种东西拿到实际工程项目里跑一遍你会发现一个很尴尬的现实Demo 阶段能跑通的东西到了工程阶段几乎全部趴窝。这不是某一个工具的问题而是整个“AI CAD”赛道目前普遍存在的结构性断层。我把它总结成一句话Demo 解决的是“看起来对”工程解决的是“必须对”。这两者之间的差距比大多数人想象的要大得多。一个 Demo 只要在特定输入下产出一个视觉上合理的图形就能录视频、发推文、拿融资。但一个工程项目要求的是图纸能被下游软件正确打开、尺寸链闭合、图层规范统一、公差标注符合标准、版本可追溯、批量处理不出错、出了问题能定位到具体哪一步。这些要求里任何一条不满足整个方案就是废的。我写这篇东西不是要唱衰 AI 在 CAD 领域的应用。恰恰相反我认为方向是对的只是目前大量团队把力气用错了地方。他们花 90% 的精力去打磨那个“生成”的瞬间却只花 10% 的精力去处理生成之后的工程化落地。而后者才是真正决定成败的地方。这篇文章适合几类人看正在做 AI CAD 相关产品的开发者、想把 AI 引入现有设计流程的工程师、以及被各种 Demo 忽悠过、想搞清楚到底哪里出了问题的一线从业者。我会从数据格式、几何内核、工程约束、批量处理、实际案例几个层面把“为什么走不通”这件事拆开讲清楚并且给出我自己踩坑之后总结的一些可行路径。2. 核心断层拆解Demo 和工程之间到底差了什么2.1 数据格式的“最后一公里”问题先说一个最基础、也最容易被忽视的问题文件格式。热词里出现了 DXF、DWG、FreeCAD这几个词背后其实是一整套数据交换的噩梦。Demo 通常怎么做要么自己定义一个简单的内部格式要么直接操作某个开源库的内存对象。比如用 Python 的ezdxf生成一个 DXF或者用 FreeCAD 的脚本接口建一个模型。这些在演示环境里都没问题因为演示环境是你自己控制的。但工程环境里图纸要在不同软件之间流转。上游可能是 AutoCAD 出的 DWG中间要导入 Allegro 做 PCB 布局或者导入 EPLAN 做电气设计下游还要转成 SHP 做地理信息处理。每经过一次转换信息就可能丢失一层。我实测过一个典型案例一个带属性的块Block从 DWG 导出成 DXF再用librecad打开属性文字直接变成了普通文本关联关系全没了。你用 AI 生成的东西如果一开始就没有考虑这些格式的兼容性到了这一步就是灾难。更麻烦的是 DWG 本身。DWG 是闭源二进制格式虽然有dwg trueview这类查看器但要在程序里可靠地读写选择非常有限。很多 AI 项目为了绕开这个坑选择只支持 DXF然后告诉用户“你先把 DWG 转成 DXF 再用”。这个“先转一下”在 Demo 里是一句话在工程里可能意味着几百张图纸的批量转换而且转换过程本身就会引入错误。注意如果你的 AI 工具只支持 DXF一定要在文档里明确写清楚并且提供一个可靠的 DWG 转 DXF 的预处理方案。不要假设用户会自己搞定这件事。2.2 几何内核AI 生成的是“形状”工程需要的是“模型”这是我认为最核心的一个断层。当前大多数 AI 生成 CAD 的方案底层用的是网格Mesh或者简单的实体表示。AI 模型比如基于扩散的、基于 Transformer 的输出的往往是一堆顶点和面片看起来是个三维形状但它不是一个参数化实体模型。这两者的区别有多大打个比方网格模型就像用橡皮泥捏出来的一个杯子你能看到它、能 3D 打印它但你没法告诉别人“这个杯子的壁厚是 2 毫米杯口直径是 80 毫米高度是 120 毫米”。而参数化实体模型是一组带约束的特征树拉伸、旋转、倒角、阵列每个特征都有明确的参数。工程图要标注尺寸、要改参数、要做干涉检查、要出 BOM 表全都依赖这个特征树。我试过一个开源项目用 AI 从图片生成 FreeCAD 模型。生成出来的东西在 FreeCAD 里能看但打开特征树一看只有一个导入的网格对象没有任何可编辑的特征。你想改一个孔的直径对不起只能重新生成。这在 Demo 里没问题在工程里完全没法用。所以AI 生成 CAD 的真正难点不在于生成形状而在于生成带约束的特征树。这需要 AI 模型理解几何约束、尺寸驱动、特征依赖这些概念而目前大多数模型根本没有在这个层面上训练过。2.3 工程约束图层、线型、标注、公差一个都不能少工程图纸不是艺术品它是一份技术文档有严格的规范。图层怎么分、线型怎么定、标注样式是什么、公差怎么标这些都有行业标准和企业标准。AI 生成的东西如果不符合这些规范审图这一关就过不了。热词里有个“逆冲断层 cad 线型”这其实是个很好的例子。地质剖面图里逆冲断层要用特定的线型和符号表示这不是随便画条线就行的。AI 如果不懂这个规范生成的图就是废的。类似的还有“freecad 标注公差”公差标注涉及配合制度、基准体系不是加个数字就完事。我在实际项目里遇到过这样的情况用 AI 辅助生成了一批零件图形状都对但图层全乱套了。所有线条都在默认图层上标注样式用的是默认的 Standard线型比例也不对。结果就是这批图没法直接进企业的 PDM 系统必须人工重新整理一遍。这个“人工整理”的时间比直接手画还长。2.4 批量处理与稳定性Demo 跑一次工程跑一千次Demo 的另一个特点是只跑一次而且是在精心准备的输入上跑。工程场景是什么是批量处理。比如“把这一千张图纸里的标题栏信息提取出来”“把这两百个 DWG 批量转成 DXF 并清理图层”“对这批零件图批量添加公差标注”。批量处理对稳定性的要求是指数级上升的。单次运行成功率 95%听起来不错吧但跑一千次全部成功的概率是 0.95 的 1000 次方约等于零。工程上要求的是 99.9% 以上的单次成功率而且失败的时候要能明确知道是哪一张、哪一步、什么原因失败的。我见过太多 AI 工具在单张图纸上表现惊艳一上批量就各种崩溃内存泄漏、文件句柄没释放、异常没捕获、编码问题、路径问题。这些问题在 Demo 里根本暴露不出来因为 Demo 只跑一次。3. 实操层面一个真实的 AI CAD 落地尝试3.1 项目背景与目标设定去年我参与了一个内部项目目标是用 AI 辅助从二维工程图自动提取几何信息和标注信息生成结构化的数据用于后续的自动报价和工艺规划。输入是 DWG 格式的零件图输出是 JSON 格式的结构化数据包含轮廓、孔位、尺寸、公差、材料等信息。选这个目标是因为它比“AI 直接生成图纸”要务实得多。提取信息比生成信息对几何精度的要求低一些但对数据完整性和一致性的要求高一些。而且这个需求在制造业里非常普遍做好了确实能省大量人工。3.2 技术选型与踩坑记录我们一开始的选型是这样的环节初选方案实际问题最终方案DWG 读取某商业库授权费用高且对自定义实体支持不好ODA 自研解析层几何提取OpenCV 轮廓检测对工程图效果差标注线干扰严重基于 DXF 实体解析标注识别通用 OCR工程字体识别率低公差符号识别不了专用字体训练 规则匹配数据输出直接生成 JSON下游系统字段对不上按下游 schema 映射这里重点说几个坑。第一个坑是DWG 读取。我们一开始想用某个开源方案结果发现它对 AutoCAD 的自定义实体比如动态块、约束支持极差读出来的东西缺胳膊少腿。后来换成 ODA 的库情况好一些但还是要自己写一层解析把各种实体类型统一成内部表示。这个过程花的时间比预想的多了一倍。第二个坑是标注识别。工程图里的标注不是简单的文字它包含尺寸线、尺寸界线、箭头、公差符号、基准符号。你用通用 OCR 去识别它只能认出数字认不出这个数字属于哪个尺寸也认不出公差。我们最后是自己写了一个基于 DXF 实体关系的解析器先找到标注实体再根据它的关联点找到被标注的几何最后把尺寸值和几何关联起来。这个逻辑不复杂但需要你对 DXF 的标注实体结构非常熟悉。第三个坑是字体问题。热词里有“cad 字体 hz-s”这其实是个典型问题。工程图里用的字体五花八门有 SHX 字体、有 TrueType 字体、有自定义字体。AI 模型如果没见过这些字体识别率会惨不忍睹。我们的做法是先把图纸里的文字实体导出成图片用这些图片去微调一个 OCR 模型。这个过程需要标注数据我们人工标了几千张才把识别率从 60% 提到 95% 以上。3.3 关键步骤的详细实现整个流程我拆成五步每一步都有具体的操作和参数。第一步DWG 预处理与格式转换。我们写了一个批处理脚本用 ODA 的接口把 DWG 转成 DXF同时做几件事炸开所有块因为块里的实体不炸开后续解析会漏、清理无用图层、统一线型比例。这一步的输出是干净的 DXF 文件。参数上炸开块的时候要注意保留属性否则标题栏信息会丢。第二步实体解析与几何重建。用ezdxf读取 DXF遍历所有实体。对于 LINE、ARC、CIRCLE、LWPOLYLINE 这些基本实体直接提取几何参数。对于标注实体DIMENSION提取它的定义点和测量值。对于文字实体TEXT、MTEXT提取内容和位置。这一步的关键是建立实体之间的关联关系比如哪个标注对应哪条线。第三步轮廓识别与特征提取。把提取到的线段和圆弧按照端点连接关系拼成闭合轮廓。这里用的是图论的方法把每个端点当成图的节点线段当成边找连通分量和环。拼出轮廓后再识别孔、槽、台阶这些特征。这一步的难点是处理断线和不闭合的情况工程图里这种情况很常见。第四步标注与几何的关联。对于每个标注找到它标注的几何对象。DXF 的标注实体里有defpoint和defpoint2这些定义点根据这些点去找最近的几何对象。然后判断标注类型是线性标注、半径标注、直径标注还是角度标注。最后把尺寸值和公差信息提取出来。第五步结构化输出与校验。把前面提取的所有信息按照下游系统的 schema 组装成 JSON。同时做一轮校验轮廓是否闭合、尺寸是否齐全、公差是否在合理范围。校验不通过的标记出来人工复核。3.4 实测数据与效果评估这个项目跑下来单张图纸的处理时间在 3 到 8 秒之间取决于图纸复杂度。准确率方面几何提取的准确率在 98% 以上标注识别的准确率在 95% 左右特征识别的准确率在 90% 左右。这个数字看起来不错但距离“无人值守”还有距离。我们算过一笔账原来人工处理一张图纸平均需要 15 分钟用这个工具之后平均需要 3 分钟包括人工复核和修正。效率提升了 5 倍但并没有完全替代人工。这个结果我认为是符合预期的也是目前 AI CAD 落地的一个典型状态能大幅提效但还不能完全自动化。4. 常见问题与排查技巧实录4.1 格式转换类问题速查问题现象可能原因排查方法解决方案DWG 转 DXF 后实体丢失块未炸开、自定义实体不支持对比转换前后的实体数量转换前先炸开所有块DXF 在 LibreCAD 打开乱码字体缺失、编码问题检查 DXF 的$DWGCODEPAGE统一用 UTF-8 或 GBKAllegro 导入 DXF 只有顶层图层映射未配置检查 Allegro 的层映射设置手动配置层映射表FreeCAD 打开 DWG 失败FreeCAD 原生不支持 DWG确认是否装了转换插件先转 DXF 再打开标注文字变成问号字体未嵌入或缺失检查文字样式引用的字体替换为标准字体4.2 几何与标注类问题排查问题一轮廓拼不闭合。这是最常见的。原因通常是线段之间有微小间隙或者端点坐标有浮点误差。解决办法是设置一个容差比如 0.001 毫米在这个容差内认为端点是重合的。另外要注意有些线段看起来连着实际上中间有个很小的圆弧过渡这种要特殊处理。问题二标注识别错位。有时候标注的尺寸值识别对了但关联到了错误的几何对象。这通常是因为标注的定义点离多个几何对象都很近。解决办法是结合标注的类型和方向来判断比如线性标注通常关联到两条平行线半径标注关联到一个圆弧。问题三公差符号识别不了。公差符号比如直径符号、±、角度符号在 DXF 里可能是特殊字符或者自定义实体。我们的做法是建立一个符号映射表把常见的符号编码映射成标准字符。对于自定义实体只能针对特定软件做适配。问题四批量处理时内存溢出。这是工程化的典型问题。单张图纸处理完对象没有释放跑几百张之后内存就爆了。解决办法是每处理完一张图纸显式调用垃圾回收并且把大对象置空。另外用多进程而不是多线程因为 Python 的 GIL 会限制多线程的效果。4.3 独家避坑技巧第一个技巧永远不要相信 AI 生成的几何是精确的。AI 生成的坐标、尺寸一定要做一轮几何校验。比如检查轮廓是否闭合、尺寸是否自洽、公差是否合理。我见过 AI 生成的图纸标注的尺寸和实际几何差了 0.5 毫米这种错误在 Demo 里看不出来在工程里是致命的。第二个技巧把 AI 当成“第一稿生成器”而不是“最终稿生成器”。AI 生成的东西一定要有人工复核的环节。这个环节不是可有可无的而是必须的。我们的项目里人工复核的时间占了总时间的 40%但如果没有这个环节错误率会高到无法接受。第三个技巧建立自己的测试集。不要用网上的公开数据集来评估你的工具因为那些数据集和你的实际业务场景差太远。你要从自己的历史图纸里挑出有代表性的样本建立一个测试集。这个测试集要覆盖各种边界情况简单件、复杂件、带公差的、带特殊符号的。每次迭代都用这个测试集跑一遍看准确率有没有下降。第四个技巧日志要详细到能复现问题。批量处理的时候出了问题要能定位到具体是哪张图纸、哪个实体、哪一步出的错。我们的日志里记录了每张图纸的处理时间、实体数量、识别结果、校验结果。出了问题直接看日志就能定位。5. 从 Demo 到工程可行的落地路径5.1 重新定义问题边界我认为目前 AI CAD 落地最大的误区是试图一步到位解决“AI 自动设计”。这个目标太宏大涉及几何推理、工程约束、行业知识短期内不可能做好。更可行的路径是把问题拆小先解决那些“AI 擅长、工程需要、人工做很烦”的环节。哪些环节符合这个条件我列几个图纸信息提取从 DWG/DXF 里提取标题栏、明细表、尺寸、公差生成结构化数据。这个 AI 做起来比人快而且不需要生成几何风险低。图纸格式转换与清理批量转换格式、统一图层、清理无用实体。这个用脚本就能做加上 AI 可以做智能判断。图纸比对与查重找出两张图纸的差异或者从图纸库里找出相似的图纸。这个用几何哈希加 AI 特征匹配效果不错。辅助标注与检查检查图纸有没有漏标尺寸、公差是否合理、图层是否规范。这个用规则引擎加 AI 判断能省很多审图时间。这些环节的共同特点是输入是已有的图纸输出是数据或判断不涉及生成新的几何。这样就绕开了几何内核和参数化建模的难题落地难度大幅降低。5.2 技术栈的务实选择如果你现在要做一个 AI CAD 的项目我的建议是格式处理层用 ODA 或者ezdxf做 DXF 读写DWG 用 ODA 转换。不要自己造轮子去解析 DWG 二进制。几何处理层用shapely做二维几何运算用trimesh做三维网格处理。如果需要参数化建模用 FreeCAD 的 Python API 或者 OpenCASCADE。AI 层对于文字识别用 PaddleOCR 或者自己微调对于几何特征识别用传统的计算机视觉加规则不要什么都上大模型对于语义理解比如理解图纸标题栏的含义可以用大模型。工程化层用 Celery 或者 RQ 做任务队列用 PostgreSQL 存结构化数据用 MinIO 存文件。日志用 ELK 或者 Loki。这个技术栈不新潮但稳。工程落地稳比新潮重要。5.3 评估指标与迭代节奏评估一个 AI CAD 工具好不好不要看 Demo 视频要看这几个指标指标说明工程要求单次成功率单张图纸处理成功的概率 99%批量成功率一批图纸全部成功的概率 95%准确率提取信息正确的比例 98%处理速度单张图纸的处理时间 10 秒可复现性同样输入是否得到同样输出必须错误可定位出错时能否定位到具体原因必须迭代节奏上我建议小步快跑。先做一个最小可用版本在真实场景里跑收集问题然后迭代。不要憋大招憋出来的大招往往一上真实场景就崩。6. 一些个人体会这个项目做下来我最大的体会是AI 在 CAD 领域的价值不在于替代人而在于把人从重复劳动里解放出来。那些真正需要工程判断、需要经验积累的环节AI 短期内替代不了也不应该替代。但那些“看一眼就知道、但要看一千遍”的环节AI 可以做得很好。另一个体会是工程落地是一个系统工程不是单点技术突破。你有一个很牛的 AI 模型但格式转换做不好、批量处理不稳定、错误没法定位整个方案就是废的。反过来即使 AI 模型一般但工程化做得好也能产生实际价值。最后分享一个小技巧如果你在做 AI CAD 的项目一定要尽早接触真实数据。不要用网上的公开数据集不要用自己造的测试数据要用真实项目里的图纸。真实图纸的“脏”程度会远超你的想象。早点面对这些脏数据早点找到解决方案比在干净数据上刷指标有意义得多。这个方向后续还可以这样扩展把提取出来的结构化数据和工艺知识库结合做自动工艺规划或者和报价系统结合做自动报价。这些都是在“信息提取”这个基础上自然延伸出来的比直接做“AI 生成图纸”要靠谱得多。