☰
文字生成CAD模型实战:从提示词到STEP/STL导出
2026/11/2 7:15:19 网站建设 项目流程

上周有个做非标设备的同行扔给我一句话:客户要一个“能套在直径八十的管子上、带四个安装孔、侧面再开个走线孔”的抱箍,就一件,开一次三维软件、画草图、拉伸、打孔、倒角,前后二十分钟,还不算改尺寸重来。他问我,现在不是有那种文字生成CAD模型的工具吗,能不能直接把这段话粘进去就出货。

我当场给他演示了一遍文本到CAD(Text-to-CAD)的完整链路,从敲字到拿到能扔进切片软件的STL,三分钟。但我也泼了盆冷水:这三分钟里,有两分半是在改我的描述。文字生成CAD模型这件事,真正的门槛从来不在“AI能不能画出来”,而在你能不能把脑子里的零件翻译成一段没有歧义的、带尺寸带约束的描述。描述对了,模型就是对的;描述含糊,你得到的是一个看起来很专业、实际上什么都装不上的漂亮垃圾。

这篇东西写给三类人:手里有大量一次性结构件、不想为每一个都走完整建模流程的工程师;做原型验证、需要快速拿到实体看比例的硬件产品人;以及刚接触这类工具、被一句“描述你的设计”忽悠进去、结果生成出一坨奇怪几何体的新手。下面这些内容,一部分来自我自己和同行反复折腾的记录,一部分是基于这类工具通用工作机制做出的合理推演——不同平台的界面按钮位置、面板名称会有差异,但底层那条链路是相通的。

1. 先搞清楚“文字生成CAD”生成的是什么

1.1 一句话到实体模型的三段式链路

很多人以为这类工具是“AI直接吐出模型文件”,其实中间隔着两到三次转换,理解这条链路,后面所有踩坑都能对上号。

第一段是语义解析。你输入的自然语言描述,被送进一个大语言模型,它的任务不是画图,而是判断“这段话描述的是个什么类型的几何体,需要哪些特征,各特征之间是什么关系”。这一段决定了模型的大方向,错了后面全错。

第二段是代码生成。模型不会凭空长出来,它必须输出成一段可执行的建模脚本——通常是基于某个参数化建模库的 Python 代码,或者平台自有的建模脚本语言。这段脚本里写死了尺寸、坐标、布尔运算的顺序。

第三段是几何内核执行。脚本被送进几何内核,内核才真正算出一个 B-rep(边界表示)实体,然后根据需要转成网格、或者导出成 STEP 这类精确几何格式。

三段里,第一段靠语言模型的理解力,第二段靠它对建模 API 的熟练度,第三段靠内核的健壮性。你遇到的绝大多数“生成了但不对”,问题都出在第一段和第二段;绝大多数“生成了但导出失败”,问题出在第三段。

1.2 它擅长什么,不擅长什么

把边界划清楚,能省掉大量无效尝试。

擅长的是:结构相对规整、特征可以列成清单、尺寸能明确给出数值的零件。法兰盘、支架、垫块、简单的壳体、转接板、定位销、带孔阵列的钣金件、轴向对称的旋转体——这一类,描述写好了,一次成型率很高。

不擅长的是:依赖复杂曲面、依赖精确配合关系、依赖大量工程约束的零件。自由曲面造型、螺旋齿轮的齿形、需要满足形位公差配合的装配体、有拔模斜度和分型面要求的外观件,这些交给它,你会陷入无限次“再改一版”的循环。

还有一个隐蔽的不擅长项:它不理解“功能意图”,只理解“几何描述”。你说“这个孔要能过 M8 螺栓”,它可能会给你一个直径 8 的孔——几何上没错,工程上是错的,M8 的通孔得是 9 左右。你必须把工程意图换算成具体数值再写进去。

1.3 和传统参数化建模的分工关系

我不建议把它当成“替代三维软件”的东西,它更像是一个前置的草稿机。

对比维度文字生成CAD传统参数化建模
起步速度几十秒到两分钟五到三十分钟
修改方式改描述、重新生成改参数、特征树自动重算
可维护性依赖描述文本和生成脚本特征树清晰、可追溯
精度控制依赖你描述的数值精度依赖约束和尺寸驱动
适合阶段概念验证、一次性件、快速看比例定型件、量产件、装配设计

