☰
从一句描述到三维实体:Text-to-CAD技术解析与实操
2026/10/27 5:55:06 网站建设 项目流程

键入一行文字“一个带四个通孔的L型支架,板厚5毫米”,回车,三秒钟后屏幕上出现一个三维实体,能旋转、能缩放、能导出STEP文件,用Fusion 360打开还能继续打孔倒角——这就是text-to-cad正在做的事情。整条技术路线不靠你拖拽草图、约束标注、拉伸切除,全靠一句自然语言描述,系统自己把几何推理、特征布局、布尔运算都处理完。

我第一次看到这个效果时确实愣了一下,但冷静下来之后发现,text-to-cad的价值并不在于“替代CAD软件”,而在于把“把设计意图变成几何模型”这个最琐碎、最耗时的环节压缩到一个句子的级别。对机械工程师、产品设计师、创客和搞AI应用的人来说,这玩意儿能帮你把概念验证、方案对比、变体生成这几类脏活累活大幅提速。

这篇文章我不打算只给你念官方介绍,而是结合我实际操作过的经验,拆一下这个方向背后的技术逻辑、主流的实现路线、一个完整的实操案例,以及生成结果如何接入正常的CAD/制造流程。无论你是想直接用现成工具,还是打算自己搭一套文本生成CAD的管线,下面这些内容应该都能省你一些摸索时间。

1. text-to-cad到底是什么,它解决了谁的问题

1.1 工程语义下的“生成”,比图片生成难在哪

很多人第一次听到text-to-cad,第一反应是“这不就是文生图的3D版吗”。这种理解方向对,但难度完全不是一个量级。

文生图模型画一只猫,哪怕爪子多了一根、耳朵角度偏了点,结果依然是一张“猫”,观感上说得过去就行了。但text-to-cad生成的是一个可测量、可装配、可加工的工程模型,孔心距差0.5毫米,装配的时候螺丝就是穿不进去;板厚写的是5毫米,实际模型变成4.7毫米,强度校核就会得出错误结论。这不是“像不像”的问题,是“准不准”的问题。

第二个难点在于CAD模型的数据结构。工程上用的STEP、原生零件文件,本质上是边界表示(B-rep)或者参数化特征树,里面存的是精确曲面、边、顶点以及它们之间的拓扑关系。而绝大多数文本生成3D模型输出的只是三角网格(mesh),网格做渲染、做3D打印预览没问题,但要拿去做装配约束、做布尔运算、做CNC刀路,就差得远了。

所以text-to-cad这个方向真正要解决的,不是“生成一个看起来差不多的形状”,而是“生成一个符合工程语义、可编辑、可制造的三维实体”。这也是为什么它跟Midjourney、Stable Diffusion那一类工具的底层实现思路完全不同。

1.2 三类典型用户画像

从我接触到的实际用户来看,text-to-cad最适合三类人:

第一类是机械工程师和结构设计师。他们在做前期方案的时候经常要出三五版对比结构,传统流程是打开SolidWorks、建草图、加约束、拉伸、倒角,一版下来快则二十分钟,慢则半天。用text-to-cad生成概念模型,虽然未必能直接用,但当“几何草稿”非常高效,尤其是支架、底座、法兰盘这类规则零件。

第二类是非专业但有建模需求的人。比如创客要做一个外壳、硬件爱好者想要一个传感器固定座,这些人并不熟悉参数化建模软件的操作逻辑,但脑子里很清楚自己要什么东西。text-to-cad把建模门槛从“学会一整套软件”降到了“把话说清楚”。

第三类是AI应用开发者。不少人拿text-to-cad的API或者开源方案做自动化设计工具,比如根据BOM清单自动生成零件初稿、根据历史订单批量生成变体。这类场景拼的不是单次生成质量,而是流程的可重复性和可脚本化能力。

1.3 一条让设计师不那么焦虑的技术路线

很多设计师听到“AI会取代CAD工程师”这种话会本能地反感,我觉得大可不必。text-to-cad现阶段更像一个“超级实习生”,你告诉它长什么样、孔放哪、多大的圆角,它帮你跑腿建模,但最终方案拍板、工艺合理性判断、工程图出图,还是要人来完成。

