事实证明,LLM 可以为简单的 3D 机械零件制作 CAD 模型。而且,我认为他们很快就会非常擅长。
AI 机械工程师
代码生成是 LLM 的第一个突破性应用。机械工程的 AI 代理会是什么样子?材料选择、制造设计、计算机辅助制造 (CAM) 和现成的零件比较都是 AI 机械工程师的重要特征。也许,最重要的是,AI 机械工程师会设计和改进 CAD 模型。机械工程师通常使用点击式软件(例如 Fusion 360、Solidworks 和 Onshape)设计 CAD。AI 如何生成这些实体模型?
代码生成与 CAD 的结合
一个有前途的方向是在数百万个现有 CAD 文件上训练生成模型。多个团队正在积极研究这种方法,他们正在研究 diffusion 和 transformer 架构。我特别喜欢 Autodesk Research 将参数化基元(点、曲线、形状、挤出等)编码为 transformer 架构的方法。然而,据我所知,这些项目中的模型还不能接受任意的输入命令并生成所需的形状。
然后几周前,我受到了最近使用 LLM 来驱动 Blender 的启发,Blender 是广泛用于动画的开源建模工具。鉴于 LLM 非常擅长生成代码,也许 CAD 建模的编程接口可以以类似的方式用于生成实体模型。我立即想到了 OpenSCAD,这是一个开源的编程 CAD 工具,已经开发了 15 年多。用户无需使用点击式软件来创建实体模型,而是编写软件脚本,然后将其渲染到实体 CAD 模型中。
LLM 在编写 OpenSCAD 方面表现优异
为了测试它,我在 Cursor 中创建了一个简单的项目,制作了一个空白的 OpenSCAD 脚本 (Cursor.scad),并添加了一些 Cursor 规则:
# Your rule content
- We're creating files to model things in open scad.
- All the OpenScad files you create will be in Cursor.scad. I've set up this file such that if you edit it, it will automatically be read by OpenScad (it's the open file in the program).
- If I want to save what you've done, I'll tell you and you should create a new file and put it in the Saved folder.
- That's it! Overtime, if needed, we could create documentation about how to use OpenScad.
- If I'm asking you to create a new design, you should delete the current contents of cursor.scad and add the new design into it.
- When I make requests you should always first develop a step by step plan. Then tell me the step by step plan. And then I'll tell you to start modeling.
- When you're going through the step by step plans, only execute one step at a time.
- When you've executed a step, ask the user if its right.
然后,我开始使用 Cursor 创建实体模型。
这是一个例子:“创建 iPhone 保护套”。
它并没有在第一次尝试时就搞定它,但通过几次迭代(包括给它截图),我们创建了一个基本案例。
您还可以利用 OpenSCAD 库(有许多公共库)。在这里,我使用一个库为法兰创建螺纹。
非常巧妙的一件事是 LLM 可以使用其机械工程的一般知识。例如,在上面,Cursor 在 M6 螺栓的管道上创建了孔,并正确地使直径略大于 6 mm,以便螺栓可以穿过。
bolt_hole_d = 6.5; // Diameter for M6 bolts
当然,这种方法的一个真正好处是文件是可编辑的,并且 Cursor 默认参数化设计的所有关键元素。在上面的示例中,我要求它添加用于安装螺栓的孔,它做到了,然后我手动将孔的数量从 4 编辑为 3。
// Flange parameter
flange_OD = 50; // Outer diameter of the flange in mm
flange_thickness = 10; // Thickness of the flange in mm
pipe_size = 1/2; // NPT Pipe Size
// Bolt hole parameters
num_bolts = 3;
bolt_hold_d = 6.5; // Diameter for M6 bolts
bold_hole_circle = 35; // Diameter for the bolt circle
构建 LLM 评估 -> OpenSCAD -> STL
这些初步结果给我留下了深刻的印象,但我想了解更多。例如,模型的推理能力是否帮助它思考了创建零件的步骤?因此,我决定开发一个评估来测试各种 LLM 在通过 OpenSCAD 生成实体模型时的性能。
为 CAD 设计创建 eval 的挑战之一是大多数任务都有很多正确答案。例如,诸如“制作一个 10 毫米长的 m3 螺钉”之类的任务可能有很多正确答案,因为任务中没有定义头部的长度、直径和样式。考虑到这一点,我决定在我的 eval 中编写任务,以便对几何只有一个、正确的解释。
例如,以下是 eval 中的任务之一:
这是一个 3mm 厚的矩形板,有两个孔。
该板的尺寸为 18 毫米 x 32 毫米。
当低头看板时,它有两个钻孔。在板的左下角,有一个孔,中心点距短边 (3mm) 3 毫米,距长边 (32mm)。这个孔的直径为 2 毫米。
在板的左上角,大约有一个直径为 3 毫米的孔。其中心点距短边(18 毫米边)8 毫米,距长边(6 毫米)6 毫米。
这种方法的好处是,我们可以将每个任务评分为“通过”或“失败”,并且我们可以以自动化的方式进行评分。我总共编写了 25 个 CAD 任务,难度从单个作(“一根 50 毫米长的管道,外径为 10 毫米,壁厚为 2 毫米”)到 5 个连续作不等。对于每项任务,我都使用 Autodesk Fusion 360 设计了一个参考 CAD 模型,然后导出了一个 STL 网格文件。
然后,我开始对自动化评估管道进行编程(当然,我实际上并没有写太多代码)。
以下是 eval 流水线的工作原理:
- 对于每个任务和模型,评估通过 API 将文本提示(以及系统提示)发送到 LLM。
- LLM 发回 openSCAD 代码。
- openSCAD 代码被渲染成 STL
- 生成的 STL 将根据参考 STL 自动检查
- 如果任务通过了许多几何检查,则任务“通过”。
- 然后,结果将输出到仪表板中。
[注意:评估为每个任务 x 模型组合运行多个重复。并且 eval 是并行执行的,因为在运行完整评估时可能有 1000+ 个任务。
以下是几何检查的工作原理:
- 生成的 STL 和参考 STL 使用迭代最近点 (ICP) 算法进行对齐。
- 然后,通过以下方法比较对齐的网格:
- 它们的体积(通过 = <2% 差异)
- 它们的边界框 (pass = <1 mm)
- 零件之间的平均倒角距离 (通过次数 = <1 mm)
- Hausdorff 距离(95% 百分位数)(通过 = <1 mm)
- 要 “pass” eval,必须通过所有几何检查。
eval pipeline 在几个方面有待改进。特别是,假阴性很常见 (est: ~5%)。我还注意到,有时,自动几何检查不会捕获不正确的小特征(如小半径圆角)。尽管如此,eval 管道仍然足够好,可以看到有趣的结果并比较各种 LLM 的性能。
如果您想了解有关 eval 的更多信息、使用它或查看任务,请查看 GitHub 存储库。
最后,有多种方法可以改进评估。以下是我接下来想做的一些事情:
- 更多任务,覆盖范围更广
- 优化系统提示,特别是通过添加 OpenSCAD 文档和代码片段
- 创建使用 Sketch 和 Drawing 作为输入的 eval 变体
- 添加另一个变体,用于测试 LLM 向现有 OpenSCAD 脚本和 STL 添加作的能力
- 评估 LLM 修复现有 STL / OpenSCAD 代码中错误的能力
前沿模型的快速改进
以下是 2025 年 4 月 22 日执行的评估运行的结果。在评估运行中,在 25 个任务上测试了 15 个不同的模型,其中 2 个重复是任务。运行的所有结果和配置详细信息都可在此处获得。
结果表明,LLMs 最近才开始擅长 OpenSCAD 实体建模。

前 3 个模型都是在我从事该项目时推出的,前 7 个模型都是推理模型。与之前的 Non-Reasoning 模型相比,这些模型的性能大幅提升。Sonnet 3.5 是最好的非推理模型,而 Sonnet 3.7 在 eval 中的表现仅略好一些(对于 Sonnet 3.7,使用 thinking 的预算为 2500 个令牌)。
深入研究结果提供了一些有趣的见解。首先,LLM 非常擅长生成正确编译并且可以渲染为 STL 的 OpenSCAD 代码。换句话说,只有一小部分失败来自 OpenSCAD 语法错误等原因。Anthropic 的 Sonnet 模型在这方面是最好的。

此外,我们可以查看渲染了 STL 的任务的成功率。o3-mini 非常强大,成功率与全尺寸 o3 型号几乎相同,而 Sonnet 3.7 似乎落后于领先的 Gemini 2.5 Pro 和 o1、o3、o4-mini 和 o3-mini 型号。

最后,可以预料的是,Gemini 2.5 和 o4-mini 比完整的 o3 和 o1 型号便宜得多,运行速度也略快。


正如预期的那样,有些任务很容易,有些任务很难完成。

一般来说,作越多的任务,我们就越有挑战性。

任务 2、任务 3 和任务 6 是最简单的任务,各个模型的正确率超过 80%。以下是这些任务的成功示例。



只有 2 个任务的成功率为 0%,即任务 11 和任务 15。以下是这两项任务和代表性失败的提示。


这些失败既有趣又截然不同。任务 11 是空间推理不佳的一个很好的例子。在图像中突出显示的特定失效中,模型将吊环螺栓的柄与圆环面正交(而不是在同一平面中)拉伸。任务 15 是不同的失败模式。在附图中很难看到,但如果您仔细放大,很明显生成的形状比参考形状略大(这是有道理的,因为生成的 STL 未通过体积检查)。从这个例子的 OpenSCAD 代码来看,失败似乎是由于使用了 OpenSCAD 的 hull作,这与放样作并不完全相同。OpenSCAD 没有内置放样作。
任务 20-24 都需要 5 次连续作,这些任务的平均成功率在 3.3% 到 30% 之间。以下是这 5 个任务的提示,这些任务具有代表性的成功和失败。
失败可能很难发现。失败图像的绿色区域在生成的 STL 中应该有几何图形,但没有(参考点云以绿色绘制)。同样,红色区域在生成的 STL 中具有几何图形,但它们不应该。





初创企业
在过去的几个月里,两家不同的初创公司推出了文本到 CAD 产品 AdamCad 和 Zoo.dev。Zoo.dev 提供了一个 API 来使用他们的文本到 CAD 模型。Zoo 的 API 和文本到 CAD 产品的演示非常酷,看起来与我上面的 Cursor -> OpenSCAD 演示非常相似。
我将 Zoo 添加到评估管道中,以便与 LLM -> OpenSCAD -> STL 进行比较。Zoo.dev API 不是生成 OpenSCAD,而是直接触发 STL。Zoo 表示,他们使用专有的数据集和机器学习模型。令我惊讶的是,与通过创建 OpenSCAD 生成 STL 的 LLM 相比,Zoo 的 API 性能并不是特别好。尽管如此,我还是很高兴看到 Zoo.dev 的发展,我渴望看到 Zoo.dev 未来推出的模型与创建 OpenSCAD 的 LLM 相比如何。
下一步是什么?
我认为这些初步结果是有希望的。Cursor(或其他编码代理)+ OpenSCAD 提供了一种以自动化方式生成实体模型的解决方案。
但是,我认为这种方法不会在 CAD 设计生态系统中迅速发展和传播。目前的设置非常笨拙,我认为需要大量的产品改进才能使这项工作变得更好。与 Cursor、Windsurf 和其他工具为代码生成开发特定的 UX 和 LLM 工作流程类似,我认为开发对 CAD 生成有意义的工作流程和 UX 将需要大量的工作。以下是我认为值得朝着这个方向追求的一些想法:
- 将控制台日志和视口图像从 OpenSCAD 引入 Cursor 以进行迭代改进和调试的工具。
- 一个 UI,用于突出显示(和测量)零件的某些面、线条或方面,这些面、线或方面被馈送到 LLM 以获取额外的上下文。
- 绘图或草图输入,以便用户可以快速直观地传达他们的想法。
- 带有滑块的 UI,用于调整参数而不是编辑代码。
此外,我预计进一步的模型进步将继续解锁此应用程序。特别是,改进空间推理是一个活跃的研究领域。我认为改进的空间推理可以大大提高模型逐步设计零件的能力。
那么,文本到 CAD 何时成为机械工程师的常用工具呢?随着初创企业积极构建产品和前沿模型的快速改进,我猜测大约是 6-24 个月。
这去哪儿了?
从中长期来看(2-10 年),我想象大多数零件都将使用某种形式的 GenCAD 创建。请允许我推测。
- 最初,GenCAD 将用于创建适合现有组件的零件。例如,您可能会说:“我需要一个适合这里的支架。而且,GenCAD 工具将创建一个与现有装配组件完美连接的支架。想要使用 FEA 分析三种变体吗?询问他们。我希望主流 CAD 套件(Autodesk、Solidworks、Onshape)能够将这些功能直接添加到他们的产品套件中。
- 从长远来看,我认为 GenCAD 将涵盖 CAD 套件的各个方面:草图、配合、装配、爆炸视图、CAM 刀具路径、渲染可视化和 CAE。想象一下,在一次设计审查中,您突出显示了一个子装配体,并说“用 M6 沉头螺钉替换这些铆钉并重新生成 BOM”。模型、图纸和采购电子表格都会在几秒钟内更新。
我们正在看到 CAD 开始退出手动输入时代。我对此感到非常兴奋。
内容中包含的图片若涉及版权问题,请及时与我们联系删除
评论
沙发等你来抢