☰
text-to-cad 开源实战:从文本提示词到 STEP 工程模型的完整管线
2026/10/26 15:16:20 网站建设 项目流程

1. 我给它下过的第一句指令:text-to-cad 到底能做什么

先讲一个场景。上周五下午,我在准备一场内部设计评审,需要快速给出几个连接支架的形态备选。以前我至少要花一晚上在 Fusion 360 里画草图、拉伸、打孔,这次我打开一个开源项目,在命令行里敲了一行字:

please create a simple metal bracket with two mounting holes

几分钟后,桌面上躺着一个.step文件,拖进 Fusion 360 能直接打开,能旋转、能测量、能拿去跑干涉检查。

这个工具就是最近在机械设计和创客圈子里讨论很多的 text-to-cad 项目。它不是云端收费服务,也不是只能看看效果图的 Demo,而是一个本地可跑、能输出 STEP 格式 CAD 文件的完整开源管线。所谓 STEP 文件,就是 CAD 领域通用的中性交换格式,SolidWorks、UG、CATIA、Fusion 360、FreeCAD 都认这个格式。也就是说,它输出的东西不是渲染图,不是点云,而是真正可以进工程软件做后续操作的实体模型。

可能有人会问:这不就是 AI 生成 3D 模型吗?过去一年我们见过不少 text-to-3D 的工具,比如 DreamFusion、Magic3D,它们生成的也是三维模型,但那些模型大多以网格(mesh)形式输出,适合游戏美术、影视制作或者效果图预览。进入到机械设计这一步,大家要的是带几何拓扑、能进 CAM 加工、能做装配约束的实体模型。text-to-cad 的价值恰恰在于:它把生成结果直接对齐到 CAD 工程师的工作流里,输出 B-rep 实体而不是三角面片。

我自己的体会是,这个项目最打动人的地方不是“生成多逼真”,而是“生成多可落地”。它定位很清楚:不做艺术创作,做工程辅助。适合三拨人用:一是机械工程师,想在概念设计阶段快速出形态方案;二是产品设计师,想用文字把想法变成可讨论的模型;三是做自动化设计和 AIGC 工具的开发者,想研究怎么把文本生成模型和参数化建模接在一起。

2. 四条链路拆开看:从一句提示词到 STEP 文件的完整管线

2.1 第一跳:文本到多视角图像,Zero123 的“视角想象力”

text-to-cad 的第一段链路,是借用一个叫 Zero123 的扩散模型,把文本提示词变成物体不同视角下的图像。你可能觉得奇怪,为什么不直接从文本生成三维模型,非要绕一圈先生成二维图?这是因为当前文本转三维模型的技术还不成熟,端到端训练需要海量的“文本-CAD”对应数据,而且标注成本极高。Zero123 这类模型在零样本三维生成上做了很长时间积累,它接收的输入是某种物体的参考图加一个相对视角变化量,输出的是该视角下的新视图。

在这个项目里,作者利用的是 Zero123 的多视角一致性能力:给模型一段文本描述,再配合一系列相对视角参数,就能渲染出环绕物体的多张图像。这个思路很像摄影棚里给实物拍环拍——只不过拍的是 AI 想象中的物体。它的优势在于,Zero123 已经经过了大规模三维数据的预训练,对“一个东西从不同角度看长什么样”有比较强的常识,所以生成出来的各视角图像大体上能对上,不会出现正面是个矩形、背面变成了球这种离谱的偏差。

当然,Zero123 也有它的脾气。它对纯文本描述的响应不如对参考图那样稳定,所以在实际使用中,提示词不能写得太抽象。比如你写 “an interesting industrial object”,它大概率不知道你想干嘛,但如果你写 “a rectangular plate with four circular holes”,它就能给出比较听话的结果。这个限制在后面讲提示词技巧时还会展开。

2.2 第二跳:多视角图像到体素,用“抽奖”方式捞一个粗糙模型

拿到多视角图像之后,下一步是把这些二维信息折算成三维体素表示。作者在这里使用了一个叫 multi-view image lottery 的方法,中文理解可以粗暴一点:把每个视角当作一张彩票,多个视角一起抽,抽出那些在所有视角中都一致出现过的体素块。