实操中还有一个更务实的用法:让它生成程序化建模代码,而不是直接生成死模型。这样出来的结果天然带参数,改一个数字就能得到一个新的变体,比如改支架长度、改孔距、改板厚。这种“文本到代码再到模型”的链路,比“文本到模型”的单一输出灵活得多,这也是我后面会重点演示的方案。

2. 主流通用手段和上手路径

2.1 开箱即用的在线工具:Zoo Text-to-CAD

目前体验最顺、知名度最高的在线text-to-cad工具,是Zoo(原KittyCAD)推出的Text-to-CAD。它直接在网页上运行,不需要装任何本地环境,注册账号后输入描述,系统会生成多个候选模型供你选。预览时可以旋转、缩放查看,选中满意的版本后可以导出STEP或STL,拿回到常规CAD软件里继续处理。

我实测下来的感受是,它对“机械零件”类描述的生成质量明显好于有机形体。像“带四孔L型支架”“带中心孔的圆形法兰”“传感器外壳底座”这类提示词,生成结果通常结构完整、特征清晰、尺寸把握也比较靠谱。但如果你让它生成“一只蹲着的猫”或者“抽象雕塑”,结果往往惨不忍睹,因为训练数据里大量是工程零件,不是艺术造型。

使用步骤非常简单,但有几个小细节我建议注意:

  • 第一次用建议登录后先跑几个官方示例,感受一下它对尺寸、单位的理解方式。
  • 提示词里尽量用工程术语(通孔、沉头孔、倒角、阵列),少用感性形容词。
  • 它会一次生成多个候选,不要只看第一个,多对比一下,不同候选之间的几何质量差别有时很大。
  • 导出后立刻用专业CAD软件打开检查一遍,不要直接拿去加工。

Zoo还提供API,可以在自己的脚本里调用。如果你打算做批量生成或者集成到内部工具链,API路线是值得试的,省去了自己维护推理环境的成本。

2.2 自己动手:LLM + CadQuery复现一条基础管线

如果你想完全掌控生成过程,或者不想依赖商业服务,用LLM驱动CadQuery是最容易复现的一条路线。CadQuery是一个基于Python的参数化建模库,写起来有点像“用代码画CAD”,支持导出STEP、STL等格式。思路很简单:让LLM输出CadQuery代码,你在本地执行,如果报错就把错误信息喂回去,让它自己修,直到生成出模型。

我搭这套管线的时候,发现一个特别关键的技巧:给LLM的结构化提示词一定要严格,不然它会在代码里加各种多余内容,导致执行失败。我的做法是把系统提示词固定成下面这个套路:

  • 明确声明“只输出一个python代码块,不要任何解释”。
  • 强制使用CadQuery,限制只能用某个工作平面。
  • 要求所有尺寸带单位(默认毫米)。
  • 要求最后必须调用cq.exporters.export导出STEP文件。

核心实现代码长这样:

import cadquery as cq t = 5 # 板厚 W = 100 # 水平板长 D = 60 # 侧向深度 H = 80 # 垂直板高 profile = ( cq.Workplane("XY") .moveTo(0, 0) .lineTo(W, 0) .lineTo(W, t) .lineTo(t, t) .lineTo(t, H) .lineTo(0, H) .close() ) part = profile.extrude(D) part = ( part.faces(">Z") .workplane(centerOption="CenterOfBoundBox") .pushPoints([(-35, -15), (-35, 15), (35, -15), (35, 15)]) .hole(6.0) ) cq.exporters.export(part, "L_bracket.step")

这段代码生成的L型支架,水平板长度100mm、深度60mm,垂直板高度80mm,板厚5mm,水平板顶面上打了4个直径6mm的通孔。剖面轮廓从(0,0)开始画,沿X轴走100,再向上5,回头走到厚度边界,再沿Y轴走80,最后闭合,拉伸60mm,就形成了L型主体。孔的坐标是相对于顶面中心计算的:水平板宽度100,孔心距边缘15,所以X方向偏移是35;深度60,孔心距边缘15,所以Y方向偏移是15。

有了这段基础代码,你就可以让LLM在这个框架上改尺寸、加圆角、加沉头孔,甚至生成完全不同的零件。每次生成不需要从零开始,而是基于这段验证过的模板做增量修改,成功率会高很多。

2.3 常见实现路线对比

我把市面上几种主流的text-to-cad实现路线放在一起做了一个对比,方便你根据自己的场景选型:

路线输入输出可编辑性工程精度上手难度
Zoo Text-to-CAD(在线)自然语言提示词STEP / STL中等,导入后可编辑中上,适合概念设计低
LLM + CadQuery自然语言提示词STEP / STL / Python脚本高,脚本可参数化取决于代码生成质量中
LLM + OpenSCAD自然语言提示词.scad / STL高,变量驱动一般,适合几何造型中
扩散模型直接生成网格文本 / 图片OBJ / STL(网格)低,很难做工程修改低,适合渲染预览低

从我的实际使用经验来说,如果你要的是“快速看效果”,选在线工具;如果你要的是“把生成结果纳入自动化流水线”,选LLM+CadQuery;如果你做的是外观造型而非精密结构,扩散模型路线也够用,但别对它抱太高期望。

3. 一个完整实操案例:从文字到L型支架

3.1 关键步骤拆解

我拿最常见的机械件“L型支架”作为完整案例,演示一遍从文本描述到最终STEP文件的完整流程。这个案例覆盖了大多数人第一次上手时的主要环节。

第一步:写提示词。我用的是上面那套模板,但把自然语言也写成结构化描述:“一个L型支架,水平板100x60x5mm,垂直板60x80x5mm,水平板上有4个直径6mm通孔,孔心距边缘15mm,呈矩形对称分布。”

第二步:生成候选。我用Zoo Text-to-CAD生成了一次,得到4个候选模型;同时用本地LLM+CadQuery管线生成了一次,得到一段可执行的Python脚本。两种方式我都试过,结论是:在线工具胜在“所见即所得”,本地管线胜在“可批量、可重用”。

第三步:导出并检查。在线工具导出STEP后,我用FreeCAD打开,用测量工具验证了关键尺寸:水平板长度100.00mm,板厚5.00mm,孔心距70mm和30mm,均符合要求。本地管线直接导出的STEP文件,尺寸一致性更好,因为代码里写死了数值,只要代码没错,几何就不会错。

第四步:工程后处理。不管哪种方式生成,我都会在正式CAD软件里做一次布尔检查、干涉检查和最小壁厚检查。生成模型毕竟是“推理产物”,不是100%经过工程规则校验,这一步不能省。

3.2 提示词的撰写经验

提示词是整个text-to-cad流程中最重要、也最容易忽略的部分。我踩过不少坑,总结了几条硬经验。

风格上,避免“设计感”描述,尽量用“制造感”描述。写成“现代感强的支架”“简洁的底座”等于什么都没说;写成“带加强筋”“带沉头孔”“四角有圆角R2”这种话,模型才知道该干什么。工程术语越具体,生成结果越可控。

结构上,遵循“主体形状→尺寸→特征→位置关系”的顺序。先说清楚是什么形状,再给尺寸,再描述孔、槽、圆角等特征,最后说明特征之间的相对位置。不要想到哪说到哪,大模型对语序很敏感,结构混乱的提示词生成出的模型往往也是混乱的。

尺寸上,一定要显式写单位。很多工具默认mm,但你不写单位,模型可能自己“猜”,猜错了就是你后期返工。我的习惯是每个尺寸后面都带mm,比如“板厚5mm”“直径6mm孔”“间隔15mm”。

迭代上,一次只加一个复杂特征。如果一开始就写“支架带4个孔、两个沉头孔、一个U型槽、三道加强筋、底部圆角R3”,模型生成出来的大概率是一坨不可用的几何。正确的做法是先给主体轮廓,生成一版;再追加孔,生成一版;再追加槽或圆角,逐步叠加。

3.3 生成结果的工程检查和后处理

拿到生成模型之后,不要直接送加工。我通常按下面的顺序做一遍体检:

先查单位。有时导出模型用的单位是英寸,但你以为它是毫米,这一步错了整个计算全崩。检查办法很简单,用测量工具量一个已知长度的边,看数值对不对。

再查特征完整性。看孔是不是真的“通孔”,还是只是凹坑;圆角是不是均匀的,有没有出现扭曲;阵列数量对不对。LLM生成的代码偶尔会把hole写成了盲孔,这类问题在视觉上不明显,但是加工时就是灾难。

三查拓扑有效性。把STEP文件导入SolidWorks或者FreeCAD,尝试做一个简单的布尔运算或者倒角操作,如果软件报错说“几何无效”或者“自相交”,说明模型内部拓扑有问题。遇到这种情况,我的经验是不要尝试在原模型上修复,直接修改提示词重新生成,成功率更高。

