
1. 从一句话到三维模型text-to-cad 到底在解决什么问题第一次听到 “text-to-cad” 这个词很多人脑子里冒出来的画面大概是对着电脑敲一句“给我画一个法兰盘”然后屏幕上就自动出现一个可以旋转、可以导出、可以拿去加工的 3D 模型。这个想象不算离谱但也不完全准确。text-to-cad 本质上是一类把自然语言描述转换成计算机辅助设计CAD可识别几何数据的技术方案集合它的输出通常不是一张图片而是结构化的三维模型文件比如 STEP、URDF、G-code 等格式。换句话说它要解决的是“人用嘴说需求机器用几何语言建模”之间的那道鸿沟。我做机械设计和自动化项目有些年头了早期画一个简单的支架、连接件、钣金件哪怕尺寸都算好了还是得在 CAD 软件里一步步拉伸、切除、倒角、打孔。一个中等复杂度的零件从草图到出图两三个小时是常态。text-to-cad 吸引我的地方就在于它试图把“重复性建模劳动”压缩成“描述性输入”。你描述清楚功能、尺寸约束、装配关系系统帮你生成初版几何你再在此基础上微调。这对做快速原型、批量改型、教学演示、甚至自动化产线夹具设计的人来说价值非常直接。这篇文章适合谁看如果你是机械工程师、工业设计师、机器人方向的学生、做数字孪生的开发者或者只是对“AI 能不能帮我画图”这件事好奇的爱好者都能从下面这些内容里找到能直接上手的东西。我会把 text-to-cad 的核心思路、常见输出格式、实操流程、踩坑经验拆开讲清楚尽量让你看完就能自己跑一遍。2. text-to-cad 的核心思路与方案选型2.1 为什么不是“直接生成图片”而是生成几何数据很多人第一次接触这类工具会下意识觉得“生成一张三维渲染图不就行了吗”。但 CAD 的用途决定了它不能只停留在“看起来像”。一张渲染图没有尺寸、没有拓扑关系、没有特征历史你没法拿它去加工也没法导入仿真软件做应力分析。text-to-cad 真正要产出的是参数化或边界表示B-rep的几何体这样后续才能被 CAD 软件识别、被 CAM 软件生成刀路、被机器人仿真环境加载。这就引出一个关键分叉是生成网格模型mesh比如 STL、OBJ还是生成实体模型solid比如 STEP、IGES网格模型生成门槛低很多基于深度学习的方案直接输出三角面片但网格模型在工程上有个致命问题——它没有精确的曲面定义一个圆柱面会被离散成很多小三角面尺寸公差和表面质量都没法保证。实体模型则保留了数学曲面可以精确测量、可以布尔运算、可以导出工程图。所以真正面向工程落地的 text-to-cad 方案目标一定是 STEP 这类实体格式。2.2 三条主流技术路线对比目前能见到的 text-to-cad 实现大致可以归为三类各有各的适用场景。路线核心原理输出格式优点局限代码驱动型大模型生成 CAD 脚本如 CadQuery、OpenSCADSTEP、STL可控性强、可参数化、易复现依赖脚本能力复杂曲面吃力直接几何生成型神经网络直接预测 B-rep 或点云STEP、网格端到端、适合自由曲面训练数据要求高、稳定性差检索装配型从零件库匹配并组合标准件STEP、URDF工程实用、速度快创新形状受限、依赖库覆盖代码驱动型是我个人最推荐新手入门的路线。它的逻辑很朴素让大语言模型把自然语言翻译成 CadQuery 或 OpenSCAD 代码然后由这些成熟的几何内核去执行代码、生成实体。这样做的好处是几何运算交给专业内核模型质量有保障同时代码本身可读、可改、可版本管理。你甚至可以把生成的脚本存下来下次改个参数就能复用。直接几何生成型更“AI 原生”但目前在工程精度上还不够稳。我试过一些开源方案生成简单方块、圆柱还行一旦涉及倒角、螺纹、薄壁结构拓扑错误率明显上升。检索装配型则更像“智能标准件库”适合做机器人 URDF 这种由大量标准连杆和关节组成的模型。2.3 输出格式怎么选STEP、URDF、G-code 的分工热词里同时出现了 STEP、URDF、G-code这三个格式其实对应了 text-to-cad 在不同下游环节的落地方式不能混为一谈。STEP是中性几何交换格式几乎所有 CAD 软件都能打开适合做零件设计、装配验证、出工程图。你让 text-to-cad 生成一个“带四个安装孔的矩形底板”最终交付物大概率应该是 STEP。URDF是机器人描述格式它描述的不只是几何还包括连杆之间的关节类型、运动范围、惯性参数。做机器人仿真时你需要的是 URDF 而不是单纯的 STEP。text-to-cad 在这里的价值是把“一个两自由度机械臂”这样的描述转成带关节定义的模型树。G-code是数控加工指令它描述的是刀具路径不是几何本身。严格说 text-to-cad 不直接生成 G-code而是先生成几何模型再由 CAM 模块生成 G-code。但有些集成方案会把这一步串起来让你从一句话直接得到可加工的刀路文件。理解这三者的分工能帮你在选型时不至于被“一句话生成模型”的宣传带偏。你要先想清楚我最终是要拿去加工、拿去仿真还是只是要个可视化模型3. 核心细节解析与实操要点3.1 自然语言描述怎么写才“可建模”text-to-cad 的效果很大程度上取决于你怎么描述。我见过太多人输入“帮我画个好看的盒子”然后抱怨生成结果不对。问题不在工具在于描述里缺少几何约束。一个可建模的描述通常要包含这几个要素基本形状、关键尺寸、特征位置、约束关系、输出格式。举个例子对比下面两种描述差“画一个安装板”好“画一个长 120mm、宽 80mm、厚 6mm 的矩形安装板四角各有一个直径 6mm 的通孔孔中心距边缘 10mm材料默认导出 STEP”第二种描述里尺寸、特征、位置、格式都齐了生成成功率会高很多。如果涉及装配还要说明配合关系比如“轴直径 20mm与孔为间隙配合间隙 0.2mm”。提示描述里尽量用工程术语比如“通孔”“沉头孔”“倒角”“圆角”“阵列”这些词在训练数据里出现频率高模型理解更准。3.2 参数化建模让生成结果可改而不是一次性text-to-cad 生成的东西如果是一次性的那价值有限。真正好用的是参数化脚本。比如你用 CadQuery 生成一个法兰盘脚本里应该有outer_dia、inner_dia、bolt_count、bolt_circle这些变量。这样下次要改规格不用重新描述直接改变量就行。我在实际项目里会要求生成的脚本必须把关键尺寸提取成变量并且加上注释。这样做有两个好处一是方便自己改二是方便团队其他人接手。一个没有参数的脚本和一张没有标注的图纸一样基本没法复用。3.3 几何内核的选择与影响代码驱动型方案背后依赖几何内核常见的有 OpenCASCADECadQuery 用的就是它、CGAL、OpenSCAD 自带的 CSG 内核。OpenCASCADE 在实体建模上更成熟支持倒角、圆角、布尔运算、曲面放样适合工程零件。OpenSCAD 的 CSG 内核更简单适合做规则几何体但复杂曲面和精细倒角容易出问题。如果你要做的是机械零件优先选基于 OpenCASCADE 的方案。如果你只是做教学演示、简单拼装OpenSCAD 也够用。这个选择会直接影响你能生成什么形状以及生成结果的稳定性。3.4 从文本到脚本的提示工程要点让大模型生成 CAD 脚本提示词的设计很关键。我总结了几条实用经验明确指定目标库和版本比如“用 CadQuery 2.x 写一个脚本”要求脚本包含参数定义区、建模区、导出区结构清晰要求处理单位默认用毫米要求加异常处理比如尺寸为负时给出提示要求导出前做有效性检查比如solid.isValid()这些要求看起来琐碎但能显著减少你拿到脚本后调试的时间。我早期偷懒只写“生成一个齿轮”结果拿到的脚本连模数都没定义根本没法用。4. 实操过程与核心环节实现4.1 环境准备Python 与 CadQuery 安装下面以代码驱动型路线为例走一遍完整流程。你需要一个 Python 环境建议 3.9 以上。CadQuery 可以通过 pip 安装pip install cadquery如果你要用它的可视化功能还需要装cadquery[vis]或者配合 Jupyter 使用。安装过程中如果遇到 C 编译错误通常是缺少构建工具Windows 上装 Visual Studio Build ToolsLinux 上装build-essential即可。注意CadQuery 依赖 OpenCASCADE首次安装体积较大网络慢的话建议配置国内镜像源。4.2 用自然语言生成建模脚本假设我要一个“带中心孔和四个安装孔的圆形法兰盘”。我把这个需求交给大模型并附上格式要求。得到的脚本大概长这样import cadquery as cq # 参数定义 outer_dia 100.0 # 外径 mm inner_dia 40.0 # 中心孔直径 mm thickness 10.0 # 厚度 mm bolt_dia 8.0 # 安装孔直径 mm bolt_circle 75.0 # 安装孔分布圆直径 mm bolt_count 4 # 安装孔数量 # 建模 result ( cq.Workplane(XY) .circle(outer_dia / 2) .extrude(thickness) .faces(Z) .workplane() .hole(inner_dia) .faces(Z) .workplane() .polarArray(bolt_circle / 2, 0, 360, bolt_count) .hole(bolt_dia) ) # 有效性检查 solid result.val() print(模型有效:, solid.isValid()) # 导出 cq.exporters.export(result, flange.step)这段脚本里参数区、建模区、检查区、导出区一目了然。你可以直接改outer_dia之类的变量来调整规格。4.3 参数计算与选择过程上面脚本里有几个参数不是随便定的。安装孔分布圆直径 75mm是在外径 100mm 和中心孔 40mm 之间取的中间值保证孔壁到外缘和到中心孔都有足够材料。安装孔直径 8mm 对应常见的 M8 螺栓如果是 M6 就改成 6.5mm 左右留间隙。厚度 10mm 是经验值实际要根据受力计算但作为初版模型够用。这种“先按经验给初值再根据实际工况调整”的做法在 text-to-cad 流程里很常见。工具帮你省掉的是建模操作不是工程判断。尺寸合不合理还得你自己把关。4.4 导出与验证STEP 文件的检查脚本跑完后会生成flange.step。别急着拿去用先做几项检查用 CAD 软件打开确认实体是封闭的不是曲面片测量关键尺寸看是否和参数一致检查孔位是否对称、是否在正确平面上如果是装配件检查干涉我遇到过一次生成的模型在 CadQuery 里显示正常但导入某 CAD 软件后孔变成了实心原因是布尔运算的顺序有问题。后来在脚本里调整了hole的调用顺序才解决。所以导出后的验证不能省。4.5 从 STEP 到 URDF 的转换思路如果你做机器人仿真需要把 STEP 转成 URDF。这一步通常要借助额外工具比如phobosBlender 插件或者自己写脚本解析几何、定义关节。text-to-cad 在这里的作用是先生成各个连杆的几何再由你或工具补充关节定义。URDF 里的关节类型revolute、prismatic、fixed、运动轴、限位这些目前还得人工确认不能全指望自动生成。4.6 G-code 生成几何之后的 CAM 环节拿到 STEP 后导入 CAM 软件如 FreeCAD 的 Path 工作台设置刀具、切削参数、坐标系才能生成 G-code。text-to-cad 不直接产出 G-code但它能帮你快速得到几何省掉建模时间。对于简单零件整个链路可以压缩到十几分钟。5. 常见问题与排查技巧实录5.1 生成脚本报错怎么办最常见的报错是 API 用法不对比如 CadQuery 不同版本之间方法名有变化。排查顺序是先看报错行确认方法是否存在再查官方文档对应版本最后简化脚本逐步排除。我习惯先把建模部分注释掉只留一个最简单的box确认环境没问题后再逐步加回。5.2 模型拓扑错误与修复拓扑错误表现为实体不封闭、面重叠、自相交。CadQuery 里可以用isValid()检查但有些问题它查不出来。修复方法包括调整布尔运算顺序、给倒角留足够空间、避免零厚度特征。如果实在修不好可以导出 STL 用网格修复工具处理但那样就丢失了实体精度。5.3 尺寸偏差与单位问题单位混乱是新手常踩的坑。CadQuery 默认单位是毫米但如果你从其他地方复制代码可能混入英寸。生成后一定要测量。另外浮点误差可能导致尺寸差零点几微米一般不影响使用但如果做精密配合要在脚本里做圆整。5.4 常见问题速查表问题现象可能原因解决方向脚本报 AttributeErrorAPI 版本不匹配查对应版本文档替换方法名模型不封闭布尔运算顺序错误调整 hole/cut 调用顺序孔变成实心工作平面选错确认 workplane 所在面导出 STEP 失败实体无效先 isValid 检查修复后再导出尺寸对不上单位混用统一为毫米检查参数倒角失败倒角大于相邻面减小倒角值或调整顺序5.5 独家避坑经验第一条永远保留生成脚本。模型可以重新生成脚本丢了就得重来。第二条参数命名要见名知意别用a、b、c用plate_length、hole_dia。第三条复杂模型分步生成先做主体再加特征每步验证别一次性写完再跑。第四条导出前做一次完整测量我吃过亏一个孔位偏了 2mm加工出来直接报废。6. 工具选型与生态现状6.1 代码驱动工具对比CadQuery 和 OpenSCAD 是最常见的两个选择。CadQuery 基于 Python适合工程零件支持实体建模和 STEP 导出。OpenSCAD 语法更简单适合规则几何和教学但导出 STEP 需要额外转换。如果你要工程落地选 CadQuery如果只是玩玩OpenSCAD 上手更快。6.2 与现有 CAD 软件的配合text-to-cad 不是要取代 CAD 软件而是做前端生成。生成的 STEP 可以导入中望 CAD、FreeCAD、SolidWorks 等做后续编辑。你也可以把生成的脚本作为宏在支持脚本的 CAD 里运行。这种“AI 生成 人工精修”的模式目前最实用。6.3 自动化批量改型的价值热词里有“python批量对cad修改”这正好是 text-to-cad 的强项。你可以写一个循环读入参数表批量生成不同规格的零件。比如一系列不同长度的支架只要改一个变量跑一遍脚本几十个 STEP 文件就出来了。这种效率提升是手工建模没法比的。7. 影响范围与适用场景分析text-to-cad 的影响面比很多人想的要广。在机械设计里它加速概念验证和改型设计在机器人领域它帮助快速生成 URDF 做仿真在教育里它降低建模门槛让学生专注设计逻辑而不是软件操作在自动化产线它支持夹具和工装的快速迭代。甚至在家装、手工领域你描述一个置物架也能生成可加工的模型。但它也有边界。高精度配合、复杂曲面、特殊工艺要求目前还得靠人工。把它当成一个高效的“初稿生成器”和“重复劳动替代器”心态就对了。8. 我个人的实操体会用了一段时间 text-to-cad我最大的感受是它改变的不是“能不能画”而是“画得多快”。以前一个改型要半小时现在改个参数跑脚本一分钟出图。但前提是你得把参数和逻辑理清楚描述写明白。工具再强也替代不了工程判断。我现在的习惯是让 text-to-cad 出初版自己再做一轮尺寸校核和工艺检查这样既快又稳。如果你刚开始尝试建议从简单零件入手把脚本结构和参数化思路摸熟再逐步上复杂度。