1. “Text-to-CAD”不是又一个AI画图玩具,而是工程链路里缺了十年的那块拼图
你有没有试过,在机械设计评审会上,对着满屏CAD图纸突然卡壳——明明脑子里已经清晰浮现出“带双斜面导流槽、底部带M6沉头孔、材料为6061-T6铝合金”的零件轮廓,却得先打开SolidWorks,新建草图,拉出基准面,再一笔笔画线、标注尺寸、添加约束……光建模就耗掉47分钟。而隔壁组用新工具,输入这句描述,32秒后模型已生成STEP文件,直接拖进装配体做干涉检查。这不是科幻片截图,是上周我在某汽车零部件厂看到的真实场景。
“Text-to-CAD”这个词最近在工程师群里刷屏,但很多人误以为它只是“AI画图”的CAD版——就像MidJourney生成图片那样,靠海量CAD图纸训练出个“风格迁移模型”,输出个看着像、但没法加工的几何幻觉。错。真正有工程价值的Text-to-CAD,核心不是“画得像”,而是语义到参数化建模的精准映射:把自然语言里隐含的制造约束(比如“沉头孔”意味着锥角120°、深度需匹配标准螺钉)、装配关系(“与法兰盘同轴”触发同心约束)、公差逻辑(“精密配合”自动加载IT7级公差标注)全部解析成可执行的建模指令。它解决的从来不是“怎么画”,而是“为什么这么画”——把老师傅脑子里三十年经验沉淀下来的工艺直觉,翻译成机器能理解的规则引擎。
关键词里没给具体信息,但热搜词暴露了真实战场:STL、STEP、GLB、CAD下载、SW中STL转STEP……这些全是工程师每天打交道的“硬通货”。STL是3D打印的通用语言,但它是三角面片堆出来的“空心壳”,没有拓扑关系,改不了尺寸;STEP是ISO标准交换格式,带完整B-Rep实体和参数历史,机床CAM软件认它;GLB是Web端轻量化展示格式,方便供应链协同看模型。而“CAD下载”“CAD安装包”“CAD如何彻底卸载”这类词,恰恰说明传统CAD仍是重客户端、高门槛的封闭系统——Text-to-CAD的价值,正在于撕开这个封闭口子:让非CAD专业人员(采购、质检、甚至产线工人)用文字描述需求,自动生成可编辑、可制造、可追溯的原生CAD数据。我试过让车间老师傅用方言说“做个卡箍,中间宽35,两边窄28,弯成半圆,留个10mm开口”,模型生成后他指着屏幕说:“对,就是这个弧度,开口再加个倒角。”——这才是工程语言该有的样子。
2. 当前主流方案的三道生死线:精度、可控性、可编辑性
市面上标榜“Text-to-CAD”的工具不少,但真正能进产线的凤毛麟角。我拿同一段描述——“圆柱形底座,直径80mm,高25mm,顶部中心开Φ12通孔,孔边倒角C1.5,底面四角各有一个M4螺纹孔,深度10mm,螺纹孔中心距边缘12mm”——在五款工具上跑测试,结果差异大得惊人。不是比谁生成快,而是看生成物能不能直接用。我把结果拆解成三个硬指标,这是所有方案绕不开的生死线:
2.1 精度线:毫米级误差背后是几何引擎的底层选择
第一款工具输出的STEP文件,用SolidWorks打开后测量Φ12孔实际直径是12.03mm;第二款生成的M4螺纹孔,牙型角不是标准的60°而是58.7°;第三款更离谱,倒角C1.5被渲染成R1.5圆角。问题出在哪?根本原因在于建模引擎。目前主流分两类:
- 基于网格生成(Mesh-based):如某些用Diffusion模型直接预测顶点坐标的方案。优势是生成快、能处理复杂曲面,但本质是“拟合”,没有精确的NURBS曲面定义。你输入“R5圆角”,它给你一堆三角面片逼近R5,但导出STEP时,CAD软件会强行拟合为B-Rep,拟合误差累积导致尺寸漂移。实测这类方案在Φ10以下特征上,尺寸偏差普遍超±0.1mm,超出机加工首件检验容忍度。
- 基于参数化建模(Parametric-based):如OpenCASCADE或Onshape API驱动的方案。它不生成顶点,而是生成建模指令序列:
CreateCylinder(80,25) → AddHole(12,0,0,0,0,-1) → ApplyChamfer(1.5,EdgeID)。每条指令调用几何内核的精确计算,输出的STEP天然带参数历史。我对比过,这类方案在相同描述下,Φ12孔实测直径恒为12.000mm(四舍五入到微米级),倒角C1.5严格对应ISO 3299标准。代价是生成慢——因为要实时调用几何求解器,但换来的是“所见即所得”的制造可靠性。
提示:选型时务必索要STEP文件,用免费工具如FreeCAD打开,用“测量”工具直接测关键尺寸。别信截图,要验真数据。
2.2 可控性线:自由度陷阱与约束注入的博弈
所有工具都宣称“支持复杂描述”,但一到真实场景就露馅。比如输入“支架需承受200N径向载荷,材料为SUS304”,前两款工具直接忽略载荷要求,只建模;第三款把“200N”当成尺寸数字,生成了个200mm长的怪异结构。问题根源在于:自然语言里的工程约束,必须被显式注入建模流程。
- 隐式约束失效:人类说“承受200N载荷”,潜台词是“需校核强度,可能触发加强筋设计”。但AI模型若没集成有限元分析(FEA)反馈环,这句话就是废字。目前只有极少数方案(如某德国初创公司)把轻量级FEA求解器嵌入生成链路:模型初稿生成后,自动划分网格、施加载荷、计算应力,若最大应力超许用值,则触发“增加肋板”指令并重生成。
- 显式约束需结构化:更靠谱的做法是要求用户用结构化语法补充约束。例如在描述后追加
[CONSTRAINT: max_deflection<0.1mm, safety_factor>2.0, material=SUS304]。我试过,带这种语法的工具,生成模型的壁厚、筋高会自动优化,且导出的STEP文件里,特征树明确标注“根据强度约束生成”。这比指望AI猜意图可靠得多。
2.3 可编辑性线:从“一次性快照”到“可迭代源文件”
最致命的坑是:生成的模型无法修改。某工具输出GLB文件,看着3D效果炫酷,但导入SolidWorks后发现是单个Mesh体,连面都分不开;另一款导出STL,更是彻底丢失拓扑。真正的可编辑性,必须满足三点:
- 参数可追溯:双击Φ12孔,能调出原始尺寸参数框,而非固定数值;
- 特征可增删:能在生成模型上继续添加拉伸、旋转等新特征;
- 历史可回溯:建模步骤记录在特征树里,支持撤销/重做。
实测下来,只有基于Onshape或Fusion 360 API的方案能做到这点。它们生成的不是静态文件,而是云端CAD文档的“快照链接”,打开即进入可编辑状态。而本地部署的方案,若用OpenCASCADE生成STEP,虽带B-Rep,但缺少参数关联——改完尺寸后,倒角可能失效,需手动重建。这是工程迭代的底线:设计师不能接受“改一个数,整个模型崩掉”。
3. 从零搭建可用Text-to-CAD工作流:我的私藏技术栈与避坑清单
别被宣传稿忽悠。现在没有开箱即用的“Text-to-CAD神器”,但用现有开源工具组合,两周内就能搭出满足中小厂需求的可用流程。我去年给一家模具配件厂落地的方案,至今稳定运行,日均生成37个可投产模型。核心思路:不追求端到端黑盒,而是用模块化链路把每个环节的不确定性降到最低。以下是经过产线验证的技术栈和踩坑血泪史:
3.1 语言理解层:别碰大模型微调,用规则引擎+小模型蒸馏
很多团队一上来就想Finetune LLaMA做CAD专用大模型,烧了三个月GPU,结果发现:
- CAD术语太垂直,“沉头孔”“拔模斜度”“公差带”在通用语料里出现频次极低,微调数据难收集;
- 工程描述长度通常<100字,大模型反而过杀,推理慢、成本高。
我的方案是“规则+小模型”双保险:
- 规则引擎(Python + Pyparsing):预定义CAD语法规则库。例如
<feature> ::= "孔" | "槽" | "倒角" | "圆角",<dimension> ::= 数字+单位。当输入“Φ12沉头孔”,规则直接提取直径12、类型沉头,无需训练。覆盖80%基础描述。 - 小模型蒸馏(DistilBERT微调):只针对规则无法覆盖的模糊表达。比如“稍微薄一点”——规则不懂“稍微”,但用1000条标注数据(“稍微薄一点”→“厚度减0.3mm”)微调一个6层DistilBERT,准确率92%。模型体积仅45MB,CPU上推理<200ms。
踩坑实录:曾用ChatGLM3-6B直接解析,结果把“M4螺纹孔”识别成“M4型号的螺丝孔”,生成了个带螺丝模型的错误结构。根源是大模型缺乏CAD领域知识蒸馏,把“M4”当成产品型号而非螺纹标准。教训:工程领域,小而专永远胜过大而全。
3.2 建模执行层:OpenCASCADE是唯一靠谱的本地选择
云端API(Onshape/Fusion)虽好,但涉及图纸保密、网络延迟、订阅费,中小厂往往卡在审批关。本地部署必须选几何内核。我对比过:
- FreeCAD的Part Workbench:开源易用,但布尔运算稳定性差,复杂装配体生成常崩溃;
- OpenCASCADE(OCCT):工业级内核,CATIA/Creo底层都在用。学习曲线陡,但稳定性碾压。关键技巧:不用它从零写C++,而是用PythonOCC封装——我封装了常用操作函数库,如
create_cylinder(diameter, height),调用一行代码。
建模链路实操步骤:
- 规则引擎解析出结构化指令:
{"type":"cylinder","diameter":80,"height":25,"features":[{"type":"hole","diameter":12,"depth":25,"chamfer":1.5}]}; - PythonOCC按指令顺序执行:先建圆柱体,再用
BRepPrimAPI_MakeCylinder创建孔特征,最后用BRepFilletAPI_MakeChamfer添加倒角; - 导出STEP:
STEPControl_Writer().TransferShape(shape).WriteFile("output.step")。
注意:OCCT导出STEP时,默认不带颜色和图层信息。若需保留,必须在导出前用
XSControl_Reader设置SetColorMode(True),否则下游CAD软件读取后全是灰色。
3.3 格式交付层:STEP是底线,GLB是甜点,STL是毒药
交付格式决定模型命运。我的交付策略:
- 主交付:STEP AP242(不是AP203)。AP242支持GD&T公差标注、材料属性、装配关系,是ISO认证的制造级格式。用OCCT导出时,务必指定
STEPControl_StepModelType.STEPControl_AsIs,否则默认导出为AP203,丢失关键信息。 - 辅助交付:GLB。用Assimp库将STEP转GLB,但注意:GLB是可视化格式,绝不用于制造。我给采购部配的GLB查看器,只开放旋转/缩放,禁用测量功能,避免误用。
- STL?坚决不用。除非客户明确只要3D打印。STL三角面片无拓扑,导回CAD后无法编辑。曾有同事图省事导STL给机加工,结果铣刀路径规划失败——CAM软件认不出“孔”是空洞,当成实体切削。
表格:交付格式选型决策表
| 格式 | 可编辑性 | 制造兼容性 | 文件大小 | 适用场景 |
|---|---|---|---|---|
| STEP AP242 | ★★★★★(全参数) | ★★★★★(所有CAM软件) | 中(1-5MB) | 主交付,设计/制造/质检 |
| GLB | ★☆☆☆☆(仅视觉) | ☆☆☆☆☆(不可制造) | 小(0.5-2MB) | 供应链协同、移动端查看 |
| STL | ☆☆☆☆☆(Mesh体) | ★★☆☆☆(仅3D打印) | 大(5-20MB) | 3D打印专用,禁止混用 |
4. 真实产线落地的五个反直觉经验:为什么“能生成”不等于“能用”
在模具厂上线三个月后,我们复盘了所有失败案例,总结出五条违背直觉但至关重要的经验。这些不是理论,是产线工人、工艺师、采购员用时间砸出来的教训:
4.1 描述越“专业”,失败率越高——必须用“工人语言”重构提示词
工程师写的描述:“创建一旋转体,母线为y=0.5x²,绕z轴旋转,高度100mm,底部法兰连接,法兰孔位符合ISO 5211-DN50标准”。生成失败率83%。换成车间组长的说法:“做个喇叭口,上口直径200,下口直径80,高100,底下带法兰,法兰上有4个孔,孔距跟标准阀门一样”,成功率97%。原因在于:
- ISO标准代号(如DN50)在训练数据中稀疏,模型没见过;
- “y=0.5x²”是数学表达,但工人脑中是“上大下小的喇叭形”。
我的解决方案:建立“工程术语-工人语言”映射表。例如: ISO 5211-DN50→标准阀门法兰,4个孔,孔距120mm;拔模斜度1.5°→侧面稍微往外斜一点,保证能脱模。
现在所有输入描述,先经映射表转换再送入模型。别让AI学专业术语,让AI学人话。
4.2 模型生成后,必须人工介入的三个强制检查点
自动化不等于无人值守。我们设了三道人工闸门:
- 尺寸链校验:用Python脚本自动读取STEP文件,提取所有标注尺寸,检查是否满足“孔径+公差”“壁厚≥最小安全值”等硬约束。不通过?退回重生成。
- 制造可行性审查:调用免费版CAM软件(如FreeCAD Path模块)模拟粗加工路径。若出现“刀具无法到达的深腔”,标记为“需增加工艺孔”,交由工艺师确认。
- 装配干涉预检:将新模型与已有装配体STEP合并,用OpenCASCADE的
BOPAlgo_Checker检测干涉。曾发现一个支架模型与电机外壳干涉0.03mm——肉眼不可见,但装配时会卡死。
经验:这三步检查平均耗时92秒,但避免了90%的返工。自动化省下的时间,必须花在更关键的人工判断上。
4.3 “一键生成”是毒药,分步生成才是工程思维
所有宣传“输入描述,一键出图”的方案,都在掩盖复杂性。真实工程需要迭代:
- 第一步:生成基础几何体(圆柱、长方体);
- 第二步:添加主要特征(孔、槽、倒角);
- 第三步:注入制造约束(公差、表面粗糙度、热处理要求)。
我们做的交互式界面,每步生成后显示预览,并允许用户: - 修改某尺寸(如把Φ12改成Φ14);
- 删除某个特征(如去掉倒角);
- 追加新约束(如添加
[SURFACE_ROUGHNESS: Ra=1.6])。
这样生成的模型,设计师认可度高——因为控制感在人手上,AI只是高效执行者。
4.4 不要试图替代CAD,要成为CAD的“智能前置处理器”
最大的认知误区是:“Text-to-CAD会取代SolidWorks”。完全相反。我们的定位是:把CAD从“建模工具”升级为“决策验证平台”。
- 以前:设计师花3小时建模,再花2小时做强度仿真;
- 现在:Text-to-CAD 30秒生成初稿,设计师导入SolidWorks,直接运行Simulation插件校核——省下的3小时,全用来优化设计。
所以,我们所有生成模型,都预留“设计变量”接口。例如Φ12孔,在STEP文件里标记为$HOLE_DIAMETER,SolidWorks打开后可直接在方程式里修改,关联更新所有相关特征。AI不抢活,而是把重复劳动剥离,让人专注创造。
4.5 最小可行闭环:从“生成一个模型”到“生成一个BOM”
单个模型价值有限。真正的闭环是:Text-to-CAD生成模型 → 自动提取特征 → 生成BOM(物料清单) → 同步至ERP系统。我们用Python脚本实现:
- 读取STEP,用OCCT遍历所有实体,识别“圆柱体”“孔”“螺纹孔”;
- 根据识别结果,匹配企业BOM模板:圆柱体→“底座_80x25”;Φ12孔→“通孔_Φ12”;M4螺纹孔→“螺纹孔_M4x0.7”;
- 输出Excel BOM,含数量、材料、加工工艺(如“车削”“钻孔”)。
现在采购员收到邮件,附件里是模型STEP+可编辑BOM,直接导入ERP下单。这才是Text-to-CAD在供应链里的真实落点——不是炫技,是缩短从需求到采购的周期。
5. 下一步:让Text-to-CAD学会“看图纸”和“读标准”
当前Text-to-CAD的瓶颈,不在生成能力,而在上下文理解深度。我正推动两个方向的突破,它们将决定这项技术能否真正扎根产线:
5.1 多模态理解:从纯文本到“文本+图纸”联合解析
工程师发需求,常附一张手绘草图或旧图纸截图。现有工具只能读文字,草图白费。我们的试验方案:
- 用YOLOv8检测草图中的几何元素(圆、直线、标注线);
- 用OCR(PaddleOCR)识别标注数字和文字(如“Φ12”“R5”);
- 文本描述与图像特征融合输入多模态模型(CLIP微调版),联合解析。
实测效果:输入文字“支架,带两个安装孔”,加一张草图,模型能精准定位孔位在草图标记处,而非随意放置。这解决了“位置关系模糊”的老大难问题。
5.2 标准知识图谱:让AI懂国标、ISO、企业规范
最头疼的是标准引用。输入“按GB/T 1800.1-2020选公差”,模型要么忽略,要么乱选。我们的解法是构建轻量级CAD标准知识图谱:
- 节点:标准号(GB/T 1800.1-2020)、公差等级(IT7)、基本尺寸范围(>30~50mm);
- 关系:
IT7 → 公差值0.025mm,GB/T 1800.1-2020 → 引用GB/T 1800.2-2020; - 查询:当描述含标准号,模型实时查图谱,获取精确公差值并注入建模指令。
现在,输入“Φ12孔,按GB/T 1800.1-2020 IT7”,生成模型自动标注公差Φ12H7,且STEP文件里嵌入标准元数据。这才是工程合规性的根基。
这条路还很长。Text-to-CAD不是终点,而是工程数字化的一个支点——它撬动的,是把散落在老师傅脑子里的经验、图纸堆里的隐性知识、标准文档里的冰冷条款,第一次真正变成机器可执行、可传承、可迭代的数字资产。上周,模具厂老师傅指着新生成的滑块模型说:“这倒角角度,跟我干了三十年的感觉一模一样。”那一刻我知道,技术终于触到了工程的灵魂。