最后根据用途决定交付格式。3D打印用STL够了,但CNC加工、装配仿真、有限元分析要STEP或者原生格式。如果你的下游流程需要参数化特征,建议拿到生成结果后做一次“特征识别”,把它转换成可编辑的拉伸、切除特征,而不是留着一堆破面。

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

4.1 几何生成不达标的七种典型表现

text-to-cad不是每次都能一次生成成功,我把实际操作中遇到的典型问题整理成了一张速查表,方便你对照排查:

症状可能原因处理方式
模型完全不是想要的东西提示词语义太模糊换成具体形状+具体尺寸的描述
孔/槽等特征丢失特征太多,模型注意力分散拆成多次迭代,一次只追加一个特征
尺寸严重偏离没写单位,或单位理解错每个尺寸显式带mm,并复核单位设置
STEP导入CAD报错几何自相交或拓扑无效不修复,直接改提示词重新生成
阵列数量不对数量描述不清楚写成“2x2阵列”或“4个均匀分布”
圆角/倒角变形模型对局部特征处理能力弱缩小圆角半径,或改用CAD后处理
生成结果每次一样模型随机性不足换同义表述,或调整API温度参数

这张表看起来简单,但每一条背后都是真金白银的返工教训。尤其是“特征丢失”这个问题,我一开始总以为是模型能力不行,后来才发现是我自己一个提示词里塞了太多特征,一次只追加一个之后,成功率直接上来了一大截。

4.2 迭代提示词的排查路径

如果你生成了三次都不满意,不要盲目改提示词。我的习惯是先做“变量分离”:先把孔、圆角、槽这类次要特征全部去掉,只保留主体结构,如果主体都不对,那就是形状描述有问题;如果主体对了,再逐个加回特征,看哪个环节开始崩。

这个思路和调试代码很像。你不能一上来就面对50个报错信息,先把变量全部屏蔽,跑通最小用例,再逐步放开。text-to-cad的迭代也是一样,最小用例就是“没孔的L型支架”,跑通了再加孔,加完孔再加圆角。过程虽然慢,但每一步都可控,不会陷入无休止的试错循环。

另外,我发现换一种表达方式也可能解决“生成结果不理想”的问题。比如“四个对称安装孔”可能不如“孔中心在矩形四角,距边缘15mm”来得精确。模型对几何关系的理解,很大程度上取决于你的描述是“感觉”还是“坐标”。

4.3 与现有CAD工作流的衔接

最后聊一下生成结果如何融进现有工作流,这部分是我认为最实际、也是很多人第一时间不会去想的。

最基础的用法是把text-to-cad当“建模加速器”。拿到生成模型后,导入SolidWorks/Fusion 360,然后用草图重新构建一遍,关键尺寸直接复制“答案”,相当于一边看参考图一边建模,效率比自己从零想快很多。生成模型的价值不是“最终交付物”,而是“参考基准”。

进阶一点的用法是让生成结果直接进入参数化系统。如果你用的是LLM+CadQuery路线,模型本身就是代码,改一个变量重新执行,就能得到变体。我做批量设计时经常用这个能力:客户改了安装孔距,我不需要重新建模,改一行hole_spacing = 45重新导出就行。

再进一步,text-to-cad的API可以和现有PLM/PDM系统打通,实现“描述即文档”。比如销售人员确认需求后,系统根据选项自动生成零件初稿,工程师只做审核和优化,整个报价周期能压缩好几倍。我自己在尝试这个方向时最深的感觉是:这个技术真正的空间不在“单个模型的生成质量”,而在“把设计意图变成几何数据的成本被大幅降低”之后,整个工作流的重构机会。

踩过几次坑之后,我个人对text-to-cad的定位越来越清晰:它就是设计流程里的“第一根草图线”,把脑子里那句“大概这么个东西”变成屏幕上一个能看、能转、能量、能改的三维实体。指望它一键出生产图纸,现阶段不现实;但把它放到“快速验证设计意图”这个位置上,它的价值已经被我验证过很多次了。最后再分享一个小技巧:从在线工具导出的STEP文件,用专业CAD软件打开后记得跑一次“特征识别”,把死几何转成可编辑特征树,很多时候比重新建模省一半时间。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询