为什么要这样做?因为单张图像本身是 2D 的,无法直接确定三维空间里哪个位置“有东西”。但如果你有多张不同角度的图像,就可以做逆向映射:把每个视角的图像反向投影到空间中,凡是多个视角都认为某个体素应该存在的,就保留下来;只有个别视角认为存在的,大概率是视角伪影,直接丢弃。这个过程类似 CT 重建的基本逻辑,只不过 CT 用的是 X 光投影,这里用的是 AI 生成的图像投影。

我理解这一步是整个管线里最“工程化”的设计:它不需要训练额外的网络,也不需要复杂的端到端优化,纯粹用几何一致性做筛选,稳定且可解释。代价是体素分辨率有限,最终生成的体素模型比较粗糙,像是一堆积木块拼出来的轮廓。但别急,后面还有两段链路的精修。

2.3 第三跳:体素雕刻与表面细化,把“积木块”修成更像样的形状

光有体素轮廓还不够看,官方在推理管线里加入了雕刻和表面细化步骤。所谓雕刻,是把上一步得到的体素块当作毛坯,利用多视角图像的深度估计信息和法向量信息,把多余的部分剔除掉,把缺失的部分补回来。这个思路类比一下,很像雕塑家拿到一块石材,先大致砍出轮廓,再对准各角度的照片去抠细节。

表面细化阶段解决的是一个老问题:体素模型的分辨率往上是靠内存堆的,但雕刻逻辑是在现有体素框架内做局部修正,所以输出依然是体素表示,只是细节比上一步好很多。这时候你去看生成结果的外形,基本已经能辨认出“这是个支架”“这是个法兰”“这是个带孔板”。但对于倒角、圆角、螺纹这类微特征,体素表示是撑不起来的,这也是后来 CadQuery 为什么会被拉进来的原因。

2.4 第四跳:体素轮廓到参数化建模,CadQuery 的“翻译官”角色

最后一段链路是这个项目最亮眼的地方:它没有把体素直接转成网格文件打包输出,而是引入了 CadQuery 这个参数化建模库,把体素轮廓“翻译”成 CAD 实体的几何定义。CadQuery 本质上是一个用 Python 代码来描述 CAD 模型的库,它基于 OpenCascade 内核,支持构造实体几何、布尔运算、拉伸、旋转、倒角等操作,而且最终可以导出 STEP 文件。

结合体素雕刻给出的形状轮廓,CadQuery 会去识别轮廓中的关键特征,比如平面、圆柱、孔洞的位置,然后用参数化方式重建出这些几何要素。这样生成出来的模型,虽然不能和你手动建模的特征历史一一对应,但至少它是一个真正的实体模型,而不是一堆面片。打开 STEP 文件后,你可以对它进行尺寸测量、布尔运算,与其它零件装配,在大多数 CAD 环境中都能编辑。

现在回头看,这套管线每一步都不是什么新发明,零样本视图生成、体素雕刻、参数化建模,每一项都有长久的技术积累。作者做的最关键的事,是把它们串成了一条自动化的流水线,并且在工程意义上跑通了。这种“旧零件,新组装”的做法,在目前的 AI 工程化阶段其实很常见,也很有参考价值。

3. 本地部署与第一次出图:环境、步骤和实测命令

3.1 硬件基线:没有大显存,建议先借卡跑

先说硬件门槛。text-to-cad 在推理阶段虽然不需要训练,但要同时跑 Zero123 的扩散模型和体素雕刻流程,float16权重的显存占用大概在 10GB 到 16GB 之间。我自己的 12GB 显卡跑小尺寸物体没问题,但跑到复杂提示词时偶尔会提示显存不足。如果你想跑得比较从容,建议至少准备一张 24GB 显存的卡,或者用云 GPU 实例。官方仓库的 README 里也提到了类似的建议,别幻想用纯 CPU 跑完整个流程,体素雕刻那步的矩阵运算会把 CPU 拖到怀疑人生。

3.2 环境准备:三步装好跑起来