我的实际做法是:凡是“只做一件、做完就扔”的东西,走文字生成;凡是“要改三版以上、要进装配、要出工程图”的东西,生成个初稿之后立刻导出 STEP,扔进传统三维软件里补齐约束和细节。

2. 第一条提示词决定七成成败

2.1 尺寸、单位、基准这三样必须写死

这是新手翻车最集中的地方。“一个圆盘”和“一个直径 120 毫米、厚 8 毫米的圆盘”是两个完全不同的东西。前者在几何内核眼里可以是半径 1 也可以是半径 1000,具体给多少,取决于模型当时的心情。

三样东西必须写清:

  • 单位。虽然平台通常有默认单位设置,但在描述里明确写“毫米”是最省事的保险。我试过一次没写,生成出来的零件在导出 STL 后被切片软件识别成米级尺寸,直接飞出了打印平台。
  • 主尺寸数值。整体外形尺寸、关键特征尺寸,全部给数字,不要用“大约”“差不多”“适中”这类词。
  • 基准与原点。零件以哪个面为底面、哪个轴为旋转轴、坐标原点放在哪里。这个不写,导出的模型位置可能是偏的,后续做装配或者阵列的时候会很烦。

一个很实用的技巧:在描述结尾补一句“以底面中心为原点,Z 轴向上”。这句话几乎不增加长度,但能省掉后面调整位置的时间。

2.2 特征顺序就是建模顺序

几何内核做布尔运算是按顺序来的,你的描述顺序会被映射成特征顺序。这个顺序错了,结果就可能是错的。

举个最简单的例子:先做外圆拉伸、再挖内孔、再打一圈螺栓孔——这个顺序是对的。如果你反过来描述成“先打一圈孔,再把外轮廓削出来”,模型在某些情况下也能出来,但当孔的位置靠外、和外轮廓有干涉时,布尔运算就可能出现薄壁残留甚至失败。

我总结的通用顺序是:基体 → 主切除 → 次切除 → 阵列特征 → 倒角圆角 → 抽壳。倒角一定放最后,因为倒角依赖前面所有边的最终状态,中间做倒角,后面的切除会把倒角切掉一半,留下一条奇怪的残边。

提示:描述里可以用“然后”“接着”“在此基础上”这类词显式标记顺序,多数语言模型会把它当作特征顺序的强信号。

2.3 一个可以直接套的提示词骨架

折腾了小半年,我固定下来一个结构,基本上照着填空就行:

【几何类型】+【整体尺寸与单位】+【主体构造】+【切除特征及位置】+【阵列/重复特征】+【边角处理】+【基准说明】

落到具体零件,大概是这个味道:

生成一个圆环形法兰盘,单位为毫米。外径 120,内径 80,整体厚度 12。以底面中心为原点,Z 轴向上。在法兰上端面沿直径 100 的分布圆,均匀布置 6 个直径 10 的通孔,第一个孔位于正 X 轴方向。所有外露锐边倒 1 毫米直角边,内孔口倒 0.5 毫米。

这段话不长,但把前面说的三样全占了:单位、数值、基准,顺序也对。我拿类似结构的描述试过十几次,成型率明显高于那种“帮我画个法兰”的写法。

2.4 描述失效时的三种补救写法

有时候你会遇到“怎么写都不对”的情况。这时候别硬堆形容词,换思路:

第一种,降维。把复杂零件拆成两个简单零件分别生成,导出 STEP 后在做装配的软件里合并。听起来笨,但成功率高得多,尤其适合带内部流道的零件。

第二种,加约束反例。把“不要什么”也写进去。比如“外轮廓为正方形,四个角为直角,不要圆角”,能有效防止模型自作主张给你倒圆。

第三种,用相对关系代替绝对数值。当你不确定具体尺寸但知道比例时,可以写“内径为外径的 0.65 倍,厚度为外径的 0.1 倍”。有些平台支持这种比例描述并同步算出数值,改一个尺寸就能整体缩放,比全部写死更灵活。

3. 界面上那几块容易被跳过的区域

3.1 输入区与模型树

输入区没什么好说的,无非是文本框、提交按钮、可能还有个“优化提示词”的辅助按钮。我一般不用那个辅助按钮,因为改写后的描述往往更“标准”但也更泛,丢掉了我的具体数值。

真正值得盯的是模型树。生成完成的模型,平台通常会把它拆成若干特征节点列出来,有的还能单独选中某个特征查看。这块信息的价值在于:它是模型对你描述的理解结果的可视化。你写的是“6 个孔均匀分布”,模型树里如果只出现一个“孔特征”,说明阵列没被识别,你得回去改描述。

