跳到主内容
快讯直播
AI智模界
教程

上手 zCAD AI:从一句话生成可编辑的 CAD 零件

这篇能做出什么

一句话说清楚:读完并照着做一遍,你会得到一个带参数、能改尺寸、能导出 STEP 的实体零件,而不是一个只能看不能量的网格模型。

具体成果:

  • 用一段中文描述(含尺寸、孔径、圆角、壁厚)生成一个零件初稿;
  • 在参数面板或特征树里改一个数字,整个模型跟着重建;
  • 用脚本把关键尺寸量一遍,确认没有“看着像、量着错”;
  • 导出 STEP 给下游 CAD/CAE 用,同时导出 STL 切片打印;
  • 拿卡尺量实物,把偏差回填到参数里,形成一次闭环。

示例零件选一个最常见的:矩形安装块,四角四个通孔,顶面一个圆形沉槽。它同时包含外形尺寸、孔位、孔径、深度、圆角五类约束,足够把整条链路走通。你要是做机器人底板、传感器支架、面板开孔,结构都是同一套。

顺带说清楚它和通用 3D 生成模型的区别:后者擅长“长得像”,前者要负责“装得上”。

前置条件清单

动手前把下面这些备齐,能省掉一半来回:

  • 一个 zCAD AI 账号,能用文本生成/编辑 CAD 模型。具体入口、套餐与功能边界以官方页面为准。
  • 一台能跑 Python 3.10 左右的电脑。版本以满足依赖为准,以官方文档当前版本为准。
  • Python 环境(可选但强烈建议):CadQuery 或 build123d,用来在本地复现、校验、批量改参数。安装命令见步骤四。
  • 一个能看 STEP 的工具:FreeCAD 即可,免费且跨平台。
  • 一个切片软件:PrusaSlicer、OrcaSlicer、Cura 任选其一,以官方文档当前版本为准。
  • 一把数显卡尺(精度 0.01 mm),这是验证环节的核心工具。
  • 一台 FDM 打印机。没有也能做完前五步,只是拿不到实物反馈。

另外准备两条心理预期:第一,生成结果第一版几乎一定需要改,这很正常;第二,凡是涉及“配合”的尺寸(孔、轴、槽宽),必须自己定公差,不要指望模型猜。

步骤一:把“一句话”写成工程规格

模型猜不准,十有八九是话没说明白。像“做一个支架”这种输入,生成器只能给你一个大概的比例。

把需求写成五行以内的规格书,每行一个可测量的量:

```text

零件:矩形安装块

外形:80 × 40 × 12 mm

孔:四角各一个 Ø4.2 mm 通孔,孔心距长边 10 mm、距短边 10 mm

沉槽:顶面中心 Ø30 mm,深 6 mm

圆角:四条竖直棱边 R4

单位:mm;材料按 PLA 考虑

```

几个写作要点:

  • 每个尺寸都带单位和数值,不要用“适中”“稍微”这类词;
  • 孔用“Ø + 直径”表达,避免生成器理解成半径;
  • 圆角写清楚是哪几条棱,竖直棱和顶面棱的加工效果完全不同;
  • 明确单位是 mm,跨国工具默认英寸的情况并不罕见。

步骤二:在 zCAD AI 里生成第一版

把上面那段规格原样粘进输入框提交。生成完成后,别急着导出,先在界面里确认三件事:

1. 单位。找单位显示或设置项,确认是 mm。

2. 特征结构。找特征树/历史面板/参数面板。理想情况下你能看到类似“草图 → 拉伸 → 切除 → 孔 → 圆角”的列表,而不是一个整体网格。这份结构就是“可编辑”三个字的实际含义。

3. 参数表。看有没有可调的数值项,比如长度、宽度、孔径、圆角半径。有滑块或输入框,说明它是参数化模型;只能整体重新生成,说明当前输出偏网格。

如果界面里完全找不到特征树和参数项,只有“重新生成”,那这次生成的结果不适合做功能件,换一种提示词再试,或者在导出选项里找找有没有“导出脚本 / 导出参数化源文件”。

