如果你是一个天天和CAD打交道的人,应该能体会那种感觉:脑子里已经把一个零件的形状、孔位、壁厚都想好了,但落到软件里还是要花费一二十分钟,拉伸、切除、倒角、约束,一步步把思路翻译成软件操作。最耗时的往往不是设计方案本身,而是把方案变成三维模型的过程。text-to-cad想解决的就是这个问题——用一句自然语言描述,直接生成可编辑的CAD模型。它不是什么实验室里的概念,现在已经有了能跑通全流程的在线工具和开源项目,设计师、结构工程师、创客、机械专业学生都可以拿来用。
我接触text-to-cad快一年了,从最早在浏览器里试玩演示版本,到后来把它嵌进自己的参数化设计流程,中间踩了不少坑,也总结了一些可复用的经验。这篇内容我打算从原理讲起,把主流的工具选型、一次完整的实操流程、提示词写作技巧、常见的失败场景和几个进阶玩法一次说清楚,希望能帮你快速判断这东西适不适合你的工作流。
1. text-to-cad到底是怎么把一句话变成三维模型的
1.1 它并不像Midjourney那样“画”图
很多人第一次听说text-to-cad,容易拿它类比文生图工具。但它的工作机制跟Midjourney完全不同。文生图是生成一堆像素,输出的是“看起来像那么回事”的图片;而text-to-cad要想有实用价值,必须输出尺寸准确、特征可编辑、拓扑正确的实体模型。这一点直接决定了技术路线的走向。
我做个类比:文生图像是你请一个画家照着文字描述画一张画,画得再像也只是一张画,改不了颜色、换不了布局。text-to-cad则像是你请一个会用程序建模的助理,他听完你的需求后写出一段建模脚本,脚本运行后才生成实体模型。这段脚本才是核心资产,模型只是脚本执行后的结果。
1.2 主流实现路径:代码即模型
目前能落地的text-to-cad工具,绝大多数都走的是“大模型生成参数化建模脚本”这条路。所谓参数化建模脚本,常见的有三类:
- CadQuery:基于Python的库,核心是OpenCASCADE几何内核,用代码描述几何特征,内核负责算成实体。
- FreeCAD的Python API:本质上是脚本驱动FreeCAD完成建模。
- OpenSCAD:声明式描述几何体的代码化建模语言。
大模型在这里扮演的角色是“程序员”。它接收你输入的描述词,输出一段语法正确的建模代码,工具拿到代码后立即执行,实例化为三维模型并渲染预览。整个过程跟GitHub Copilot帮你写代码非常像,区别只在于代码执行后的产物不是软件功能,而是实实在在的三维几何体。
1.3 为什么选脚本而不是直接生成网格
你可能会问:现在明明有很多AI能直接生成3D网格文件,输入一句话输出OBJ或者GLB,为什么不直接用?我给你分析一下最核心的差异:能不能改。
直接生成的三角网格,就像一件用黏土捏出来的雕塑,样子是对的,但它没有参数、没有历史特征。你拿到一个STL网格后想调整孔的直径,只能整个重新生成,无法在传统CAD流程里精修。而参数化脚本生成的东西,零件上的每个圆角半径、每个孔直径、每段拉伸高度,全部明确写在代码里。想改?改一行代码再重新执行一次就行。
另外还有精度问题。网格是离散逼近的,而工程分析、加工制造需要的是NURBS曲面和精确实体。从CadQuery这类脚本生成的模型,走的和传统CAD软件完全相同的几何内核计算路径,算出来的是能用工业软件继续编辑的实体,不是一张纸糊的壳。
我现在的理解是,text-to-cad的本质就是“自然语言前端 + 参数化几何内核”。前端负责把人的意图翻译成机器能理解的建模指令,后端的内核负责保证几何精度。两者结合,才让这个东西从演示玩具变成有生产力的工具。
2. 现存工具盘点和选型参考
2.1 从Zapr到CADmium,浏览器里跑通全流程
目前市面上能直接体验的text-to-cad方案,我把它分成三类。
第一类是网页在线demo,最典型的是Zapr。它的交互很简单:输入文字描述,点击生成,它调用大模型产出CadQuery代码,然后在页面里执行并展示三维预览。适合第一次玩,跑通流程,感受“一句话生成可编辑模型”的体验。缺点也很明显:数据需要发到服务端,涉及保密设计内容时要谨慎。
第二类是本地开源工具,代表性项目是CADmium。这个项目的思路是把整条链路搬到本地浏览器运行,用WebAssembly技术集成OpenCASCADE内核,模型的推理和渲染都在本地完成。好处是不用把图纸数据发给第三方,适合对数据安全敏感的场景;代价是当前性能上限取决于自己电脑的硬件条件,模型描述一复杂,生成耗时就会肉眼可见地增加。
第三类是配合本地CAD软件使用的工作流型工具。比如有人直接把LLM接入FreeCAD,让AI在FreeCAD的Python控制台里生成宏来建模;也有人通过OpenSCAD,让LLM输出造型脚本,配合参数化模板做快速改型。这类方案通常没有现成的图形界面,需要自己搭调用链路,但自由度最高。
2.2 工业软件巨头在做什么
传统的CAD厂商也在跟进。Autodesk在Fusion 360里测试过AI辅助建模,用户可以直接输入指令让软件完成拉伸、旋转等基础操作。SolidWorks也在尝试结合大模型的生成式设计工作流。但它们走的是另一条路:用自然语言操控软件里已有的建模功能,而不是生成独立脚本。
这个路线的优势是稳定,因为底层是成熟的参数化内核,每个命令都有明确的语义和参数定义;缺点是功能边界完全受限于软件自身的能力,你说得再复杂,它最终也是翻译成几个软件命令。至少现阶段,它还做不到“自由创建软件里没有预设的功能”。
不过我认为工业软件厂商做这件事有一个天然优势:他们手里有海量真实设计数据。有经验的工程师在软件里怎么建模、怎么加特征、怎么处理倒角,这些行为日志数据是微调模型的最佳素材。技术路线一旦被验证,后面就是拼数据闭环和数据规模。
2.3 我自己的选型建议
如果你是第一次接触text-to-cad,别一上来就搭重型环境。先用网页在线demo跑一遍,感受生成体验和输出质量。等确认有真实需求了,再考虑CADmium这类本地部署方案。
如果你是FreeCAD的存量用户,直接接一个本地大模型当脚本生成器,把生成的代码贴到Python控制台执行,是最平滑的上手路径。我把当前几类方案的对比整理成了一张表:
| 方案 | 运行方式 | 中间产物 | 适合人群 | 主要限制 |
|---|---|---|---|---|
| Zapr | 网页在线 | CadQuery脚本 | 想快速验证效果的人 | 数据要发服务端,复杂模型能力有限 |
| CADmium | 本地浏览器 | CadQuery脚本 | 对数据安全有要求的设计师 | 生成上限取决于本地硬件 |
| LLM + FreeCAD | 本地脚本 | FreeCAD Python宏 | FreeCAD已有用户 | 需要自己搭调用链路 |
| LLM + OpenSCAD | 本地脚本 | OpenSCAD脚本 | 熟悉代码建模的极客 | 复杂曲面能力有限 |
| 工业软件内置AI | 软件内运行 | 软件原生特征 | 企业级设计用户 | 功能受限于软件自身命令集 |
现阶段我自己的结论是:不建议把text-to-cad当成主力建模工具,但完全可以把它当作草图和方案的“第一版草稿生成器”。后面讲实操时你就会发现,它最大的价值是把“从无到有”这一步压缩到几分钟。
3. 完整实操:用自然语言从零生成一个可编辑的机械零件
下面我走一遍完整流程,以最常见的机械零件“带法兰的安装座”为例,整个过程大约需要十分钟,你可以直接照着操作。
3.1 实操环境准备
我用CADmium本地版做演示,因为整个链路都是开源的,你可以完全复现,不涉及任何需要付费的工具。需要准备的是:
- 一台正常联网的电脑,Chrome或Edge浏览器
- 本地运行一个大模型,或者通过API调用云端大模型
- 下载CADmium源码,按README说明启动本地服务
如果你不想搭本地环境,用Zapr在线版也可以,核心流程完全一样。区别只在于模型运行的位置。
3.2 描述词怎么写
这一步是整个流程里最影响生成质量的环节。我建议采用固定的描述格式:先说整体形状,再依次列出特征,每个特征写清楚位置、尺寸、类型。我实操用的描述词长这样:
“创建一个安装座,主体是长方体,长120毫米,宽60毫米,高20毫米。在长方体顶面的四个角分别创建直径8毫米的通孔,孔心距离相邻两边各10毫米。在长度方向的一侧,底部创建法兰凸台,凸台长40毫米,宽60毫米,厚度10毫米,靠底部对齐。法兰上再打两个直径10毫米的安装孔,孔距40毫米,对称分布。”
写描述词有两条关键经验:尽量使用绝对尺寸,不要用“大一点”“靠右一些”这种相对描述;对位置敏感的特征,务必提供明确的位置锚点,比如“距离左边10毫米”“顶面对齐”。
3.3 生成、检查与导出
输入描述后,模型会在几十秒到一两分钟内返回一段CadQuery代码。先别急着读代码,直接看右侧的三维预览图。我做的第一件事永远是核对尺寸,在预览里逐个点击面和边,检查标注是否与描述一致。整体外形基本不会错,但孔位偶尔会偏移,这是目前这类工具的典型问题。
尺寸确认无误后,再检查一遍代码里的核心参数。我遇到过代码里直径写对但孔心距坐标算错方向的情况,也遇到过预览正常但代码里圆角半径和描述不一致的情况。这里强调一个习惯:不只看预览,还要看代码。因为预览是代码计算出的结果,如果后续要修改参数,改的是代码本身,代码里的数值必须正确。
检查通过后,直接导出STEP文件。除非你是要做3D打印的快速原型,否则别导出STL,原因下文细说。
3.4 导入FreeCAD后的处理
以免费的FreeCAD为例,把导出的STEP文件直接拖进去。我实测下来,CadQuery生成的STEP导入后是标准的B-rep实体模型,可以正常选中面、编辑特征、追加建模操作。这意味着“一句话生成的零件”和“手工画的零件”在后续流程里没有任何区别,它不是一个一次性产物。
如果你导出的是STL,进入FreeCAD后本质上是网格,只能做网格层面的修复和转实体,丢失了参数化编辑的能力。所以我的个人习惯很明确:只要后面还有修改设计的可能,一律导出STEP。整套流程跑完,你已经从一句自然语言拿到了一个可继续编辑的CAD源文件,这就是text-to-cad现阶段最大的实践价值。
4. 写提示词的五条实操经验
4.1 先描述主体,再描述特征
大模型非常吃描述顺序。你先把主体的形状和尺寸讲清楚,再做特征“加法”,生成成功率会显著提高。我一开始习惯想到什么说什么,结果经常是主体对了但漏了某个孔,或者孔跑到了错误的面上。后来固定用“主体→特征→位置→尺寸”的顺序,成功率明显上升,尤其是当特征数量超过四五个的时候,作用更明显。
4.2 尺寸数字要精确到坐标级别
不要只写“中间位置打一个孔”,要写“在顶面中心,坐标(60, 30)处打一个直径10毫米的通孔”。原因是:大模型不是靠空间想象力在画图,它是在推理文本和坐标之间的映射关系。你给的坐标越明确,它的推理路径越短,出错的概率越低。这一点跟人跟人沟通不一样,跟机器模型沟通,模糊就是原罪。
4.3 避免模糊的空间形容词
“偏左一点”“稍微向下”“差不多齐平”这类词,在text-to-cad里基本无效。模型猜出来的数值你不会知道是猜的,因为它不会在结果里标注“此处为猜测值”。预览里没有参照物,偏移往往看不出来,直到你把它放进装配体里才发现位置不对。用绝对数值表达所有空间关系,是这个玩法里最核心的原则,没有之一。
4.4 别指望一次生成,要结构化分解
我见过最多的失败案例,是那种一口气描述十几个特征的请求。哪怕是有经验的CadQuery程序员,用代码建模十几个特征也是分步骤完成的。大模型在写到第七八个特征时,容易出现语法错误或者逻辑谬误。我的做法是:把复杂零件拆成三到四个独立描述,分别生成,再到FreeCAD里装配或做布尔合并。整个流程耗时不一定更长,但成功率会高出一个量级。
4.5 用参数化思维说话
这是最进阶的一条经验。参数化思维的意思是,在描述里给尺寸命名,明确表达特征间的依赖关系。比如“创建主体,长设为L,宽设为W。在顶面打孔,孔心距左边距离设为0.1倍L,距前边距离设为0.2倍W”。这样做的好处是生成的代码里直接带着参数关系,后续改一个L,所有依赖它的位置全部联动。我实测这样描述,生成质量反而更稳定,因为模型需要处理的是比例关系而不是精确数值,猜错具体数字的风险大大降低。
5. 精度边界与失败案例:哪些场景我劝你别用
5.1 三类高频翻车场景
text-to-cad现阶段远不是万能的,它有非常清晰的精度边界。我总结了最容易翻车的三类场景,遇到请谨慎。
第一类是复杂曲面造型。凡是流线型外壳、汽车外观、异形过渡面,它基本都搞不定。CadQuery这类参数化代码擅长的是规则几何体的布尔运算,曲面本来就是它的弱项。你可以让它先做个方块再挖孔,但别指望它从零设计一个鼠标外壳。
第二类是装配体生成。描述一套完整机构,比如“一个含齿轮、轴和轴承的减速箱”,它会生成一堆独立零件,但零件间的配合关系、间隙、啮合逻辑完全顾不上。CAD装配体需要的是约束和父子层级关系,LLM输出的代码是扁平的几何列表,根本构建不了真正的装配结构。
第三类是倒角和圆角的处理。这类问题最隐蔽,也最容易导致实际加工翻车。模型生成的代码里经常出现圆角半径大于壁厚的情况,或者倒角延伸到了错误的棱边上。视觉上看着没大问题,但加工出来直接是废品。我的习惯是,生成完成后单独检查每个圆角特征,不要批量信任。
5.2 一个典型的失败排查记录
我在一次实操中想生成一个带加强筋的加强板,描述词是“在板的一侧添加四条等距的加强筋,筋高10毫米,筋厚5毫米”。生成结果预览看起来完全正常,四条筋整齐排列。
我把STEP文件导入FreeCAD,准备做剖面检查时发现,第四条加强筋和板壁之间有一道几乎看不到的缝隙。预览里因为渲染精度问题完全看不出来,但做布尔运算或者有限元分析时会直接报错。查代码发现,模型把第四条筋生成了独立拉伸体,起始位置是9.999毫米而不是10毫米,和主体之间差了不到一根头发丝的间隙,导致没有真正粘合。
这个案例给我的教训很深刻:预览图的“看起来正常”不值得信任,必须做布尔检查或剖面检查。CAD软件对几何拓扑是零容忍的,哪怕0.001毫米的间隙都是失败。生成只是第一步,验证永远是必修课。
5.3 哪些场景已经能直接用于生产
说完坑,也得说说已经能用的地方。我目前在实际工作里会把text-to-cad用在以下四类场景:
- 标准件快速建模:各种规格的垫片、法兰、安装板,外形规则,描述一次改一次就能批量生成。
- 概念草案:设计评审前,把一句话的设计意图快速变成三维草图,拿给团队看比画草图快得多。
- 非标件改型:已有的参数化模型,捏住几个关键尺寸,让AI修改参数生成新规格。
- 教学演示:让学生用自然语言描述零件,再对照生成的代码学习特征建模的逻辑。
判断一个需求适不适合用text-to-cad,我有一套很简单的标准:零件是否为规则几何体、特征数量是否少于十个、是否需要频繁参数调整。三条同时满足,放心用;少一条,就谨慎评估。
6. 进阶玩法:把text-to-cad变成参数化设计工作流的一环
6.1 自动批量生成系列零件
text-to-cad发挥最大威力的场景,是和程序化生成结合在一起的时候。假设你需要一批规格连续变化的系列零件,比如不同孔径的法兰盘、不同厚度的垫片,就可以写一段Python脚本,循环修改描述词里的关键尺寸,自动调用text-to-cad生成每一个规格的STEP文件。整个过程不需要手动打开CAD软件画图,一晚上就能生成一整族零件库。
实际操作时有一个关键点:把尺寸写成占位符让脚本替换,而不要每次都整句重新生成。原因是如果每次的措辞都有微小的变化,生成的模型之间会出现不必要的差异,不利于整理成标准零件族。固定模板、只换参数,才能让产出保持一致性。
6.2 与生成式拓扑优化结合
这是一个相对前沿的方向。可以先用传统的拓扑优化工具算出一个构型,然后提取关键的传力路径,再用自然语言描述成工程约束,交给text-to-cad生成一个参数化简化版本。
举一个简化的例子:拓扑优化算出了应力分布,你识别出关键传力路径,描述成“在A点和B点之间建立厚度8毫米的斜撑,其余区域减薄到2毫米”,text-to-cad就能把这句话转化成可继续编辑的参数化模型。它本质上是在两个AI工具之间建立数据链路,实操起来只要打通中间的数据转换格式,就能把“拓扑优化+参数化建模”串成一条自动化流水线。
6.3 作为教育工具和头脑风暴工具
最后说一个容易被忽视的价值:教育。我拿text-to-cad给一个完全没接触过CAD的朋友演示,让他描述自己脑海里的零件,再一起检查生成的代码。他很快就理解了拉伸、切除、开孔这些概念是怎么对应到几何特征上的。
这种“自然语言—代码—几何体”的三段式学习方式,比从菜单里找命令入门要直观得多。你描述,它生成代码,你看到三维结果,再回头修改描述里的数字观察变化——这个试错循环本身就是最好的CAD入门课。对于机械设计培训或者创客教育来说,这是非常值得投入的新方向。
我自己的体会是,text-to-cad目前最合适的定位是“辅助设计入口”,而不是“CAD软件替代品”。它把传统建模里最耗时的那一步——从想法到参数化草稿——大幅压缩,但后面的工程分析、制造准备和装配验证,仍然需要成熟CAD工具来完成。学会跟它配合,把自己从重复的建模劳动里解放出来,把更多的时间留给真正的设计决策,是我们现阶段能获得的最大收益。如果你打算入坑,建议从今天说的在线demo开始,花半小时生成一个简单零件,先感受一下“说句话就有模型”的体验。