我遇到过描述里写了“两侧各一个对称的凸耳”,生成出来的模型树里只有一个凸耳特征,说明它把“对称”理解成了同一个特征的镜像参数但没生效。改成分两句写“在 X 正方向生成一个凸耳,在 X 负方向生成一个相同的凸耳”,问题就解决了。

3.2 参数面板与即时重算

不少平台会在生成后提供一个参数面板,把描述里提到的数值抽出来做成可拖动的滑块或者输入框。这个功能很香,但也有个坑:它抽取的参数未必是你想改的那个。

比如一个带内孔的圆柱,面板上可能出现“外径”“高度”“孔径”三项,但实际生成脚本里孔的深度是单独写死的,面板改孔径只会改直径不改深度,改出来的结果和你想的不一样。我的习惯是,只要用了参数面板改过一次,就重新检查一遍模型尺寸,别默认它改对了。

3.3 导出格式选错,后面全白干

这是最冤的一类返工。格式对照表放这儿:

格式承载内容典型用途需要注意
STEP精确 B-rep 几何进三维软件继续编辑、CAM、工程交付带单位信息,优先选这个
STL三角网格3D 打印、快速渲染本身不带单位,靠下游软件设定
3MF网格 + 单位 + 颜色切片打印兼容性略逊于 STL
GLB / glTF网格 + 材质网页展示、AR 预览不适合任何加工环节
DXF / SVG二维投影轮廓激光切割、钣金下料要确认投影方向和比例

选格式的原则就一句:后面还要改就选 STEP,后面直接拿去加工或打印就选网格类。我见过有人拿 STL 去激光切割,结果切出来一圈锯齿,因为网格被当成轮廓线直接切了。

3.4 把生成脚本翻出来看一眼

很多平台会提供“查看代码”或者“查看脚本”的入口,能看到生成这个模型的那段参数化建模代码。这个入口是这类工具里最被低估的功能。

原因很实际:代码里写的是真实的数值和真实的布尔运算顺序。当模型看起来不对但你又说不出哪里不对时,翻代码比反复改描述快得多。代码里一个circle(60)和circle(40),一眼就能看出内径外径反了没有;代码里如果出现两次extrude而你的描述里只有一个拉伸,说明它把你的描述拆成了两个特征,可能多切了东西。

看到代码之后,如果平台允许直接编辑脚本再重算,那更好,相当于你从“描述者”升级成了“建模者”。我经常干的事是:描述生成个七七八八,然后手动改脚本里的几个数值,比重新写一段描述精准得多。

下面是这类脚本大致长什么样,用的是常见的参数化建模库语法,不同平台 API 会有出入,看个意思:

import cadquery as cq R_out, R_in, H = 60, 40, 12 # 外半径、内半径、厚度,单位 mm hole_d, pcd, hole_n = 10, 100, 6 # 孔径、分布圆直径、孔数 flange = ( cq.Workplane("XY") .circle(R_out) .circle(R_in) # 两个同心圆构成环形面 .extrude(H) # 拉伸成环体 ) flange = ( flange.faces(">Z").workplane() .polarArray(pcd / 2, 0, 360, hole_n) # 沿分布圆阵列孔位 .hole(hole_d) # 打成通孔 .edges("|Z").chamfer(1.0) # 竖直边倒角 )

这段代码的逻辑很直白:先画两个同心圆围出环形,拉伸,然后在顶面按阵列打孔,最后对竖直边倒角。你能看出来,建模思路和我在描述里写的顺序是一一对应的。这也是为什么描述顺序重要——它就是代码顺序。

4. 实测踩到的五类问题与排查顺序

4.1 显示正常,导出报错

这是最迷惑人的一类。模型在预览窗口里转得好好的,一点导出就提示几何无效或者直接失败。

排查链路我是这么走的:

第一步,换格式试一次。STEP 失败但 STL 能导出,说明问题出在 B-rep 本身有拓扑缺陷,比如面之间有间隙、边是开放的,网格化的时候内核能勉强糊过去,但精确几何撑不住。反过来 STL 失败、STEP 成功,说明网格划分参数有问题,跟模型本身无关。

第二步,看有没有薄壁或者零厚度面。这类模型最容易出问题,因为内核在计算面与面的交线时,间距小于公差就会判定为共面,布尔运算结果就变得不确定。我的经验是,任何壁厚低于 1 毫米的结构,在描述阶段就要主动加厚,别指望内核扛得住。

