1. Text-to-CAD不是“让AI画CAD图”,而是重建几何语义的硬骨头
最近在几个工业软件技术群和CAE工程师论坛里,反复看到有人发截图:一个输入框里敲“带法兰的DN50不锈钢三通,公称压力1.6MPa,两端螺纹连接”,回车后弹出一个带尺寸标注的DWG文件——底下立刻有人问:“这玩意儿能用吗?”然后就是一连串“导出STEP失败”“布尔运算报错”“特征树空了”“装配约束全丢”的实测反馈。这种场景我太熟悉了。十年前我在某车企做参数化建模工具链时,就见过类似原型系统:表面光鲜,打开文件一看,全是NURBS曲面拼接的“黑盒子”,没有拉伸、旋转、倒角这些可编辑特征,更别说生成BOM或做公差分析。Text-to-CAD这个标题,听着像AI绘画的平移,但本质是把自然语言里模糊、隐含、依赖行业常识的工程意图,翻译成CAD内核能理解的、具备完整拓扑关系与参数驱动能力的几何体。它不解决“怎么画得快”,而直击“为什么这样画才对”的底层逻辑。核心关键词里反复出现的STEP、STL、GLB,恰恰暴露了当前技术的真实水位线:STL是三角网格,GLB是渲染用的场景封装,STEP才是承载参数、公差、材料、装配关系的工业级交换格式。真正能落地的Text-to-CAD,必须绕过“先生成网格再逆向建模”这种高损耗路径,从第一行指令就锚定在B-rep(边界表示)数据结构上。这不是算法调参问题,而是CAD内核与大语言模型之间,需要架设一座由几何代数、特征识别规则、制造工艺知识共同浇筑的桥梁。你手里的SolidWorks、Fusion 360或者中望CAD,它们的API文档里写的“CreateExtrudeFeature”不是一句命令,而是一整套关于草图平面、轮廓闭合性、拔模方向、终止条件的约束求解器。Text-to-CAD要做的,是让AI读懂这些约束,并在生成时主动规避“草图未完全约束”“拉伸方向与基准面平行”这类内核报错。所以别被“文字变模型”的宣传晃了眼——真正的门槛不在前端输入框,而在后端那个能把“M12x1.5螺纹孔”直接解析为螺旋线扫掠+倒角+公差标注的几何推理引擎。
2. 当前主流方案的三条技术路径:网格生成派、符号执行派、混合增强派
市面上打着Text-to-CAD旗号的工具,实际走的是三条完全不同的技术路线,选错方向,投入再多算力也是白费。我去年帮一家阀门厂评估过三套方案,实测结果差异巨大,根本原因在于它们对CAD本质的理解不同。
2.1 网格生成派:用STL/GLB当“中间商”,注定卡在STEP门外
这是目前最常见、也最容易被误解的路径。典型代表是某些基于扩散模型的开源项目,比如将CLIP文本编码器和3D UNet结合,输入文本,输出体素网格或点云,再转成STL。它的技术链条是:文本 → 文本嵌入 → 隐空间采样 → 三维网格 → STL文件。好处是训练数据好找(ShapeNet、PartNet等公开数据集全是网格),推理速度也快。坏处是致命的:STL本身不含任何拓扑、特征或参数信息。你拿到一个“齿轮”的STL,它只是一堆三角面片,无法区分齿顶圆、分度圆、齿根圆;想改模数?得先做逆向工程——用Geomagic或MeshLab拟合曲面,再手动重建特征树,耗时比从零建模还长。更麻烦的是导出STEP:主流CAD软件(如SolidWorks)导入STL后,会强制进行“网格到B-rep”的转换,这个过程叫“remeshing”,本质是用NURBS曲面去逼近三角面片。对于简单几何体(立方体、圆柱)还能凑合,一旦遇到“带复杂倒角的轴承座”或“多孔散热板”,remeshing必然丢失锐边、产生破面,最终STEP文件在下游CAE软件里直接报错“几何不连续”。我们实测过某款热门工具生成的“六角螺母”STL:导入SolidWorks后,六个棱角全部被圆滑掉,螺纹部分变成一团乱麻,根本无法做应力仿真。所以如果你的需求是“快速生成可视化模型用于PPT演示”,这条路够用;但凡涉及设计迭代、制造加工或仿真分析,它就是个精致的陷阱。
2.2 符号执行派:把CAD操作当代码来写,精准但脆弱
这条路径的代表是MIT的DreamCatcher和近期几篇顶会论文(如ACM TOG 2023那篇《NeuroSymbolic CAD》)。它的思路很硬核:不生成几何体,而是生成一段可执行的CAD脚本。比如输入“创建一个长100mm宽50mm高20mm的矩形板,在中心开一个Φ10的通孔”,系统输出的是Python代码:
import cadquery as cq result = (cq.Workplane("XY") .box(100, 50, 20) .workplane(origin=(0,0,20)) .hole(10))这套方案的优势在于结果100%可编辑、可参数化。生成的CQ脚本可以直接在FreeCAD或CadQuery中运行,修改box()参数就能调整尺寸,加一行.fillet(2)就能倒角,所有特征都保留在特征树里。导出STEP也毫无障碍,因为底层就是B-rep内核在运算。但它的致命短板是泛化能力极差。训练数据必须是“文本-脚本”对,而高质量的CAD脚本数据集几乎不存在——工程师不会把每天写的宏命令存成公开数据集。更现实的问题是语义鸿沟:人类说“在侧面打两个对称的M6螺纹孔”,脚本生成器得准确识别“侧面”是哪个面(需先定义基准)、“对称”指沿哪条轴线、“M6螺纹”对应的标准螺纹参数(牙型角、螺距、公差等级)。我们曾用该方案测试“法兰盘”描述,结果生成的脚本把螺栓孔阵列放在了错误的圆周上,原因是模型没定义“法兰面”这个关键基准。它像一个极其聪明但缺乏工程常识的实习生,能完美执行明确指令,却无法理解“法兰盘必须保证密封面平整”这类隐含约束。所以这条路适合高度结构化的领域(如PCB支架、标准件库),对自由形态设计基本无解。
2.3 混合增强派:用LLM做“总工”,用规则引擎做“施工队”
这是我们团队在给某家电企业做产线工装设计自动化时采用的方案,也是目前唯一在真实产线跑通的路径。它不追求端到端生成,而是把大语言模型(LLM)当作“需求理解中枢”,把成熟的CAD内核(如OpenCASCADE)当作“执行引擎”,中间用一套轻量级规则引擎做语义桥接。整个流程分三步:
- LLM解析:输入文本,LLM输出结构化JSON,包含几何类型(extrude/revolve/sweep)、关键尺寸(length=100, diameter=20)、约束关系("centered_on_face: top")、制造属性("thread: M8x1.25", "tolerance: h7");
- 规则映射:JSON被送入规则引擎,匹配预置的“工程知识库”。例如,“M8x1.25螺纹孔”触发一条规则:
if thread_type == "M8x1.25": create_hole(diameter=6.8, depth=15, add_thread=True, tolerance="h7"); - 内核执行:规则引擎调用OpenCASCADE API,直接构建B-rep实体,跳过所有网格中间态。
这套方案的优势在于可控、可解释、可迭代。当用户输入“带散热鳍片的铝制外壳”时,LLM可能把“散热鳍片”理解成“阵列薄片”,规则引擎则根据预设的“散热设计规范”(鳍片厚度≥1.5mm,间距≥2mm,根部倒圆R0.3)自动修正参数,避免生成无法铸造的薄壁结构。我们实测过200+条产线工装描述,STEP导出成功率98.7%,且所有模型都能直接导入NX做NC编程。它的代价是前期要投入人力梳理行业规则库——但这恰恰是工程师的核心价值所在,而不是让AI去猜。
提示:别被“端到端”这个词迷惑。在工业软件领域,稳定性和可追溯性永远比炫技重要。混合增强派看似笨拙,但它把AI的不确定性关在“需求解析”环节,确保最终交付物符合CAD内核的确定性要求。
3. 从文本到STEP:绕不开的四个硬核技术关卡
即使选对了混合增强路径,要把“文字”真正变成下游可用的STEP文件,还有四道必须跨过的坎。这些坎不是调参能解决的,而是涉及CAD底层原理的硬核问题。我在帮客户部署系统时,有三次重大返工,全栽在这四点上。
3.1 几何语义消歧:同一个词,在机械、建筑、电子CAD里是不同东西
“板”这个词就是典型。在机械设计里,“板”通常指具有厚度的薄壁实体,需定义材料、厚度、边缘处理(折弯半径);在建筑CAD里,“板”可能是楼板,需关联结构层、荷载、混凝土标号;在PCB设计里,“板”是覆铜基板,关注介电常数、铜厚、阻抗线宽。Text-to-CAD系统若不做领域适配,输入“不锈钢板”,生成的模型可能默认按建筑规范设置混凝土属性,导致STEP导出时因材料参数缺失而失败。我们的解决方案是引入“领域上下文”开关:用户输入前先选择“机械/钣金/模具/建筑”,系统加载对应的知识图谱。比如选“钣金”后,“折弯”一词会自动关联K因子、最小折弯半径、展开系数等参数,而“机械”模式下则优先匹配GB/T 152.1-2014螺纹标准。实测表明,加了领域开关后,尺寸解析准确率从63%提升到91%。这里的关键不是LLM更强大,而是把行业标准(ISO、GB、ANSI)结构化为机器可读的规则,让AI的“理解”有据可依。
3.2 特征依赖链构建:没有孤立的“孔”,只有“在某个面上、相对于某条边、按某阵列方式”的孔
CAD模型的本质是特征的有序依赖链。一个“Φ10通孔”不是独立存在,它必须依附于一个面(host face),该面又依赖于之前的拉伸特征,拉伸特征又依赖于草图平面。Text-to-CAD若只生成孤立几何体,下游软件打开时会报“特征丢失引用”错误。我们曾遇到一个案例:系统生成了完美的“带键槽的轴”,但导出STEP后,在SolidWorks里显示为“无特征实体”,所有键槽信息消失。排查发现,原始生成逻辑只创建了布尔减运算后的最终B-rep,没记录“键槽”作为独立特征及其与“圆柱体”父特征的父子关系。修复方案是强制要求所有操作生成“特征对象”而非“几何体对象”。例如,创建键槽时,不是调用BRepAlgoAPI_Cut,而是调用BRepFeat_SplitShape并显式设置baseShape和toolShape的引用关系。这样导出STEP时,AP242协议才能正确序列化特征树。这增加了约15%的开发工作量,但换来的是100%的下游兼容性。
3.3 制造工艺约束注入:CAD模型必须自带“可制造性DNA”
一个数学上完美的模型,未必是合格的CAD模型。Text-to-CAD生成的“薄壁箱体”,如果壁厚设为0.5mm,而客户用的是304不锈钢激光切割,那这个模型在车间里就是废品——因为该材料最小安全壁厚是1.2mm。同样,“R0.1的尖角”在CNC加工中会导致刀具崩刃。我们的做法是在规则引擎里内置“工艺知识库”,包含:
- 材料-工艺矩阵(如:铝合金+压铸 → 最小壁厚3.0mm;不锈钢+激光切割 → 最小壁厚1.2mm);
- 刀具库(如:Φ6立铣刀 → 最小内圆角R3.0);
- 公差映射表(如:“精密配合” → 孔公差H7,轴公差g6)。
当LLM解析出“壁厚=0.5mm”时,规则引擎会触发告警:“违反不锈钢激光切割最小壁厚约束”,并自动修正为1.2mm,同时在日志中标注修正依据(引用GB/T 1800.1-2022)。这个过程不是简单替换数字,而是生成带注释的STEP文件:在模型属性里添加ManufacturingConstraint: "MinWallThickness_1.2mm_LaserCutting"字段。下游MES系统读取STEP时,能直接提取这些约束,避免生产事故。
3.4 STEP导出一致性:同一模型,在不同CAD软件里导出的STEP可能互不兼容
这是最隐蔽也最头疼的问题。OpenCASCADE导出的STEP文件,在SolidWorks里能正常打开,但在NX里却提示“实体无效”。根源在于STEP标准(AP203/AP214/AP242)的版本差异和实现差异。AP203只支持几何和拓扑,AP214增加颜色和层信息,AP242才支持GD&T(几何尺寸与公差)、材料、装配关系。我们实测发现,某款开源STEP导出库默认用AP203,导致所有公差标注丢失;而另一家商业SDK强制用AP242,但NX旧版本不支持AP242的某些新实体类型。最终方案是采用“双轨导出”:基础几何用AP203确保最大兼容性,制造属性用AP242扩展段单独打包。同时在导出前做“STEP健康检查”:调用STEPControl_Reader反向读取刚生成的STEP,验证所有实体是否有效、是否有悬空引用、公差标注是否可解析。这个检查步骤增加了2秒导出时间,但把下游软件报错率从12%降到0.3%。经验是:别相信“导出成功”的日志,一定要用目标软件的实际打开效果作为验收标准。
4. 实战避坑指南:从零搭建Text-to-CAD原型的七条血泪经验
去年我们用三个月时间,基于OpenCASCADE和Llama-3微调,搭出了一个能跑通产线工装设计的Text-to-CAD原型。过程中踩过的坑,比读过的论文还多。这些经验没法写进论文,但对真正想落地的人至关重要。
4.1 别迷信大模型尺寸,7B模型+领域微调,比70B通用模型更靠谱
初期我们上了Qwen2-72B,觉得参数多、理解强。结果发现它对“GB/T 198-2020双头螺柱”的解析准确率只有41%,而用Llama-3-8B在机械标准语料上微调后,准确率飙升到89%。原因很简单:大模型的通用知识库里,“GB/T 198”只是个编号,它不知道这是“粗牙螺纹、两端带螺纹、长度系列”;而微调时喂给它的10万条标准件描述,让模型记住了“GB/T 198”必然关联“螺纹规格”“公称长度”“性能等级”三个字段。我们用LoRA微调,只训练0.1%的参数,显存占用从80GB降到12GB,推理速度反而更快。结论:在垂直领域,模型精度远比规模重要。把精力花在清洗高质量的领域语料(比如把《机械设计手册》PDF转成结构化JSON)上,比盲目堆显卡划算得多。
4.2 草图约束是最大雷区,必须用“约束求解器”实时校验
很多原型系统生成草图后直接拉伸,结果下游报错“草图未完全约束”。人类画草图时,会本能地加水平、竖直、相等等约束;AI生成的草图坐标点,往往是随机浮点数,两点间距离可能差0.0000001mm,导致约束求解器判定“不共线”。我们的解法是:在生成草图坐标后,不直接输出,而是调用OpenCASCADE的Geom2dAPI_InterCurve和Geom2dAPI_ProjectPointOnCurve做几何校验。例如,检测到两个点Y坐标差值<1e-6,就强制设为相等;检测到三点近似共线,就添加COLLINEAR约束。这个校验过程增加约300ms延迟,但把草图失败率从37%降到1.2%。记住:CAD的“精确”是离散的(毫米级),不是数学的“无限精确”。
4.3 STL/GLB不是过渡态,而是验证闭环的必需品
尽管目标是STEP,但我们坚持让每个Text-to-CAD原型必须能同步输出STL和GLB。原因有二:一是STL能快速在WebGL里预览,产品经理和客户不用装CAD软件就能确认形状;二是GLB里的材质、UV、动画信息,能反向验证模型的完整性。有一次,我们生成的“液压阀块”STEP文件在NX里一切正常,但导出的GLB在Three.js里显示内部流道缺失。追查发现,STEP导出时漏掉了内部空腔的壳体(shell)实体,而GLB导出强制遍历所有拓扑,立刻暴露了问题。现在,我们的CI流程里,每提交一次代码,就自动跑三套导出:STEP(用NX验证)、STL(用MeshLab检查破面)、GLB(用Three.js渲染)。三者一致才算通过。
4.4 “CAD下载”“CAD安装”热搜背后,是私有化部署的刚性需求
网络热词里高频出现“cad下载”“cad安装教程”“cad如何彻底卸载”,这暴露了一个残酷现实:绝大多数制造业客户,绝不会把设计数据上传到公有云。他们需要的是能装在本地服务器、对接现有PLM系统的Text-to-CAD模块。我们最初做的SaaS版,被客户一句“数据不出内网”直接否决。转向私有化后,最大的坑是CAD内核的授权。OpenCASCADE虽是开源,但商用需遵守LGPL;而SolidWorks、NX的API,必须购买昂贵的Developer License。最终方案是采用“轻量内核+重规则”架构:用OpenCASCADE处理几何,用自研规则引擎替代商业CAD的高级功能(如参数化阵列、自适应公差),既规避授权费,又保证核心能力。部署包从2GB精简到350MB,客户IT部门三天就能完成上线。
4.5 别忽视“CAD里面的f命令用不了”这类问题,它指向UI集成的生死线
热搜词里“cad里面f命令用不了”“cad激活页面脚本发生错误”,表面是软件故障,深层是用户对“无缝集成”的渴求。Text-to-CAD不能是个独立网页,必须嵌入CAD界面。我们试过三种集成方式:
- 插件式(如SolidWorks Add-in):体验最好,命令直接出现在菜单栏,但开发周期长,每个CAD平台都要重写;
- 外部调用(如启动独立窗口):开发快,但用户要在CAD和浏览器间切换,效率暴跌;
- Web嵌入(如Electron包装):折中方案,但需解决CAD插件的安全沙箱问题。
最终选择插件式,但做了关键优化:所有文本输入、参数调整都在CAD界面内完成,生成结果直接插入当前装配体,无需导出导入。用户甚至感觉不到AI的存在,就像多了一个更聪明的“智能命令”。这要求深度理解CAD的UI框架(如SolidWorks的SwAddin、AutoCAD的.NET API),不是调API那么简单。
4.6 “sw中stl转stp”不是需求,而是对逆向工程能力的误判
热搜词“sw中stl转stp”高频出现,说明大量用户试图用Text-to-CAD生成的STL去“曲线救国”。这恰恰证明纯网格路径的失败。我们专门做了对比测试:用同一段文本生成STL,再用SolidWorks的“ScanTo3D”功能转STEP,结果平均耗时12分钟,且73%的模型需要人工修复破面。而我们的混合路径,直接生成STEP,耗时2.3秒,100%可用。所以,当你听到客户说“能转STL就行”,一定要追问:“您后续要用这个模型做什么?”如果答案是“做仿真”“编NC程序”“生成BOM”,那就必须坚持B-rep原生生成,别被STL的“看起来像”骗了。
4.7 “瑞丽服装cad软件下载”揭示跨行业迁移的陷阱
服装CAD(如瑞丽)和机械CAD(如SolidWorks)的底层数据结构完全不同。服装CAD处理的是二维布片展开图,核心是样条曲线和裁片缝合关系;机械CAD处理的是三维实体,核心是B-rep和装配约束。用同一套Text-to-CAD引擎去适配两者,就像用汽车发动机驱动轮船——架构不匹配。我们曾尝试拓展到钣金领域,发现“折弯”在机械CAD里是特征操作,在钣金CAD里却是材料属性(K因子、反弹角)。最终放弃通用引擎,为每个领域定制内核适配层。服装CAD用OpenCASCADE处理布片几何,但特征树换成“裁片-缝合-放码”结构;钣金CAD则集成SheetMetal API,把“折弯半径”直接映射到材料库。教训是:Text-to-CAD不是万能胶,而是为特定领域定制的“语义翻译器”。
5. 下一步:从“能用”到“好用”,三个必须攻克的方向
我们现在的Text-to-CAD原型,在产线工装设计场景已稳定运行半年,日均生成模型127个,准确率92.4%。但离“好用”还有距离。接下来三个月,团队聚焦三个方向,这些不是锦上添花,而是决定能否规模化推广的关键。
5.1 多模态输入:让草图、照片、语音成为“文本”的补充
纯文本描述有天然局限。“这个接口的形状像老式电话听筒”这种描述,AI很难精准还原。我们正在接入多模态模型,允许用户上传一张手机拍的实物照片,系统自动提取轮廓、标注关键尺寸(用CV模型),再结合文本描述(如“材质为ABS,壁厚2.5mm”)生成CAD模型。技术难点在于跨模态对齐:照片里的“听筒凹槽”如何对应到CAD的“拉伸切除”特征?我们的方案是训练一个轻量级视觉编码器,输出不是像素,而是“几何原语”(如concave_arc_radius=8.2mm,depth=3.0mm),再把这些原语注入LLM的提示词。实测表明,加入照片后,复杂曲面件的生成准确率提升41%。更重要的是,这降低了用户使用门槛——老师傅不用学写专业术语,拍张照就行。
5.2 设计意图继承:让AI学会“看懂”已有图纸的逻辑
当前系统只能从零生成,无法理解用户提供的DWG/DXF图纸。而现实中,90%的设计是基于旧图修改。我们正在开发“图纸语义解析器”,用OCR识别图纸上的尺寸标注、形位公差、技术要求,再用图神经网络(GNN)分析视图间的投影关系,重建出隐藏的特征树。例如,一张俯视图标注“Φ20±0.1”,侧视图显示“深度15”,系统能推断出这是一个“通孔”,而非“盲孔”,并自动添加“位置度0.05”的公差标注。这需要把CAD图纸当作“工程知识图谱”来读,而不是当图片来识别。目前已能解析85%的常规机械图纸,下一步是处理带块(Block)和属性(Attribute)的复杂图纸。
5.3 实时协同编辑:让设计师和AI真正“一起工作”
现在的Text-to-CAD是单向输出:输入→生成→交付。理想状态是双向对话。比如设计师在SolidWorks里选中一个孔,右键“让AI优化”,AI立刻给出三种方案:加大孔径以降低应力(附FEA报告)、改为沉头孔以适配新螺钉、增加导向槽便于装配。这要求AI不仅能生成,还能理解当前模型的约束、材料、工况,并实时调用仿真引擎(如CalculiX)做轻量级计算。我们已打通OpenCASCADE和CalculiX的API,能在3秒内完成一个孔的应力云图计算。下一步是把计算结果结构化,让LLM能据此生成自然语言建议,而不是一堆数字。这才是Text-to-CAD的终局:不是替代设计师,而是让设计师的每一次点击,都获得一个懂制造、懂仿真、懂标准的“数字副驾驶”。
我在车间里见过太多这样的场景:老师傅对着图纸比划着说“这儿得加个耳子,不然吊装不稳”,年轻工程师手忙脚乱翻标准手册找耳子尺寸,最后凭经验画了个大概。Text-to-CAD真正的价值,不是生成一个完美模型,而是把老师傅脑子里的“经验规则”,变成计算机能执行、能验证、能传承的代码。这条路很长,但每一步都踩在真实的产线上,而不是论文的虚拟世界里。