步骤三:拿到可编辑模型的三条路径

不同工具给的出口不一样,通常有这三种,按优先级排:

路径 A:直接改参数。 在参数面板里把 80 改成 82,看模型是否实时重建。能重建,说明约束链是通的,后面可以放心用。

路径 B:改特征树里的草图。 展开草图,改标注尺寸。这一步要留意草图是否“完全约束”——多数 CAD 会把欠约束的线条标成另一种颜色。欠约束的草图在改大尺寸时会整体“跑位”,孔位跟着漂。发现跑位,就补约束(水平、垂直、同心、距离),直到草图稳定。

路径 C:导出脚本,本地跑。 很多文本生成 CAD 的工具会把结果表示成一段几何脚本(Python + CadQuery/build123d 之类的组合很常见)。把这段脚本存成 bracket.py,本地跑一遍,得到一个和线上完全一致的模型。这条路最省心,因为脚本能进 Git、能做 diff、能批量改参数。

如果三条路都走不通,退一步:导出 STEP,在 FreeCAD 里当作“哑实体”手工改。能改,但下次重生成还得重来,属于兜底方案。

步骤四:用脚本做尺寸与约束校正

这一步是整个流程里最值钱的部分。思路是:把设计意图写成一组“期望值”,让脚本去量模型,对不上就报错。

先装环境:

```bash

python -m venv .venv

source .venv/bin/activate # Windows 用 .venv\Scripts\activate

pip install cadquery

```

下面是一个可以直接照抄的建模脚本,参数全部提到顶部,改数字就能重建:

```python

bracket.py —— 参数化安装块

import cadquery as cq

===== 设计参数:只改这里 =====

L, W, H = 80.0, 40.0, 12.0 # 外形长宽高

FILLET_R = 4.0 # 竖直棱边圆角

HOLE_D = 4.2 # 通孔直径(M4 过孔,按打印机留余量)

HOLE_INSET_X = 10.0 # 孔心距短边

HOLE_INSET_Y = 10.0 # 孔心距长边

POCKET_D = 30.0 # 顶部沉槽直径

POCKET_DEPTH = 6.0 # 沉槽深度

============================

part = (

cq.Workplane("XY")

.box(L, W, H)

.edges("|Z").fillet(FILLET_R) # 先倒竖直棱,避免和孔冲突

)

四角通孔:从顶面往下打通

part = (

part.faces(">Z").workplane()

.pushPoints([

( L/2 - HOLE_INSET_X, W/2 - HOLE_INSET_Y),

(-L/2 + HOLE_INSET_X, W/2 - HOLE_INSET_Y),

( L/2 - HOLE_INSET_X, -W/2 + HOLE_INSET_Y),

(-L/2 + HOLE_INSET_X, -W/2 + HOLE_INSET_Y),

])

.hole(HOLE_D) # depth 省略 = 通孔

)

顶部中心沉槽

part = (

part.faces(">Z").workplane()

.circle(POCKET_D / 2)

.cutBlind(-POCKET_DEPTH)

)

cq.exporters.export(part, "bracket.step")

cq.exporters.export(part, "bracket.stl", tolerance=0.01, angularTolerance=0.1)

print("体积 mm^3:", round(part.val().Volume(), 1))

```

再写一个校验脚本,把“设计意图”变成断言。它读回 STEP,量外形、量圆柱面半径,对不上就打印偏差:

```python

check.py —— 尺寸体检

from cadquery import importers

EXPECT = {"x": 80.0, "y": 40.0, "z": 12.0} # 期望外形

TOL = 0.05 # 允许偏差 mm

shape = importers.importStep("bracket.step").val()

bb = shape.BoundingBox()

actual = {"x": bb.xlen, "y": bb.ylen, "z": bb.zlen}

ok = True

for k, v in EXPECT.items():

d = actual[k] - v

flag = "OK" if abs(d) <= TOL else "偏差超限"

if abs(d) > TOL:

ok = False

print(f"{k}: 期望 {v:.2f} 实际 {actual[k]:.3f} 差值 {d:+.3f} {flag}")

把所有圆柱面的半径列出来,核对孔径与沉槽直径

radii = set()

for f in shape.Faces():

if f.geomType() == "CYLINDER":

for e in f.Edges():

if e.geomType() == "CIRCLE":

radii.add(round(e.radius() * 2, 3)) # 转成直径

print("模型中的圆柱直径:", sorted(radii))

print("整体判定:", "通过" if ok else "需要修正")

```

跑一遍:

```bash

python bracket.py

python check.py

```

输出里应该能看到 Ø4.2 和 Ø30 两个圆柱直径。如果孔径出现 4.0 或者沉槽变成 Ø15,说明某处把直径当半径用了,回步骤三改参数。

关于“约束校正”,有三条实战经验:

  • 尺寸链要闭合。比如孔心距短边 10、孔心距长边 10,隐含了一个约束:孔不能跑到圆角外面去。圆角 R4、孔径 Ø4.2 时,孔边到圆角切点的距离只剩不到 2 mm,再缩小外形尺寸就会破口。脚本里加一条断言更保险。
  • 壁厚要显式检查。沉槽 Ø30 深 6,外形高 12,底部剩 6 mm,够用;如果外形改成 10,底就只剩 4 mm,打印时会翘。把“最小壁厚 ≥ 1.2 mm(3 层 0.4 喷嘴)”写进检查脚本。
  • 配合尺寸单独建表。凡是和别的零件发生关系的尺寸(孔径、槽宽、轴径),单独列成一张表维护,别散落在提示词里。

步骤五:导出 STEP 并做几何体检

STEP 是 B-rep 实体格式,保留精确的曲面与尺寸,是给 CAD/CAE/CAM 用的;STL 是三角网格,是给切片软件用的。两个都要出,但用途不同。

导出后先做三道体检:

```python

mesh_check.py —— 网格体检

import trimesh

m = trimesh.load("bracket.stl")

print("水密:", m.is_watertight) # 应为 True,否则切片可能出空洞

print("法向一致:", m.is_winding_consistent)

print("体积 mm^3:", round(m.volume, 1))

print("包围盒:", m.bounds) # 对照外形尺寸

```

  • 水密(watertight):False 说明网格有破洞或自交,先回 CAD 修,别硬切。
  • 体积:和脚本里 B-rep 的体积对一下,差距在 1% 以内算正常,差很多说明导出公差设太大。
  • 包围盒:核对单位。bounds 显示 80/40/12 就是 mm;显示 3.15/1.57/0.47 说明被当成英寸换算了。

然后在 FreeCAD 里打开 STEP 目视一遍:孔是不是通到底、沉槽有没有穿、圆角有没有破面。这一步花两分钟,能挡掉大部分返工。

步骤六:切片并打印验证

导入 STL 到切片软件,注意两点:

  • 导入时如果弹单位提示,选毫米。
  • 看一眼自动修复提示。多数切片软件会提示“模型存在非流形边”,出现这个提示就回步骤五。

打印参数按常规走:0.2 mm 层高、3 层壁、20% 填充、无需支撑(这个零件顶面朝上、孔轴竖直,天然好打)。想省时间就只打关键区域:把模型沿 XY 切一小块,只保留一个孔和一个圆角,二十分钟出结果。

FDM 有一个绕不开的现象:孔会缩小。喷嘴走圆弧时的路径补偿会让 Ø4.2 的孔实际量出来偏小,通常需要每侧补 0.1~0.2 mm。这是经验值,不同机器、不同材料差异明显,需要自己标定。

打印完用卡尺量三个数:

测量项设计值实测处理
外形长80.0079.85可接受,属收缩
孔径4.204.02每侧补 0.1,改回 4.4
沉槽深6.005.90可接受

把偏差回填到 bracket.py 顶部的参数区,重跑脚本,重打一件。两轮之内基本能收敛。