第三步,检查是不是有自相交。倒角和孔位干涉是最常见的自相交来源。孔边缘刚好落在另一个孔的边缘上,或者倒角尺寸大于相邻面的宽度,都会产生自相交。

4.2 布尔运算留缝、薄壁穿孔

生成的模型看着没毛病,一进下游软件就报警“非流形”或者“存在开放边”,基本可以锁定是布尔运算没算干净。

根因通常是两个。一个是切除方向问题:描述里说“打一个通孔”,但脚本里生成的是一个定深的凹槽,深度刚好等于壁厚,浮点误差一抖,底面就穿透了或者没穿透。这种情况下把“通孔”改成“直径 X、深度大于壁厚的切除”,稳定得多。

另一个是切除体与被切体表面共面。孔口平面和零件表面完全重合,理论上应该切穿,实际计算时可能留下一个薄薄的残面。处理办法是让切除体两端都超出零件表面一点,比如打穿孔时让切除体的长度比壁厚多两毫米,两端各伸出一毫米,这样就不存在共面判定。

这个思路很通用,凡是切除,就让切除体穿出去,别让它刚好停在面上。

4.3 圆角倒角导致重建失败

倒角的坑特别多,我列几个踩过的:

  • 倒角尺寸大于相邻面尺寸。两个特征面之间的边只有 2 毫米宽,你让倒 3 毫米,必然失败。
  • 倒角在薄壁上造成贯通。壁厚 2 毫米,两侧各倒 1.5 毫米,中间就没了。
  • 倒角与孔口干涉。孔开在边上,倒角一上,孔口就被吃掉一块,留下一个不完整的孔。

我的应对策略很粗暴:第一版描述里完全不写倒角,等几何主体确认无误之后,再追加一句“对某某边倒 R 角”重新生成。分两步走,出问题的时候能立刻定位到是主体问题还是倒角问题。

4.4 单位与比例的隐蔽错误

除了前面说的导出后尺寸不对,还有一种更隐蔽的:模型内部单位是统一的,但某个特征的数值被当成了另一种单位。

典型表现是一个 100 毫米的零件上,出现一个直径 5 毫米的孔和一个直径 0.5 毫米的孔。前者是正常输入,后者是模型把“5”当成了厘米或者别的单位。这种错误在预览窗口里往往看不出来,因为不放大根本看不见那个小孔。

排查方法很直接:生成之后,把模型树里每一个特征的实际尺寸挨个看一遍,跟你的描述逐个对。花一分钟,省掉一次打印废件。

4.5 “看着对,装不上”

这类问题最气人,因为模型完全符合你的描述,但就是装不上。

原因是你描述的是几何,没描述配合。一个孔直径 10,一根轴直径 10,几何上都对,装配上就是过盈配合,敲不进去。所以涉及配合的场合,描述里必须写清配合性质:“孔径 10.2,用于与 10 的轴间隙配合”。

还有一类是位置基准错位。你以为原点在底面中心,实际生成的原点在包围盒中心,导出后跟别的零件一做装配,整体偏移了半个高度。这个也好办,描述里显式写清楚基准,导出后在软件里量一下关键距离,确认没漂。

5. 把生成结果变成能复用的资产

5.1 提示词本身就该进版本管理

我一开始是把提示词随手写在记事本里,用了两次就找不着了。后来改成建一个纯文本文件,一条提示词一行,后面跟一句备注:生成了什么、当时用的什么参数、有没有出问题。

这个习惯带来的好处在两周之后就显现了:客户说“上次那个法兰改成三孔的”,我不用重新想怎么描述,翻出原文改两个字重生成,半分钟的事。在没有特征树的场景下,提示词就是你的参数化历史。而且它比特征树更可读,任何人拿到这段文字都能看懂这个零件大致长什么样。

5.2 参数化复用的两条路

想让一个生成出来的模型能批量变型,有两条路可以走。

一条是走参数面板,前提是平台抽出来的参数正好覆盖你要改的维度。这条路省事但受制于人,参数不全就得重来。

另一条是把生成的脚本存下来当模板。把里面的数值抽成变量,改一行代码换一个规格。这条路费点劲,但完全可控,而且你可以在脚本里加自己的逻辑,比如“孔数随直径自动增加”这种规则。

