ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

从语言到可编辑CAD模型:Text-to-CAD技术路线与工程实践解析

从语言到可编辑CAD模型:Text-to-CAD技术路线与工程实践解析

去年开始,“text-to-cad”这个词在工程师和设计师圈子里出现的频率明显高了。简单说,就是把一句大白话变成可编辑的CAD模型——比如你输入“一个方形底座,四角各有一个直径3.5mm的安装孔,中心挖一个直径40mm的台阶圆孔”,AI直接给你返回一个带特征树、可以继续改参数的模型文件。这个方向不是PPT概念,已经有实际能跑的产品和开源方案了。

这篇内容适合三类人:一是做机械结构和产品设计、每天在建模软件里重复“拉草图-加约束-倒角”的工程师;二是想快速验证想法、又不想花两周学建模软件的产品经理或创客;三是用3D打印做手板、却经常在切片前被模型精度折磨的爱好者。我把这半年实测下来的完整经验、踩过的坑和排查思路都整理出来,帮你快速判断这工具到底能干什么、怎么用上限最高,以及距离“替代建模师傅”还差多远。

1. 这类工具到底想解决什么问题

1.1 语言和几何之间隔着一条巨大的鸿沟

传统CAD建模的本质,是把“脑子里想的东西”翻译成“电脑里精确的几何”。这个翻译过程,人一直是唯一的转换器——你要把一个支架、一个法兰、一个外壳,描述成草图轮廓、拉伸深度、旋转轴、阵列数量,每一步都要在软件界面里点选命令、输入参数。这个过程哪儿最费时间?不是画线,而是反复调整:投影关系错了要重画,配合尺寸变了一个个改零件,装配体里一个孔位变了整个BOM都要动。

Text-to-CAD想干掉的就是“从语言到模型”这一步人工翻译。你不需要先知道应该用“凸台”还是“拉伸”,也不需要在特征树里找到上一次画的草图编号,只需要把自己的需求用日常语言说清楚。模型背后的AI负责把你这句话拆解成实体特征、约束关系和几何参数。听起来很神,但实际用起来就会明白:这件事的难点不在于“识别你说了什么”,而在于“理解你没说什么”——你说“法兰盘”,它得知道法兰是回转体;你说“六个孔均布”,它得知道夹角是60度;你说“预留公差”,它得知道这不是说要一个间隙为零的轴孔配合。

1.2 为什么早几年做不出来,现在才火

其实要追溯,2020年前后就有团队尝试用AI生成CAD模型,当时效果非常惨。我当年也试过几个早期项目,基本就是“提示词里有圆,就给个圆柱;有方块,就给个长方体”的模板匹配水平,稍微复杂一点的特征组合就崩。为什么这几年突然有了质变,核心卡点有三个。

第一是数据。CAD模型和自然语言描述之间的配对数据,在工业领域极其稀缺。大部分存量三维模型没有文本标注,企业图纸又是保密资产,谁能凑出足够的“描述-模型”对来训练模型,谁就占了先手。直到大模型在通用语料上学会了大量几何常识,再用少量CAD数据做微调,这个数据瓶颈才被绕过去。

第二是表示。让神经网络直接输出CAD厂商通用的B-rep边界表示,是一个长期没解决的难题。早年的生成模型喜欢输出网格(Mesh),看起来像个模型,一导入SolidWorks就变成一堆没法缝合的碎面,更别提编辑特征。后来大家发现了一个曲线自救的思路:先让AI生成代码——用CadQuery、OpenSCAD这类程序化建模库把模型“写”出来,再由CAD软件执行代码得到实体。这样输出的模型天然带参数、可编辑,等于绕开了最难的几何内核生成。

第三是约束。CAD里的模型不是一张静态的图,而是一棵带约束关系的特征树。改一个尺寸,后面所有关联特征都要跟着变。这意味着AI生成的不只是形状,还得是“逻辑结构”:哪个特征先建、哪个特征依赖哪些参数、圆角加在拉伸之前还是之后。程序合成路线把这个问题转化成了代码生成问题,而代码生成恰恰是大语言模型当前最擅长的领域。三条卡点同时松动,text-to-cad才从玩具变成了能用。

2. 主流技术路线拆解和选型逻辑

2.1 路线一:大模型加程序化建模脚本

先说现在最成熟、也最推荐普通人上手的一条路线:把CAD模型写成代码,再用大模型直接生成这段代码。代表库是CadQuery和OpenSCAD。为什么大家不约而同选了这条路线?因为代码天生就是可参数化的、可复现的、可版本管理的,而且不需要模型去“想象”一个实体长什么样,只需要把它翻译成一段逻辑明确的指令序列。

举个例子,用CadQuery描述一个法兰盘,大概长这样:

import cadquery as cq result = ( cq.Workplane("XY") .circle(20) # 外圆直径40mm .extrude(8) # 厚度8mm .faces(">Z") .workplane() .circle(15) # 内孔直径30mm .cutBlind(-8) # 挖穿 .faces(">Z") .workplane() .polarArray(17.5, 0, 360, 6) # 半径17.5mm,6个均布 .circle(2, mode="a") # 直径4mm螺栓孔 .cutAll() )

大模型要生成的不是这段代码本身,而是“从自然语言到这段代码”的映射。它不需要知道CadQuery内部怎么实现布尔运算,只需要理解“外径40内径30厚度8六个直径4的孔均布”这些信息应该翻译成哪些API调用。我实测下来,这种路线生成的成功率最高,因为代码生成的错误是可控的——代码跑不起来就能报错改错,比生成一个肉眼看着像、量起来全错的网格要强太多。

这条路线最大的局限也很明显:你只能生成CadQuery/OpenSCAD能表达的形状。复杂自由曲面、雕塑外形、生物形态这类模型,用代码写会痛苦到怀疑人生。但这恰恰覆盖了绝大多数机械零件场景——法兰、支架、外壳、齿轮、卡扣,本来就是参数化建模的强项。

2.2 路线二:扩散模型直接生成几何

第二条路线走的是“老本行”——用类似图片生成的方式直接产出三维几何,常见输出格式是网格或隐式符号距离函数。你把文字描述变成条件向量,喂给一个三维扩散模型,它去噪输出一个体素场或点云,再通过移动立方体等算法提取成网格。好处是形状自由度极高,能生成用参数化脚本写不出来的异形曲面,所以这条路线在设计创意阶段很有想象空间。

但我亲自评测过几个这种模型,问题十分统一:第一,生成的是三角网格,不是CAD原生实体,导入传统CAD软件后需要重新曲面化,期间精度丢失很严重;第二,没有特征树,不能改参数,你想把壁厚从2毫米改成2.5毫米,基本等于重画;第三,工业级的尺寸精确性很难保证,它生成一个齿轮可能看起来像齿轮,但模数齿数根本对不上。所以这条路线目前的定位是“灵感生成器”,帮你做早期造型探索,离工程落地还挺远。

2.3 路线三:LLM规划加几何内核重建

第三种是前两者的结合,也是我认为最可能走向工业化的方向。流程是:大模型先理解你的文字,规划出特征操作的完整顺序——先拉伸哪个草图、再切哪个孔、布尔加减怎么组合、圆角倒角放在哪一步——然后调用传统的几何内核API或特征建模API去逐个执行。相当于AI只做“排产计划”,真正画图还是交给B-rep内核这种成熟引擎。

这条路线的核心难点不在生成,而在规划。特征顺序错一步、草图的参考面选错、依赖关系没建好,整个特征树就垮了。目前市面上一些高完成度的产品已经在往这个方向走:用户输入一句话,系统不光生成模型,还生成一棵规范的模型树,每个特征名字都起得明明白白,就差把建模审批流也AI化了。它比路线一灵活,比路线二精确,是当前能力天花板的代表。

2.4 三条路线横向对比速查

对比维度路线一:程序脚本路线二:扩散生成路线三:特征树重建
输出格式可执行脚本/参数化模型网格/SDF原生B-rep/特征树
可编辑性高,所有参数可改低,近似于固定模型高,结构清晰可回溯
尺寸精度依赖代码语义,精确到数值较差,肉眼级近似高,可对齐到工程标准
擅长形状机械零件、规则特征自由曲面、生物形态复杂工业零件
落地场景3D打印、快速设计外观创意、概念验证生产级设计

看完这张表就明白为什么市面上绝大多数text-to-cad产品都押注路线一和路线三:因为CAD这个工具的本质就是精确、可编辑、可复用,谁丢掉这三点,谁就只是“三维模型生成器”,而不是“CAD生成器”。

3. 实操记录:怎么写提示词才能让AI听懂需求

3.1 新手必看:三个代代相传的失败写法

我刚开始用text-to-cad的时候,自认为表达已经很精确了,结果连续翻车三次。第一次,我写“做一个带盖子的盒子”,回家看到的是两块互相分离的平板,根本没有合页和卡扣结构,因为我只说了“带盖子”,没说“盖子如何连到盒体”。第二次,我写“一个直径50毫米的圆柱旁边有一个直径10毫米的孔”,模型确实生成了,但孔穿过了圆柱的侧壁而不是底面,因为我没有说孔的方向和位置深度。第三次最崩溃,我说“一个长方形外壳”,它给我生成一个长方体实心块,因为没有说壁厚和镂空。

这三个失败案例指向同一个核心问题:AI不像人类,不会自动补充工程常识。所谓“工程常识”,就是“箱体默认是空心的”“孔默认垂直于面”“配合件默认留间隙”这类刻在机械工程师DNA里的东西,你一个字不写,它就默认不做。所以提示词的第一条纪律是:把工程图里的每一个你以为是“废话”的信息,都明确写出来。

3.2 我一直在用的提示词模板

实测调整了两个星期之后,我总结了一套稳定的提示词结构,分成五个部分,顺序不能乱:对象类型、几何主体、特征细节、位置关系、制造约束。

生成一个[对象类型],材质建议[材料]。 主体尺寸:[长]mm × [宽]mm × [高]mm,壁厚[数字]mm。 [哪个面]上有[几个][形状][尺寸]的[孔/槽/凸台],沿[轴线/圆周]均匀分布, 孔间距[数字]mm,深度[数字]mm。 底部[是否需要底座/裙边],角部[倒圆角/倒直角],半径[数字]mm。 预留[装配间隙/螺丝位/卡扣位]。输出STEP和脚本文件。

举例来对比会更直观。失败写法:“做一个无人机云台的支架。”成功写法:“生成一个无人机云台支架,材料用铝合金。整体为L形,水平臂长60mm宽30mm厚5mm,垂直臂长50mm宽30mm厚5mm,两臂连接处外侧倒圆角R5。水平臂末端有一个直径8mm的通孔,距离端部10mm中心;垂直臂上有两个直径4mm的沉头孔,间距30mm,沉头直径7mm深度2mm。螺丝孔位预留0.1mm间隙。”后者生成出来的模型,基本不需要二次加工就能直接进行装配验证。

3.3 从单零件进阶到装配体的折腾经历

单零件能稳定输出之后,我尝试把多个零件塞进一个提示词里,比如“生成一个由外壳、上盖和两个卡扣组成的装配体,上盖通过卡扣与外壳连接,外壳尺寸……卡扣尺寸……”。实际体验非常分裂:有的AI产品能把多个零件输出成装配体文件,但件与件之间的配合关系经常是意思到位、数值乱来——比如卡扣宽度比扣槽宽度大了0.5毫米,名义上是“过盈配合”,实际上你根本按不进去。

后来我调整了策略:放弃让AI一次性生成完整装配体,改成分步建模——先生成外壳,再单独生成盖子,最后生成卡扣,每个零件单独检查尺寸后,再导入传统CAD做装配约束。这个是很有用的经验:text-to-cad目前的定位是“帮你快速生成零件”,而不是“帮你做完整的装配设计”。装配关系里那些公差带、配合等级、运动副,还是留给专业软件和你的工程判断更可靠。

4. 常见问题与排查技巧实录

4.1 尺寸感完全失控,生成一个“巨物”

有一次我让AI生成“一个内径35mm的轴承座”,它给我输出了一个外径300mm、厚度40mm的东西,我一度以为单位出了问题。排查之后发现两个原因:一是提示词里只写了内径,没写外径和厚度,AI就按经验默认填了一个偏保守的外径,而它在训练数据里见过的轴承座,大概率不是机械设计手册里的那几种常用规格。二是有些模型确实对数值敏感度不高,34和300的区别在它眼里也许没你想象中那么大。

解法也很粗暴:凡是关键尺寸,全部显式重复两遍——第一遍在“主体尺寸”里说,第二遍在“特征细节”里说一次。比如“外径60mm,内径35mm,厚度15mm,注意外径必须在主体尺寸中体现”。我实测这样的双重强调能明显压缩离谱尺寸的比例,但仍建议生成后养成检查标注的习惯。

4.2 阵列、对称、圆角这些细节总被偷偷吞掉

这类问题出现的频率最高。提示词里写了“四个角各有一个R5圆角”,生成出来的模型可能有圆角,但四个圆角半径不一样;写了“六孔均布”,生成出来只有五个孔,或六个孔间距不一致。原理也不复杂:语言模型在描述“均匀”“对称”这类空间关系时,倾向于用语义层面的话应付过去,真正落实到具体的坐标计算时,没有工程师那种“除一下就知道夹角90度”的几何直觉。

针对这类问题,我的排查清单是:第一,把“均布”改成“每两个孔之间的夹角为60度”;第二,把“四角圆角”改成“左下、右下、左上、右上四个角各加R5圆角”;第三,如果生成后仍不对,就在提示词里追加一句“生成前请先计算孔位坐标,再开始建模”。虽然有点笨,但这类显式的计算指令确实能引导大模型把几何逻辑补上。

4.3 生成后不能编辑,只能当一次性模型用

很多AI产品默认输出的是网格格式(STL/OBJ),因为这最容易生成、最方便3D打印。但你拿到的是一块“死模型”——没法改参数,没法在SolidWorks里拉伸一个特征,连改个壁厚都要重新生成。这个问题不是bug,是路线选择:对做外观评审的人来说网格够用了,对做结构设计的人来说这就是废品。

所以你在选工具的时候,第一件事不是看它生成的图漂不漂亮,而是看它输出什么格式、能不能给到带特征树的原生CAD文件。能输出STEP的优先于只输出STL的,能输出CadQuery脚本的优先于只输出网格的。这条标准能帮你过滤掉一大半“看着炫,实际落不了地”的产品。

4.4 把AI当搜索引擎用,基本都会失望

还有一个心法层面的问题:很多人把text-to-cad当成“CAD版的搜索框”,以为输入“齿轮”就能得到一对标准化齿轮副,输入“手机壳”就有壁厚2mm、适配某机型摄像头位置的完整结构。这完全误解了这类工具的能力边界。它生成的是“要什么”的模型,不是“查什么”的资料库——标准化件、外购件、有明确国标/ISO标准的零件,去专业选型网站找模型库,三分钟就能搞定,没必要难为AI。

真正适合它做的,是那些“没有现成标准、完全自定义、反复修改外形”的零件。你让AI从零生成一个某品牌的定制支架,效率远高于手动建模;但让它按GB/T标准生成一个六角头螺栓,那就是缘木求鱼。用对场景,才能把它的价值榨干净。

5. 工具生态盘点与应用边界

5.1 现在能用的方案一眼看明白

这个圈子的工具目前还在快速迭代,我在定期跟踪几个代表性方案之后,把它们分成三类。

第一类是web端在线生成平台,典型代表是Zoo的Text-to-CAD等一系列网页工具。不需要安装任何软件,打开网页输入描述,后台跑完直接给你一个可预览的模型,通常支持导出通用的CAD格式,上手成本为零。我在调研阶段主要用这类工具快速建立“模型生成能力”的直觉。

第二类是开源程序化建模加LLM的本地方案,核心是用CadQuery、OpenSCAD这类程序化建模库,外挂一个大模型API,自己写一个几十行的脚本把两者串起来。适合对数据隐私要求高、或需要批量生成参数化零件的场景。自己搭这套流程的好处是完全可控——AI只负责生成脚本,脚本跑不跑得通、尺寸对不对,你都能自己审查,不会有“黑盒出图,错了也不知道错在哪”的憋屈感。

第三类是工业软件厂商内嵌的生成式建模功能,目前大多数处于内部测试或早期预览状态。这类工具的优势最大——直接挂接专业内核,输出模型质量和特征树完整度是前两类完全不能比的。缺点是开放程度有限,普通人很难第一时间用上完整版。

5.2 实测结论:能做什么、暂时别指望什么

用了一段时间之后,我给这套工具画了一条清晰的能力边界线。

已经能稳定交付的:机械零件的概念外形生成、按给定尺寸参数输出的零件毛坯、用于3D打印的模型原型、设计初期的方案筛选和空间验证。我做过的比较典型的一个案例是:项目初期需要评估某个传感器支架在设备腔体内的安装空间,以前要打开CAD量尺寸画草图,这次直接让AI生成一个带大致孔位的支架模型,导入装配环境一摆,空间够不够一目了然,总共用了不到十分钟。

暂时别指望的:高精度配合面、经过有限元验证的结构刚度、带完整GD&T标注的工程图、大规模装配体的自动生成。这些链路不是“再加一点语言理解能力”就能突破的,需要几何推理、物理仿真、制造工艺知识的系统性整合,短期内很难从生成式模型里直接长出来。

5.3 这个方向后续还能怎么玩

顺着这条路往下看,玩家们已经在铺三条通往实用化的路。

第一条是“文本到BOM”,生成的模型自动关联物料清单——AI不仅知道这个壳里有四个孔,还知道这四个孔位配合四颗M3自攻螺钉,直接把物料表一并输出。这对于设计早期匡算成本意义巨大。

第二条是“对话式修改”,你面对生成好的模型,不用回去翻提示词,直接说“把壁厚改薄0.5毫米”“把孔距从40改到45”,系统在特征级层面精准修改,而不是重新生成一遍。这比“一句话生成”更进一步,也更接近工程师真正的日常——模型的生成其实只占整个设计流程的一小部分。

第三条是“文本到工艺”,从同一个描述里直接推理出适合的制造方案——如果是薄壁件建议考虑注塑,如果是轴类零件建议上车削中心,生成结果自动匹配工艺约束。到这一步,它就不再只是一个建模工具,而是“设计-制造”链路的智能入口。

我个人在实际操作中的体会是:现在是把text-to-cad用起来的最好时机——不是因为它的能力已经完美,而是因为它的能力刚好够你提前熟悉“跟AI协同建模”的工作习惯。每轮迭代,都是对这个复杂方向的逼近。你不用怀疑它是否“实用”,你要做的只是把它安放到设计流程里合适的位置上:让它做你的概念助手、初始模型生成器、方案发散伙伴,最后一步的工程判断和细节打磨,依然握在你手里。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进