步骤七:把修正写回提示词与参数

最后一步容易被跳过,但决定了下次能不能更快:把这次踩到的坑写回你的规格模板。

比如原来的提示词里没写“孔必须完全落在平面内、不得与圆角相交”,这次破了口,就补上一句;原来没写“最小壁厚 1.2 mm”,就补上。模板越写越像一张工程任务书,生成的第一版就越接近可用。

同时把 bracket.py、check.py、mesh_check.py 三个文件放进 Git。以后改设计只改参数,diff 一眼就能看出“孔径从 4.2 改成 4.4”,比对着界面截图靠谱得多。

和通用 3D 生成模型的差别

两类工具都能“从一句话出模型”,但解决的问题不在一个层面上:

维度CAD 原生生成(文本/草图 → 参数化实体)通用 3D 生成模型(文本/图像 → 网格)
输出表示B-rep 实体 + 特征树/参数三角网格或隐式场
尺寸精度由参数与约束保证,可精确控制只有大致比例,无法保证具体数值
可编辑性改一个参数,整模型重建多为整体重生成,或局部雕刻
装配配合能做孔轴配合、间隙、尺寸链需要后期手工修
有机造型较弱较强,适合角色、雕塑、外观件
工程交付STEP 可进 CAD/CAE/CAM多为 STL/OBJ,常需修复
典型用途支架、底板、外壳、夹具概念图、游戏资产、艺术造型

一句话总结:要做“装得上、量得准、改得动”的功能件,走参数化 CAD 这条路;要做“看着像”的外观件,通用生成模型更省事。两者不冲突,一个零件完全可以先生成外观网格定形态,再用 CAD 重建关键配合面。

常见坑与排错

  • 提示词太笼统,模型乱猜尺寸。 表现是外形比例大致对、数值全是零头。对策:每个尺寸写数值加单位,孔写 Ø。
  • 直径当半径用。 表现是 Ø4.2 的孔变成 Ø2.1。对策:跑 check.py,看圆柱直径列表。
  • 圆角和孔打架。 表现是孔边缘破口、STEP 导入报错。对策:先打孔后倒角,或加大孔心距;脚本里加最小边距断言。
  • 草图欠约束导致改参数跑位。 表现是长度从 80 改到 82,孔位整体偏移。对策:补水平/垂直/同心约束,直到草图完全约束。
  • 导出的 STEP 单位错乱。 表现是切片软件里模型只有几毫米大。对策:检查导出设置与导入提示,用包围盒校验。
  • 网格不水密。 表现是切片后出现空洞或薄壁。对策:提高 STL 导出精度(减小 tolerance),或回 CAD 修面。
  • 打印出来的孔偏小装不进螺丝。 对策:按机器实测补偿,每侧加 0.1~0.2 mm,做一次孔径标定块。
  • 只在界面里改、不落盘成脚本。 表现是下次重生成又从零开始。对策:导出脚本进 Git,参数集中在文件顶部。

下一步建议

1. 建一个自己的参数模板库。 把安装块、法兰、L 形支架、面板开孔这几类做成模板脚本,新零件从模板改,比从零写提示词快很多。

2. 做一块公差标定片。 一次打出 Ø3.0/3.2/3.4/3.6/3.8/4.0/4.2/4.4 八个孔,量一遍,得到你自己机器的孔径补偿表。以后所有零件的孔径直接查表。

3. 把校验脚本接进流程。 check.py 通过才允许导出 STL,用一条 shell 命令串起来,避免手滑。

4. 试试草图路径。 文本生成适合起步,真正复杂的零件还是“画草图 + 标约束 + 拉伸”更可控。CadQuery 和 build123d 的官方文档都有完整示例,从官方文档当前版本看起。

5. 学一点尺寸链。 知道哪些尺寸是“设计基准”、哪些是“被派生出来的”,改参数时才不会牵一发动全身。这是从“会用工具”到“会做设计”的分界线。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。