# 参数化模板示意:改这三行就能换规格 D_out = 120 # 外径 D_in = 80 # 内径 N_hole = 6 # 螺栓孔数量 pcd = (D_out + D_in) / 2 # 分布圆直径按内外径中值取 hole_d = 10 if D_out < 150 else 12 # 大尺寸自动放大孔径

这段简单逻辑的价值在于,它把你脑子里的“经验规则”写进去了。以后生成新规格,不用再想一遍孔径该给多少。

5.3 从原型到工程件还差哪几步

文字生成的模型,基本停留在“形状正确”的层面。要变成能加工的工程件,还差这么几步:

第一步,补约束和倒角细节。导入三维软件之后,把生成时省略的小圆角、退刀槽、螺纹底孔补上。

第二步,检查壁厚均匀性。生成的壳体类零件经常出现某处壁厚只有别处一半的情况,做注塑或者铸造直接报废。

第三步,加公差和技术要求。这部分文字生成工具完全帮不上忙,必须人来定。

第四步,出工程图或者转 CAM。STEP 导进对应的软件走标准流程就行。

我的判断标准是:如果这个零件要做超过三件,就别在生成环节反复磨了,赶紧导出去走正规流程,时间成本更低。

6. 三个典型零件的描述拆解

6.1 法兰类:重点在阵列和基准

法兰的结构高度规律,是文字生成最友好的类型。描述的关键在于把阵列参数写全:分布圆直径、孔数、起始角、孔径,四个参数缺一个都可能出问题。

生成圆环形法兰盘,单位毫米。外径 160,内径 100,厚度 15。底面中心为原点,Z 轴向上。顶面沿直径 130 的分布圆均匀布置 8 个直径 14 的通孔,第一个孔位于正 X 轴方向,孔位角度间隔 45 度。外圆柱面与上下端面的交线倒 1.5 毫米直角边,内孔两端倒 0.8 毫米。

注意里面“第一个孔位于正 X 轴方向”这句,看起来多余,实际很必要——不写的话,阵列的起始角可能是任意的,做对称性检查或者后续装配对齐的时候会很别扭。

6.2 支架类:重点在特征顺序和对称

L 形支架、U 形支架这类,难点在于多个平面上的特征如何描述清楚。

我一般这么写:

生成一个 L 形角支架,单位毫米。竖直板尺寸 80×60×6,水平板尺寸 80×50×6,两板在长边处垂直相接,内角为 90 度。以两板交接的内角线中点为原点。竖直板上开两个直径 9 的通孔,孔心位于板中心线上,距板上下边缘各 20,水平方向居中。水平板上开两个长圆孔,长 20 宽 9,孔心距板边缘 15,沿板长度方向对称布置。所有外露棱边倒 1 毫米。

这里的核心是把每块板单独描述,并且用“相接”“内角”这类词把相对位置讲清楚。不写清楚,模型可能给你两块分离的板,或者接反了方向。

6.3 壳体类:重点在抽壳时机和开口

带内腔的壳体是难度最高的一类,因为涉及抽壳操作,而抽壳对壁厚均匀性极度敏感。

生成一个矩形壳体,单位毫米。外形尺寸 120×80×40,壁厚 2.5,顶部开放。以底面中心为原点。顶面开放,其余五面封闭。在长度方向一端面开一个 20×12 的矩形缺口,缺口底边距底面 10,沿宽度方向居中。在底面开四个直径 4 的安装柱孔,位置距四角各 8。

抽壳类描述的要点是:先描述外形,再单独说明抽壳方向和壁厚,最后说开口。别把开口和抽壳揉在一句话里,容易让模型理解成先开口再抽壳,结果开口处也被加上了壁厚,变成一个沉孔。

再补一句经验:壁厚低于 2 毫米的壳体,生成之后一定要进软件检查一遍,特别是在圆角过渡区域,很容易出现壁厚骤减到 1 毫米以下的地方。

6.4 生成之后别急着用

我给自己定的规矩是,任何从文字生成的模型,在进下游流程之前必须过三道检查:量三个关键尺寸对不对、看一眼有没有非流形边、确认导出格式的单位。这三步一共两分钟,但拦住过至少七八次废件。

有一次是支架的孔位分布圆直径少写了 10 毫米,模型看着完全正常,装的时候才发现孔对不上。从那之后我就养成了量尺寸的习惯。文字生成工具把建模的门槛降得很低,但它不会替你承担尺寸写错的责任,这一点跟手动画图没有任何区别。

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

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

立即咨询