我在这台机器上跑通的时候,流程基本是这样的:

  1. 先把仓库克隆到本地,建议放在一个纯英文路径下,避免某些依赖库对中文目录名支持不好。
  2. 创建 Python 环境,项目的依赖装起来不算复杂,requirements.txt里列的主要是 PyTorch、OpenCV、CadQuery 这类常见库。
  3. 下载 Zero123 的预训练权重文件,放到仓库指定目录。权重大概有几个 GB,下载完之后最好顺手核对一下文件大小,别下了一半就断线。

装完之后可以先用仓库自带的示例脚本跑一遍,确认环境本身没问题。示例跑通后,再换成自己的提示词。

3.3 实测:一句提示词,两张图的时间

我第一次自定义提示词用的是 “a simple metal bracket with two mounting holes”,这句足够短,而且都是实体名词加数量词,Zero123 最容易理解的那一类。整个推理耗时大概在两到三分钟,视显卡而定。输出目录里会多出中间过程的多视角图像、体素可视化文件,以及最终的 STEP 文件。

把 STEP 文件拖进 Fusion 360,第一感受是“比例是对的”。我量了一下孔距、板厚,和提示词里隐含的预期基本一致。当然,我这里说的是外形级的一致,不是毫米级精度,后面我会专门讲精度这个话题。总之第一步跑通之后,你就大概知道这套工具能给你带来什么了。

3.4 提示词实测模板:什么样的文字描述效果最好

跑了十几组提示词之后,我自己的经验是可以把提示词当成一个“给设计师看的简短需求描述”,遵循几个原则:

  • 用具体名词开头,比如 “aluminum plate”“steel cylinder”“plastic housing”,不要用抽象形容词开头。
  • 用数量词约束特征,比如 “with four holes”“with two slots”,数量会让 Zero123 更容易生成对称排布。
  • 尽量控制在 15 个词以内,描述越长,扩散模型输出的图像越容易漂移。
  • 避免描述材质纹理,比如 “brushed metal”“carbon fiber pattern”,这类信息对形体生成没有帮助,反而会干扰形状特征的输出。

我把比较成功的几条提示词整理成一个表,方便你参考:

提示词示例生成效果
a rectangular aluminum plate with four corner holes整体型面完整,孔位分布对称
a flanged cylinder with six bolt holes法兰盘形态清晰,孔分布合理
a simple metal bracket with two mounting holes支架轮廓接近预期,可读性好
a gearbox housing with internal cavity表面形态可用,内部结构明显简化
an ergonomic handle with curved profile曲率自然,但截面细节偏少

4. 真实输出的品质边界:哪些任务靠谱,哪些任务翻车

4.1 靠谱的区间:钣金件、支架件、对称回转体

跑了一段时间之后,我大概摸清楚了这套工具的舒适区在哪里。首先是钣金类零件,比如支板、支架、角码,这类零件一般就是平面加孔位的组合,体素雕刻能很好地把主要的平面和孔位置还原出来,CadQuery 又擅长用拉伸和布尔打孔来重建这类几何,所以成品的可用度是最高的。

其次是带对称性的回转体零件,比如法兰盘、带中心孔的圆柱座、简单的轴承座。这类零件的多视角一致性天然就强,Zero123 从哪个角度看都能猜个八九不离十,所以生成的形体很稳定。哪怕是复杂一些的异形波纹管,只要对称性好,输出轮廓也基本靠谱。

我实际的工作流里,现在经常拿它来出“概念评审版”的零件图。以前我需要花半小时画一个带孔的法兰盘,现在敲两个字、等三分钟,拿到一个可以转进装配体的实体模型,先讨论定性方案,再决定要不要细化。这个效率提升是实实在在的。

4.2 翻车重灾区:带内部结构的零件、装配体和精密特征

再说说它搞不定的东西,这些事你可能早晚会遇到,别到时候误会是安装没装好。

第一个翻车重灾区是带内部空腔的零件。比如你想生成一个“hollow cube with internal ribs”,Zero123 生成的图像里,外部看起来是个方块,但内部加强筋到底怎么排布,模型是完全靠猜的。体素雕刻只能从外部视角推算,内部结构它根本看不见,所以生成结果基本不可控。

