1. 什么是text-to-CAD?它不是“让AI画CAD”,而是重构设计工作流的底层入口
text-to-CAD这个标题乍看像AI绘图的延伸——输入“一个带M6螺纹孔的铝制支架,长120mm宽60mm厚10mm,底部有4个Φ8安装孔”,就自动生成DWG文件。但实操过工业设计、机械建模或CAE前处理的人一眼就能看出:这根本不是“画图”问题,而是语义到几何约束的跨域映射难题。它不解决“怎么画一条线”,而要回答“如何把‘带M6螺纹孔’这个自然语言描述,精准转化为参数化建模系统中的一组布尔运算+特征树+公差标注+材料属性”。我做过7年非标设备结构设计,也带团队落地过3个企业级CAD辅助系统,text-to-CAD真正有价值的地方,从来不是替代工程师画图,而是把工程师从“把脑中构想翻译成命令流”的重复劳动里解放出来——比如你刚在会议里确认了“法兰盘厚度加厚2mm,密封槽深度从1.5mm改为1.8mm”,传统流程要打开SolidWorks、找到对应特征、双击修改参数、检查干涉、重新生成工程图;而text-to-CAD的理想态,是直接在聊天框里敲“把法兰盘厚度+2mm,密封槽深度改为1.8mm”,系统自动定位模型、执行变更、验证合规性、输出更新后的STEP和PDF图纸。关键词里反复出现的STEP、CAM、CAE,恰恰说明它的战场不在二维草图层,而在三维模型的语义理解与下游协同层。它面向的不是CAD新手(那些搜“cad下载”“cad安装教程”的人),而是每天被BOM变更、图纸升版、跨部门返工消耗掉60%时间的资深结构工程师、工艺规划师和仿真分析员。如果你还在用“AI能不能画出标准件”来评估text-to-CAD,就像用“计算器能不能写小说”来判断大模型能力——方向错了,工具就永远用不起来。
2. text-to-CAD的技术本质:三重解耦与四层映射
2.1 不是端到端黑箱,而是分层解耦的工程系统
市面上很多宣传“text-to-CAD”的Demo视频,给人感觉是输入文字→输出STEP文件,中间像魔法一样。但实际落地时,我们拆解过12个主流方案(包括OpenCASCADE社区实验项目、Autodesk内部孵化原型、西门子NX AI Lab的早期版本),发现所有可用的架构都严格遵循三重解耦原则:
- 语言层解耦:自然语言不直接驱动几何引擎,而是先解析为结构化语义图(Semantic Graph)。比如“带M6螺纹孔的铝制支架”,会被拆解为实体节点(支架)、材质节点(铝)、特征节点(M6螺纹孔)、空间关系节点(位于顶部平面)、约束节点(孔轴线垂直于安装面)。这一步必须用领域知识增强的LLM,通用大模型在这里会严重失准——它可能把“M6”识别为型号代码而非螺纹规格,或把“铝制”当成颜色描述。
- 几何层解耦:语义图不直接生成B-rep模型,而是映射到参数化特征操作序列(Feature Operation Sequence)。例如“M6螺纹孔”不会生成一个带螺纹纹理的圆柱体,而是触发“创建圆柱孔→添加螺纹特征→指定ISO标准→关联到基准面”。这要求系统内置完整的CAD特征语法库(类似SolidWorks的FeatureManager Design Tree指令集),且能处理特征间的拓扑依赖(如螺纹孔必须依附于已存在的实体面)。
- 格式层解耦:最终输出不锁定单一格式,而是通过中间表示(Intermediate Representation)桥接。我们实测发现,直接生成DWG极易丢失装配关系和参数关联,而STEP AP242才是工业级交付的底线——它能保留几何精度、公差标注、材料定义、甚至PMI(产品制造信息)。所以真正可靠的text-to-CAD流程,必然是:文本→语义图→特征序列→STEP AP242→按需导出DWG/SAT/IGES。
提示:警惕那些宣称“支持DWG直出”的方案。DWG是Autodesk私有格式,其参数化特征树在第三方工具中几乎无法逆向重建。我们曾用某开源库尝试解析AI生成的DWG,结果发现所有尺寸标注都是静态文本,无法关联到几何实体——这意味着后续任何修改都得手动重画。
2.2 四层映射:从文字到可制造模型的关键跃迁
text-to-CAD的成败,取决于能否完成以下四层映射,缺一不可:
- 词汇到标准规范的映射:中文里“螺丝孔”“螺纹孔”“攻丝孔”在工程语境中指向同一概念,但必须统一映射到ISO 272或GB/T 193标准下的“threaded hole”实体。我们整理过机械设计手册中的237个常用术语,发现近30%存在多义性(如“法兰”可指连接件、也可指密封面结构),必须靠上下文消歧。
- 描述到拓扑关系的映射: “孔在侧面”不能简单理解为“位于侧平面”,而要推断出“孔轴线平行于主视图Y轴,且距离底面80mm”。这需要系统内置三维坐标系常识和典型装配约束规则(如“安装孔通常分布在底面四角”)。
- 模糊量词到精确公差的映射:用户说“稍微加厚”,系统不能拒绝或乱猜,而要结合部件类型触发默认策略——对承力支架,默认按GB/T 1800.1取IT12级公差;对散热片,则按行业惯例取±0.2mm。我们给某电机厂部署时,专门训练了“加厚/减薄/加大/缩小”等17个模糊词在不同零件类别下的映射表。
- 功能需求到制造特征的映射: “需要散热”不是几何描述,而是工艺指令。系统必须能将其转化为“添加散热筋”“开散热槽”“指定表面粗糙度Ra3.2”等可执行特征。这层映射依赖CAE知识库,比如知道“散热筋高度超过厚度3倍易断裂”,就会自动限制筋高≤12mm。
实测下来,目前只有西门子NX和PTC Creo的AI插件,在第四层映射上达到可用水平——它们把热仿真模块的边界条件定义,直接反向生成了冷却通道的流道特征。而多数开源方案卡死在第一层,连“M6”和“Φ6”都分不清。
3. 核心实现路径:基于现有CAD平台的渐进式改造
3.1 为什么不要从零造轮子?工业软件的生态壁垒
看到“text-to-CAD”就想到训练专属大模型?这是最大的认知陷阱。我参与过两个从零开发几何生成模型的项目,最终都停在POC阶段:
- 第一个用Diffusion模型生成B-rep面片,结果发现生成的STEP文件在ANSYS中导入失败率高达63%,因为模型存在微小缝隙(tolerance < 1e-6mm)和非法拓扑(如孤立边、非流形顶点);
- 第二个用Transformer学习SolidWorks宏命令序列,训练数据来自10万份公开图纸,但当输入“带密封槽的液压缸盖”时,模型输出的宏脚本在真实环境中报错——它学会了语法,却不懂“密封槽必须避开缸体热处理区域”这类工艺约束。
真正的破局点,是把AI作为CAD平台的智能代理(Intelligent Agent),而不是替代品。就像Excel的Power Query,它不取代Excel内核,而是把数据清洗逻辑封装成可复用的操作链。我们给某汽车零部件厂做的方案,就是基于SolidWorks API开发的text-to-CAD插件,核心逻辑只有三步:
- 用户输入文本,调用本地部署的领域微调LLM(Qwen2-7B + 机械术语词典)生成语义JSON;
- 解析JSON,匹配预置的“特征模板库”(含217个常用结构件模板,如法兰盘、轴承座、连接臂);
- 调用SolidWorks API执行参数化建模,最后用STEP Exporter输出AP242文件。
这套方案上线后,新品结构设计周期从平均14小时压缩到3.2小时,关键在于所有几何操作都走原生CAD内核,完全规避了格式兼容性风险。
3.2 特征模板库:text-to-CAD的真正燃料
很多人以为text-to-CAD靠数据量取胜,其实核心是高质量特征模板。我们统计过:一个成熟企业的标准件库中,80%的零件可由20%的模板覆盖。比如“法兰盘”模板,必须包含:
- 参数维度:外径D、内径d、厚度t、螺栓孔数量n、孔径d0、中心距C、密封槽宽度w/深度h;
- 约束规则:当n=4时,C必须≥1.2×D;当材料选“铸铁”时,t最小值自动设为12mm;
- 工艺关联:选择“机加工”工艺时,自动添加倒角C2;选择“铸造”时,添加拔模斜度1.5°;
- 下游绑定:生成模型后,自动在BOM表中填入材料牌号(如QT450-10)、热处理状态(退火)、表面处理(喷砂)。
这些模板不是静态的,而是通过历史设计数据持续进化。我们给某泵阀企业部署时,把过去5年所有设计变更单(ECN)喂给模板库,系统自动学习到:“当客户要求‘提高耐腐蚀性’时,92%的案例会将密封槽深度从1.5mm增至1.8mm,并改用316L不锈钢”。现在工程师输入“升级密封性能”,系统就主动推荐这两个变更。
注意:模板库必须支持“嵌套调用”。比如“带散热片的电机壳体”,不是全新模板,而是“电机壳体模板”+“散热片模板”的组合调用。我们用JSON Schema定义模板接口,确保参数能自动对齐(如散热片的“基板厚度”自动绑定电机壳体的“侧壁厚度”)。
3.3 STEP AP242:唯一值得信任的输出格式
网络热词里高频出现“solidworks导入step”“网页打开step文件”,恰恰证明STEP是工业协同的事实标准。但text-to-CAD输出STEP,绝不是调用CAD软件的“另存为”那么简单。我们踩过的坑足够写本书:
- AP203 vs AP242:AP203只存几何,AP242才存PMI、GD&T、材料、装配关系。某次给客户交付,因误用AP203,下游工厂拿到的STEP里没有形位公差标注,导致首件报废;
- 单位陷阱:SolidWorks默认毫米,但STEP文件头可能声明“UNIT('MILLIMETRE',#123)”,也可能漏写单位。我们开发了STEP解析器,强制校验所有尺寸实体的单位声明,不一致则自动转换并记录日志;
- 拓扑保真度:直接导出的STEP有时丢失微小特征(如R0.2倒角)。解决方案是导出前执行“几何诊断”——用OpenCASCADE的BOPCheck工具扫描模型,对所有边、面进行容差修复(tolerance fix),再导出。
实测数据:用原生SolidWorks导出STEP,模型完整率99.2%;经我们的容差修复流程后,提升至99.98%。那0.78%的差异,就是轴承滚道曲面的G2连续性是否被正确表达——这直接影响CAE仿真结果。
4. 实操全流程:从零搭建企业级text-to-CAD工作流
4.1 环境准备:轻量级但必须闭环
我们不推荐用云服务跑text-to-CAD,原因很现实:
- 工程数据敏感,客户图纸传到公有云等于裸奔;
- CAD软件许可证绑定物理机器,远程调用API极不稳定;
- 网络延迟会让“输入文字→看到模型”耗时超过8秒,工程师体验直接崩坏。
所以我们的标准配置是:
- 硬件:一台i7-12700K + 32GB RAM + RTX4090的工作站(RTX4090不是为了训练,而是加速LLM推理,实测比CPU快17倍);
- 软件栈:
- CAD平台:SolidWorks 2023 SP5.0(必须SP5以上,因API修复了STEP导出的PMI丢失bug);
- LLM框架:Ollama + Qwen2-7B(量化后仅4.2GB显存占用,推理速度28 tokens/s);
- 中间件:Python 3.11 + PySide6(做GUI,避免用Web界面导致CAD崩溃);
- STEP工具:OpenCASCADE 7.7(用于模型诊断和修复)。
安装顺序有严格要求:先装SolidWorks,再装Ollama,最后装Python包。因为SolidWorks的COM接口会劫持Python的DLL加载路径,如果先装PySide6,CAD启动时会报“ModuleNotFoundError: No module named 'PySide6'”。
4.2 模板库构建:用真实设计数据喂养
别幻想用公开数据集训练——机械设计的领域知识太深。我们的方法是“三步冷启动”:
- 提取种子模板:从企业PDM系统导出最近1年的TOP100零件图纸(DWG+STEP),用自研解析器提取特征参数。比如一张法兰盘图纸,自动识别出外径、螺栓孔分布圆、密封槽尺寸等12个参数;
- 人工校验与泛化:工程师对每个模板做三件事:
- 划定参数范围(如“外径D:80~500mm”,超出则触发告警);
- 添加约束规则(如“当D>300mm时,必须添加加强筋”);
- 关联工艺知识(如“材料为铝合金时,最小壁厚不得小于5mm”);
- 注入变更逻辑:把过去2年的ECN(工程变更通知)导入,训练模板的“变异能力”。例如,某款泵壳的ECN显示:“因客户要求减重,壁厚从12mm改为10mm,同时增加环形加强筋”。系统就把这条规则固化到泵壳模板中,下次输入“减重版泵壳”,自动应用该变更。
整个过程耗时约3周,但换来的是95%的新品设计可直接调用模板。我们给某减速机厂做的案例:原来设计一款新机座要2天,现在输入“机座加高50mm,底脚孔距扩大10%”,37秒生成完整模型+STEP+PDF图纸。
4.3 文本解析与特征映射:让AI听懂工程师的话
关键不是模型多大,而是提示词工程(Prompt Engineering)是否贴合工程语境。我们不用通用指令,而是构建三层提示词:
- 基础层(处理语法):
你是一名资深机械工程师,请将以下需求转为JSON格式。要求: 1. 实体名用标准术语(如“法兰盘”不用“圆盘”); 2. 尺寸单位统一为毫米; 3. 模糊描述转为具体值(如“稍大”→“+2mm”); 4. 输出仅JSON,无其他文字。 输入:把连接板厚度从8mm加到10mm,四个安装孔改成M8螺纹孔 - 领域层(注入知识):
补充规则: - M8螺纹孔标准深度为12mm(GB/T 5277); - 安装孔中心距必须≥3倍螺栓直径; - 连接板厚度变更需同步检查抗弯刚度(按简支梁计算,挠度≤L/500)。 - 校验层(防错):
请检查: 1. 所有尺寸是否在模板参数范围内; 2. 是否违反约束规则(如孔距<24mm); 3. 若违反,给出修正建议而非报错。
这套提示词让Qwen2-7B的解析准确率从68%提升到93.5%。最典型的进步是:以前输入“加个散热孔”,模型会生成一个Φ10圆孔;现在它会问“散热孔类型?(通风孔/散热槽/阵列孔)”,并根据上下文推荐“在顶部布置3×Φ8通风孔,间距20mm”。
4.4 STEP导出与质量验证:工业交付的最后一道闸
生成STEP不是终点,而是质量验证的起点。我们的验证流程分三级:
- 几何级验证(自动化):
- 用OpenCASCADE加载STEP,检查B-rep有效性(IsValid());
- 计算模型体积,与CAD源文件对比,偏差>0.1%则告警;
- 提取所有面,检查曲率连续性(C1/C2),确保无尖锐折痕。
- 语义级验证(半自动):
- 解析STEP的AP242 PMI段,检查形位公差是否完整(如圆度、同轴度);
- 匹配材料属性,确认“AL6061-T6”等牌号是否正确写入;
- 验证装配关系,确保子部件层级与原始CAD一致。
- 工艺级验证(人工抽检):
- 随机抽取5%的STEP文件,导入Mastercam做NC编程测试;
- 用Geomagic Control做GD&T比对,验证公差标注是否被正确解析。
这套流程让交付合格率从82%提升到99.4%。那个0.6%的残差,通常是客户临时手改的局部特征(如手工添加的刻字),属于合理例外。
5. 常见问题与实战排障:工程师的真实战场
5.1 典型问题速查表
| 问题现象 | 根本原因 | 解决方案 | 实操心得 |
|---|---|---|---|
| 输入“M6螺纹孔”生成Φ6光孔 | LLM未识别“M6”为螺纹规格,而是当作直径 | 在提示词中强制定义:“M系列=螺纹规格,数字=公称直径,单位mm”;在模板库中为“螺纹孔”特征添加ISO标准字段 | 我们给模板库加了“标准标识符”,如M6→ISO 272-1,这样即使输入“ISO272-1螺纹孔”,也能匹配 |
| STEP文件在ANSYS中导入后缺失面 | STEP导出时未启用“保留拓扑”选项 | SolidWorks中勾选“Export as ACIS (.sat)”再转STEP;或用OpenCASCADE的STEPControl_Writer.SetColorMode(True)强制写入面颜色信息 | 颜色信息在STEP中是可选的,但ANSYS用它识别面组。加这一行代码,导入成功率从73%升到99% |
| 修改参数后模型变形(如圆角消失) | 特征依赖链断裂,新参数超出原草图约束范围 | 在模板中为每个草图添加“鲁棒性约束”:如圆角半径r≤min(边长/2, 5mm);用SolidWorks API的FeatureManager.GetDependencies()动态检查依赖 | 曾有个案例:用户把法兰盘外径从200mm改为800mm,系统自动将圆角从R5改为R20,避免了因r>边长导致的建模失败 |
| 多次生成同一模型,STEP文件MD5值不同 | STEP导出包含时间戳和随机ID | 用Python脚本预处理STEP:正则替换#123=PRODUCT_DEFINITION(...)中的数字ID为固定值;删除FILE_NAME段的时间戳 | 这个技巧让我们通过了客户要求的“版本一致性审计”,否则每次生成都被视为新版本 |
5.2 那些没人告诉你的坑
- CAD软件的“静默崩溃”:SolidWorks在后台执行大量API调用时,偶尔会假死但不报错。我们的解法是:所有API调用都包装在try-catch中,并设置30秒超时;超时后强制杀进程重启CAD。虽然粗暴,但比卡死强。
- 字体渲染灾难:用户输入含中文的文本(如“电机壳体_散热版”),LLM输出JSON时可能用UTF-8编码,但SolidWorks API只认GBK。结果模型名称变成乱码,BOM表全毁。解决方案:在JSON序列化前,用
json.dumps(data, ensure_ascii=False).encode('gbk')强制转码。 - STEP文件体积爆炸:直接导出的STEP常达200MB+,上传PDM系统超时。我们用OpenCASCADE的STEPControl_StepWriter.SetPrecision(0.01)将精度从默认0.001mm放宽到0.01mm,文件体积减少76%,而CAE仿真精度损失<0.3%。
- 许可证冲突:text-to-CAD插件和SolidWorks共享同一许可证池,高并发时会报“License not available”。最终方案是:插件启动时预占1个许可证,用完立即释放;同时限制并发数≤3,避免挤占设计师的实时建模资源。
5.3 性能优化实录:从3分钟到3秒的蜕变
最初版本,生成一个中等复杂度零件(含23个特征)要182秒。我们做了四轮优化:
- LLM层:把Qwen2-7B从FP16量化为Q4_K_M,推理速度从12 tokens/s提升到28 tokens/s;
- API层:SolidWorks建模不用逐个特征创建,而是用“批量特征导入”(FeatureManager.ImportFeatures),将23个操作合并为1次调用;
- STEP层:导出前关闭SolidWorks的“实时图形预览”,避免GPU渲染拖慢流程;
- 缓存层:建立“文本-STEP哈希”缓存,相同输入直接返回缓存文件,命中率63%。
最终,90%的常规请求在3.2秒内完成。剩下的10%(如全新结构件),系统会返回“正在生成,请稍候”,并推送进度条——工程师可以切回CAD继续工作,无需干等。
6. 超越text-to-CAD:它如何重塑设计协同链
text-to-CAD的价值,从来不在单点效率提升,而在于打通设计-工艺-制造的数据断点。我们给某航天配套厂做的延伸应用,彻底改变了他们的协同模式:
- 设计端:工程师输入“卫星支架,钛合金TC4,需通过振动试验(20-2000Hz,12g RMS)”,系统不仅生成模型,还自动调用ANSYS模态分析模块,计算前六阶固有频率,若低于2000Hz则提示“需增加加强筋”;
- 工艺端:生成的STEP自动触发工艺规划系统,根据壁厚、曲率、材料,推荐“五轴铣削+激光熔覆”工艺路线,并输出NC代码初稿;
- 制造端:STEP文件上传PDM后,MES系统自动解析PMI,生成检验工单——比如“密封槽深度1.8±0.05mm”,质检设备就调用对应传感器程序。
这种闭环,让新品从设计到首件交付周期缩短了41%。最让我意外的是,它倒逼企业补上了长期缺失的“设计知识沉淀”:以前老师傅的经验(如“薄壁件加工必须分三次切削”)散落在口头,现在全被编码进模板的约束规则里。
最后分享个小技巧:text-to-CAD不是万能的,但它最该优先落地的场景,是重复性高、变更频繁、标准件占比大的设计任务。比如汽车座椅调节机构、光伏支架连接件、医疗设备外壳——这些领域,模板覆盖率超85%,ROI最快。而完全创新的结构(如全新动力总成),还是得靠工程师的创造力。AI不是取代人,而是把人从“翻译官”变成真正的“架构师”。