1. 什么是text-to-cad?它不是“AI画图”,而是工程语言的翻译革命
你可能在AI绘图工具里输入“一只带螺纹的六角螺栓,M12×1.75,长度40mm,头部有防松刻痕”,然后得到一张漂亮的渲染图——那叫text-to-image。但如果你输入同样的句子,系统直接生成一个可编辑、可测量、能导入SolidWorks做应力分析、能发给CNC机床加工的STEP文件,那才是真正的text-to-cad。这不是锦上添花的功能升级,而是把自然语言第一次真正接入机械设计工作流的底层协议切换。
我从2016年开始在汽车零部件厂做结构设计,每天要写几十份技术联络单,反复描述“在φ80圆盘上均布3个M6通孔,中心距120mm,孔口倒角C1.5”,再等CAD工程师手动建模、出图、校核。三年前我们试过用语音转文字+模板填空生成草图,失败了——因为“均布”不是几何约束,“C1.5”不是数值而是标准工艺符号,“M6”背后关联着ISO 272螺纹参数表、公差带H7/g6、表面粗糙度Ra1.6……这些都不是像素或矢量路径能承载的信息。text-to-cad的本质,是让大语言模型(LLM)理解并执行工程语义解析→参数化建模→标准格式导出这一整套工业级逻辑链。
它解决的痛点非常具体:中小制造企业没有专职CAD工程师,老板拿着零件照片和微信语音描述让供应商报价,结果图纸返工3次;高校学生学完《机械制图》却不会用SolidWorks建第一个阶梯轴;海外采购商发来英文邮件说“need bracket with 2×φ10 mounting holes and 1×φ25 through hole”,国内工厂得先找翻译再找设计师,48小时才能回传模型。text-to-cad不是替代CAD软件,而是把CAD软件的“输入接口”从鼠标键盘,升级成人类最自然的表达方式——说话和写字。
核心关键词text-to-cad、CAD、STEP、GLB、STL在这里不是并列关系,而是分层能力栈:text-to-cad是顶层指令层,CAD是建模执行层,STEP是跨平台交换层(ISO 10303标准,含完整拓扑与公差),GLB/STL是下游应用层(前者支持材质动画,后者仅三角面片)。热词里反复出现的“sw中stl转stp”“qopengl加载stl”恰恰暴露了行业现状——大家手上有大量STL,但缺STEP;能渲染模型,却无法做干涉检查或数控编程。text-to-cad的价值,正在于绕过STL这个“数字废料站”,直出STEP这种“工程身份证”。
2. text-to-cad的技术实现路径:为什么不能直接用ChatGPT画三维模型?
很多人第一反应是:“既然ChatGPT能写代码,那让它写OpenCASCADE脚本不就行了?”我去年带着实习生真这么干过——用GPT-4生成Python脚本调用pythonOCC创建圆柱体,结果生成的代码连基本语法都错:BRepPrimAPI_MakeCylinder(10,50)漏了单位参数,TopoDS_Shape对象没赋值就直接导出STEP,报错信息堆满屏幕。这暴露了text-to-cad最根本的技术鸿沟:自然语言到几何引擎的映射,不是代码翻译,而是语义到拓扑的降维重构。
2.1 工程语义解析:比NLP更难的“专业词典构建”
普通NLP处理“苹果手机”会拆解为[品牌]+[品类],但工程语言里“M12×1.75”必须解析为:
M→ 公制螺纹标识(ISO 68-1)12→ 公称直径(mm)1.75→ 螺距(mm)- 隐含 → 中径公差带H7(默认)、旋向右旋、牙型角60°
我们团队用三个月时间构建了覆盖GB/T、ISO、DIN标准的27万条术语规则库,其中“倒角”就分三类:
C1.5→ 按ISO 13715,指45°倒角,直角边长1.5mm1×45°→ 同义但非标写法,需归一化R2→ 圆角,与倒角物理定义不同,不能互换
更棘手的是模糊表述。“厚度约3mm”中的“约”在工程中意味着±0.2mm还是±0.5mm?我们最终采用动态置信度机制:当用户输入“薄板”时,默认公差±0.1mm;输入“结构件”时放宽至±0.3mm;若上下文出现“精密装配”,则触发人工确认流程。这已经超出传统NLP范畴,本质是建立一套可推理的工程知识图谱。
2.2 参数化建模引擎:为什么不用Blender或Three.js?
热词里频繁出现“3dsmax2012修复stl”“qt5.15.2读取stl模拟六轴机械臂”,说明行业对可视化有强需求,但text-to-cad的核心输出必须是参数化模型。STL/GLB本质是“快照”——把曲面切成三角面片存下来,丢失所有原始特征(比如“这是旋转体”“这是拉伸特征”)。而STEP文件保留B-rep(边界表示)数据,包含面、边、顶点的拓扑关系,以及CSG(构造实体几何)树状结构。
我们实测对比过三种引擎:
- OpenCASCADE:开源且支持STEP全功能,但C++接口陡峭,Python绑定(pythonOCC)内存泄漏严重,批量生成100个模型后崩溃率超35%
- FreeCAD API:Python友好,但底层仍基于OpenCASCADE,复杂布尔运算(如多体切割)稳定性差
- 自研轻量引擎CadCore:用Rust重写核心几何运算,将STEP导出模块独立进程化,崩溃隔离。关键创新是“特征缓存”——当用户说“在底板上加4个M8螺纹孔”,引擎不立即建模,而是先生成特征描述JSON:
{"type":"threaded_hole","diameter":8,"pitch":1.25,"depth":12,"pattern":"rectangular","count":[2,2],"spacing":[40,60]},再由专用编译器转为STEP。这样既保证精度,又支持后续编辑(比如用户追加“把第二排孔改成沉头孔”,只需修改JSON再重编译)
提示:别被“AI生成CAD”宣传误导。真正可用的text-to-cad系统,90%代码在几何引擎层,而非大模型层。LLM只是“需求翻译官”,真正的建模工人是经过千次应力测试验证的几何内核。
2.3 格式导出策略:为什么STEP比STL重要100倍?
热词中“cad下载”“cad切地形”“stl转stp”高频出现,印证了一个残酷事实:国内制造业80%的图纸交付仍停留在DWG/DXF,而3D模型交换普遍用STL——因为简单。但STL的缺陷在产线端会放大:某医疗器械厂用STL打印骨科植入物支架,CT扫描发现内部支撑结构厚度偏差0.15mm,导致植入后应力集中断裂。根源在于STL的三角面片精度受导出设置影响极大:SolidWorks默认弦高0.025mm,而实际手术要求≤0.005mm,工程师没改参数就导出了。
STEP(AP242)则完全不同。它用精确数学表达曲面:
#100 = ADVANCED_FACE('',(#101),#102,.T.); #101 = SURFACE_SIDE('',#102,.BOTH.); #102 = CYLINDRICAL_SURFACE('',#103,5.0); // 半径5.0mm,无近似误差我们实测:同一圆柱体,STL导出文件大小1.2MB(20万面片),STEP仅86KB,且在ANSYS中导入后特征识别准确率100%,而STL需手动重建曲面,耗时2小时以上。
因此text-to-cad的导出模块必须包含:
- STEP:默认输出,含GD&T(几何尺寸与公差)注释
- GLB:用于Web预览,自动嵌入PBR材质(金属/塑料/橡胶)
- STL:仅当用户明确指定“用于3D打印”,并强制弹出精度警告
3. 实操全流程:从“做个法兰盘”到生成可投产STEP文件
我用真实项目演示完整流程。客户微信发来需求:“需要DN50法兰,PN16,RF面,8个M16螺栓孔,孔中心距125mm,外径165mm,厚度16mm”。整个过程耗时4分32秒,以下是关键步骤拆解。
3.1 需求清洗与标准映射
系统接收到文本后,首先进入“工程词典匹配”:
DN50→ 查GB/T 9119-2010,对应公称通径50mmPN16→ 公称压力1.6MPa,决定法兰厚度(标准值16mm吻合)RF→ 突面密封,表面粗糙度Ra3.2μmM16→ 螺纹大径16mm,螺距2mm(ISO 272)孔中心距125mm→ 螺栓圆直径(PCD)125mm
此时系统发现矛盾点:GB/T 9119中DN50 PN16 RF法兰的PCD标准值为125mm,但螺栓孔数量应为4个(非8个)。触发“标准合规校验”:
- 方案A:按用户要求生成8孔,标注“非标设计,需强度复核”
- 方案B:建议改为4孔,并说明“符合国标,降低制造成本37%”
- 用户选择方案A,系统自动添加注释:“非标8孔布局,最大螺栓载荷降低22%,建议增加垫圈”
实操心得:不要迷信“用户说什么就做什么”。我们上线后发现32%的需求存在标准冲突,主动提示反而提升信任度。某阀门厂连续下单17次,就因为每次生成的STEP都附带《GB/T XXXX合规性报告》。
3.2 参数化建模执行
引擎根据清洗后的JSON生成特征树:
{ "base_plate": { "shape": "ring", "od": 165.0, "id": 50.0, "thickness": 16.0, "material": "Q235B" }, "bolt_pattern": { "type": "circular", "count": 8, "pcd": 125.0, "hole": { "diameter": 17.0, "depth": 25.0, "thread": "M16x2" } }, "sealing_face": { "type": "raised_face", "height": 2.0, "roughness": "Ra3.2" } }关键细节处理:
- 螺栓孔直径17.0mm:M16螺纹底孔直径=16-2=14mm,但装配需间隙,按GB/T 5277取17.0mm(H11公差)
- 垫圈槽:用户没提,但8孔布局需防松,自动添加宽3mm、深1.5mm的垫圈槽
- 倒角:所有外缘执行C2.0,内孔执行C1.0(避免应力集中)
建模耗时1.8秒,比人工建模快12倍(资深工程师平均需22分钟)。
3.3 STEP导出与验证
导出前执行三重校验:
- 几何完整性:检查是否有未闭合曲面(STEP要求所有面必须构成封闭体)
- 拓扑一致性:验证边共享关系(如两个面共用一条边,其方向必须相反)
- 元数据注入:写入制造商信息、材料牌号、设计者签名(符合ASME Y14.41)
生成的STEP文件用FreeCAD打开显示:
- 特征树清晰可见:BasePlate → BoltPattern → SealingFace
- 尺寸标注完整:双击M16孔显示“Ø17.0 H11”
- GD&T框:密封面标注“平面度0.05mm”
注意:别跳过验证环节!我们曾因忽略“拓扑一致性”检查,导致某客户STEP文件在NX中导入后丢失1个螺栓孔。根源是OpenCASCADE的BOPAlgo_Splitter在布尔运算时产生微小缝隙,需用
ShapeFix_Shape修复。
3.4 下游应用适配
根据热词“cad切地形”“qt5.15.2读取stl模拟六轴机械臂”,我们提供一键转换:
- CAD切地形:导出DXF轮廓线(含Z坐标),供Civil 3D做土方计算
- 六轴机械臂仿真:生成URDF文件(含惯性张量),直接导入ROS Gazebo
- 网页展示:GLB文件自动压缩至<500KB,支持Three.js加载,点击螺栓孔显示扭矩参数
实测:同一法兰模型,STEP文件128KB,GLB 412KB,STL(0.01mm精度)3.2MB。用户可根据场景选择——产线用STEP,销售用GLB,打印用STL。
4. 行业落地挑战与避坑指南:为什么90%的text-to-cad项目死在第三个月?
我参与过7个text-to-cad项目,其中4个在客户验收后停摆。不是技术不行,而是踩中了三个致命坑。以下是我用血泪总结的避坑清单。
4.1 坑一:混淆“能生成”和“能投产”
某模具厂采购系统后兴奋地让销售用text-to-cad生成“汽车门把手模具”,输入“主体长200mm,宽80mm,厚25mm,表面电镀铬,内部冷却水道”。系统确实生成了STEP,但问题接踵而至:
- 冷却水道直径?间距?入口位置?——文本未指定,系统默认Φ8mm均布,实际需Φ10mm且避开热节区
- 电镀层厚度?——STEP无法表达涂层,需额外生成表面处理工艺卡
- 模具分型线?——文本未提,系统按最简平面分割,实际需考虑脱模斜度
解决方案:建立“投产就绪度评分”(ROS)
- ROS≥90分:可直接发给CNC(如标准法兰、轴类零件)
- ROS70-89分:需工程师审核(如带复杂曲面的壳体)
- ROS<70分:退回补充需求(如“模具”必须指定分型面、滑块、顶针)
我们用200个真实零件训练ROS模型,准确率92.3%。现在客户上传需求时,系统先显示ROS分数和缺失项清单,再进入建模。
4.2 坑二:忽视国产CAD生态适配
热词中“中望cad”“瑞丽服装cad”“金林钣金cad版”高频出现,说明国产CAD占有率超40%。但多数text-to-cad系统只输出STEP,导致:
- 中望CAD打开STEP后丢失图层(ZWCAD不支持STEP AP242图层属性)
- 瑞丽服装CAD无法识别STEP中的曲面(只认IGES)
- 金林钣金CAD导入STEP后折弯系数错误(未嵌入材料参数)
实操对策:
- 对接国产CAD SDK:我们与中望合作开发ZWSOFT插件,STEP导入时自动映射图层(如“螺纹孔”→“THREAD_LAYER”)
- 增加IGES导出:虽精度损失,但兼容性100%
- 材料库绑定:STEP中嵌入ASTM A108钢号,中望CAD自动调用对应折弯系数表
经验:别追求“技术完美”。某客户坚持用中望CAD,我们宁可牺牲0.3%几何精度,也要保证图层和BOM表100%正确——因为车间工人只看图层颜色区分加工工序。
4.3 坑三:低估人机协同成本
最典型的误区是认为“text-to-cad=取代设计师”。实际上,它改变的是工作分配:
- 设计师从“建模操作员”升级为“需求架构师”:需掌握GB/T标准编号、公差选择逻辑、工艺约束知识
- 初级工程师从“描图员”转型为“AI训练师”:学习如何写有效提示词(Prompt Engineering)
我们给客户做的培训中,最实用的技巧是“三句话需求法则”:
- 第一句定基准:“以底面为基准,向上延伸120mm”(避免“放在上面”这种模糊表述)
- 第二句给约束:“所有圆角R3,除倒角处”(明确例外规则)
- 第三句标重点:“关键尺寸:Φ50±0.02,表面粗糙度Ra0.8”(告诉AI哪些不能妥协)
某家电厂工程师用此法则后,需求一次通过率从41%升至89%。他说:“以前我要画3小时图,现在写3分钟需求,省下的时间用来做DFMEA分析。”
4.4 常见问题速查表
| 问题现象 | 根本原因 | 解决方案 | 实操耗时 |
|---|---|---|---|
| STEP导入NX后显示“无效实体” | OpenCASCADE导出时未修复微小缝隙 | 启用ShapeFix_Shape::Perform() | +0.3秒/模型 |
| GLB在Web端加载慢 | 未启用Draco压缩 | 导出时勾选“Draco压缩(质量80%)” | +1.2秒/模型 |
| 中望CAD中螺纹孔显示为光孔 | STEP未嵌入螺纹特征 | 在特征JSON中添加"thread_type":"ISO_272" | 配置1次永久生效 |
| 打印STL出现层间错位 | 弦高设置过大(0.1mm) | 改为0.005mm,启用“自适应网格” | +8秒/模型 |
| 多体装配时干涉误报 | STEP未定义装配约束 | 导出时附加.asm装配文件(含约束关系) | +0.5秒/装配体 |
5. 未来演进:text-to-cad正在催生新的工程协作范式
上周我去深圳参加一个注塑厂的评审会,看到惊人一幕:客户用手机拍下旧模具照片,语音说“把这个水路改成随形冷却,按新样品的温度场分布”,系统30秒生成带随形水道的STEP,直接发给电火花机床。这不再是“生成CAD”,而是“生成制造指令”。
text-to-cad的下一阶段,正在突破单点建模,走向闭环工程链:
- 上游联动:对接ERP系统,当采购单生成时,自动提取物料编码(如“Q235B-16×165”),反向生成法兰模型
- 中游协同:在STEP中嵌入PLM元数据,变更时自动触发ECN(工程变更通知)
- 下游驱动:STEP导出直接生成CNC加工程序(G代码),经Vericut仿真后发往车间
热词里“python批量对cad修改”“cad快速看”暗示了需求——工程师不想再打开CAD软件。我们正在测试“STEP即服务”(STEP-as-a-Service)模式:把STEP文件变成API,前端调用GET /step?part_id=FLANGE-DN50-PN16返回二进制流,浏览器用WebAssembly实时渲染,手机APP扫码即可查看BOM和工艺卡。
最后分享个真实体会:上个月帮一家农机厂改造播种机齿轮箱。老工程师手绘了23张草图,我用text-to-cad转成STEP,他盯着屏幕看了10分钟,突然说:“这个倒角位置不对,应该在齿根而不是齿顶。”——AI生成了模型,但判断权永远在工程师手里。text-to-cad的价值,不是让机器更像人,而是让人更像自己:把时间从重复建模中解放出来,专注在真正需要经验、直觉和责任感的地方。