第二个是装配体。如果你写 “a gearbox assembly”,它确实能给你生成一个有点像减速器外壳的东西,但轴系、齿轮啮合、轴承位置,一概不要指望,这些需要精密约束的东西,不是生成模型能搞定的。

第三个是精密特征。倒角、圆角、螺纹、公差配合这些,生成的 STEP 文件里要么没有,要么只是装饰性的轮廓,没有真正的几何意义。拿它去加工生产,大概率是要出问题的。这个点很重要,我后面会专门展开说。

4.3 精度真相:尺度和视觉的“三分像”,不等于工程公差

很多人第一次把生成结果导入 CAD 后会有一种错觉:“看起来挺准的嘛”。我要提醒你,这个“准”是视觉意义上的准,不是几何意义上的准。

我实测下来,孔位之间的相对位置还能看出设计意图,但你具体去测量孔径、板厚,会发现数值跟预期有一两毫米的出入。更重要的是,它的输出没有参数化历史。你在 SolidWorks 里打开导出的 STEP,左边特征树往往是空的,它就是一个导入实体,你无法像自己建模那样回去改一个圆角半径或者拖一个孔位草图尺寸。

这意味着什么?意味着它在当前阶段的定位更接近“造型参考”和“概念探索”,而不是“可交付的工程模型”。如果你要真正用它的结果,通常的做法是:拿生成的 STEP 当作参考几何,在 CAD 里重新画一遍带特征的正式模型。这个“重画”的时间,相比从零开始已经省掉了大量轮廓推敲的工作。

5. 接进工作流之前,先想清楚这几件事

5.1 安全底线:别让 AI 模型未经检查直接进制造环节

讲完它能做什么、不能做什么,我必须先说安全这件事,因为这是个工程原则问题。text-to-cad 以及所有同类生成工具,在现阶段都不应该在没有任何人工检查的情况下,把输出直接送去加工。

原因很简单:生成模型对几何的理解是概率性的,它不知道材料强度、不知道应力集中、不知道装配间隙。你在提示词里写 “a strong mounting bracket”,它并不知道“strong”在工程上意味着什么,只能给出一个看起来结实的造型。如果你拿这个零件去跑有限元分析,或者直接上机床加工,出了安全事故,那是人命关天的事。

我的建议是:凡是进入生产意图的模型,必须经过有经验的工程师二次建模和完整校核。AI 生成的结果只能作为输入端的前置灵感来源,绝不能作为输出的末端。你可以在团队共识里加上这样一条:AI 生成模型仅用于概念设计阶段,不进入 BOM 和制造流程。

5.2 用对位置:概念设计中“试错成本”最低的环节

那它到底该放在工作流的哪一环?我目前用得最顺手的位置,是概念设计阶段的前置探索环节。

比如客户提了一句“我们需要一个能固定线缆的支架”,常规做法是设计师凭经验画几个方案,再跟客户对需求。现在我可以在键盘上多敲几个变体提示词,比如 “a simple L-shaped cable bracket with two slots”“a U-shaped cable clamp with a mounting hole”“a cable bracket with a curved profile and four holes”,几分钟内就能拿到形态完全不同的三四个模型。

这些模型不需要精细,但足以让沟通变得更具体。客户看着三维模型说的“这里再高一点”“孔移到侧面”,比对着空白图纸比划半天高效得多。一旦需求收敛了,再交给工程师用正式 CAD 工具把选定方案重建成符合制造约束的模型。这个过程把试错成本最高的形态探索阶段,压到了几乎没有成本。

5.3 团队协作细节:批量出图时注意资源排队

最后提一个很现实的团队协作问题:如果你们团队是几个人共用一张大显存显卡跑这些工具,批量出图时一定要注意资源排队。text-to-cad 本身没有内建的队列调度,谁先进程里跑起来,谁就占着显存。

我们现在的做法是,把需要生成的提示词写成一个文本文件,用脚本顺序调用、一次跑一批,而不是每个人分别打开终端同时跑,否则显存不够时进程会直接被系统杀掉,前面排队的时间全白费。另外,生成结果文件命名请一定带日期和提示词摘要,不然一周之后你会面对一堆名字都叫output.step的文件,根本分不清哪个是哪个方案。

6. 社区正在发生的进化:从复刻、微调到智能工厂

6.1 不只是跑通一条线:开源生态里的复刻、微调与整合

text-to-cad 项目出来以后,社区里的反应其实比我想象中要快。很多团队在做的事情不是停留在“跑通 Demo”,而是把它往自己熟悉的领域里做微调和整合。

我看到的几个方向很值得关注。第一类是垂直领域微调,有人用特定类别的零件数据对 Zero123 做了领域适配,让它更擅长生成耳机造型、家具榫卯、汽车内饰件这类特定品类。第二类是工具链整合,有人把 text-to-cad 的输出直接接进了自动标注流程,为下游的缺陷检测、装配仿真提供初始几何。第三类是开发思路的借鉴:与其从头训练一个文本到 CAD 的大模型,不如像它一样拆成“视图生成 + 体素重建 + 参数化建模”三段式,用现成组件拼出自己的管线。

这些年做 AI 工程给我一个感受:真正能快速落地的项目,往往是那些把“单点能力”灵活组装起来的作品,而不是重新发明轮子。text-to-cad 把这四个轮子装上了一辆车,让后来的人能直接坐上去开,这种思路本身就值得学习。

6.2 提示词库也是设计资产:把经验沉淀下来

顺着上一节说,我现在在团队里推行一个做法:把每次跑出来效果好的提示词,连同生成结果截图,放进一个共享文档里。一个典型的条目长这样:

需求场景:线缆固定支架外形探索
提示词:a U-shaped cable clamp with a rounded profile and two mounting holes
效果评价:轮廓接近预期,孔位需要人工重排
使用注意:避免加入 wall thickness 这类需要具体数值的描述

为什么要做这件事?因为提示词在这个流程里,本质上已经变成了设计经验的一种载体。设计师熟悉的“底板加立板”“法兰加加强筋”这类经验,变成了一套可复用的提示词,新来的同事不需要重新试错几十次,直接查库就行。

我自己的观察是,很多团队对 AI 工具的使用还停留在“个人试一下”的层级,而真正能产生复利效应的,是把这些零散经验沉淀成团队资产。你不需要一次把库建得很完整,哪怕每周存两三条,三个月下来就有几十条高质量经验词条,这比任何培训文档都更有生命力。

6.3 下一步值得关注的方向:从“一句话出图”到“多轮对话改图”

最后聊聊我看到的趋势。text-to-cad 目前的交互模式还是一句话生成一个模型,你要改参数,就得修改提示词重新跑一遍,中间没有“对话式迭代”。我注意到的社区讨论中,正有人在尝试接入大语言模型,让用户用自然语言交互来逐步调整输出,比如先说“生成一个支架”,再补一句“把孔改到侧面”,系统自动维护生成状态并做局部重生成。

这个方向如果做起来,工具的价值会再上一个台阶。因为工程设计的本质是不断约束和修正的过程,而不是一次性生成。像“把这里的圆角改大一点”“让这个法兰更厚一些”这种增量式修改,正是 CAD 工程师每天都在做的事,如果 AI 能承接这部分,那才是真正的生产力解放。

当然,这类交互式生成对模型的要求会更高,它需要理解几何状态和修改意图之间的对应关系,短期内未必能完全成熟。但方向已经很明确了:text-to-cad 不是终点,而是一个让所有人看清“文本、图像、体素、CAD”这条链路完全可行的起点。

我自己现在的使用习惯是:每周固定抽一个下午,把下周要做的零件需求整理成提示词批次,一次性跑完,把结果存成形态方案库,供设计评审时调取。这个动作已经坚持了快两个月,最大的感受是,以前评审会上大家对着空白画布各说各话,现在终于有个共同的三维语言可以讨论了。工具还在快速迭代,但只要找对了它在工作流里的位置,它就能帮你把最枯燥的形态探索阶段,变得又快又好玩。

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

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

立即咨询