硬件工程界长期存在一条默认的鄙视链:基于代码的构造实体几何工具 OpenSCAD 只配用来做玩具积木,真要搞精密配合与复杂曲面,必须依赖边界表示法(B-Rep)与 OpenCascade(OCCT)工业内核驱动的 CadQuery。然而,由 ModelRift 发起的一场无人看管对比实验,直接打破了这个思维定势。

在由 Claude Opus 5 驱动的全自动代码生成评测中,两款工具面对相同的三项机械零件任务,产出的 6 个零件全部通过独立几何解析器检验,达到完全可打印标准。这场实验最大的发现并非谁能做谁不能做,而是在无人介入的自愈循环中,OpenSCAD 的几何重算速度比 CadQuery 快了约两个数量级,直接转化为更短的耗时与更低的 Token 成本。

关键性能对照:OpenSCAD 与 CadQuery 2.8.0 单次几何重算时延 12-43ms OpenSCAD (CadQuery: 1.5-1.9s) 三项任务总耗时 2061s CadQuery 耗时 2406s (+16%) 大模型消耗 Tokens 297k CadQuery 消耗 347k (+17%)

能力上限被抹平:无人闭环里的六件可打印实体

测试设置涵盖了三个递进难度的机械设计任务:带倒角和安装孔的 L 型支架(T1)、必须精密咬合的带卡扣外壳(T2),以及包含真螺旋构造与倒刺的 M24 螺纹软管接头(T3)。六组子代理被要求在没有人类干预的情况下独立迭代,最多修改 12 版,直到输出合格的 STL 网格文件。

无人干预自动生成的六件零件全部通过检验并成功打样
无人干预自动生成的六件零件全部通过检验并成功打样

最终,OpenSCAD 累计生成 473 行代码,CadQuery 累计生成 573 行代码。两边在三项任务中的总版本迭代次数均为 11 次,打成平手。甚至在难度最高的真螺纹接头任务中,OpenSCAD 凭借大模型对基础三角网格顶点的数学推导,单次编译耗时仅 43 毫秒即一次性通过检验;而 CadQuery 尽管代码表述更符合人类工程师的扫掠习惯,却在布尔运算合并时耗费了多轮修正。

决定自主程序收敛生死的,不是内核理论上限有多高,而是报错与重算的反馈阻抗有多低。

这场对比粉碎了传统工程软件的盲目崇拜。在具备代码编写与自愈能力的大模型眼里,OpenSCAD 缺乏原生扫掠或高阶拓扑的短板,完全可以由大模型直接推导 ISO 螺纹截面坐标来代偿。只要最终通过外部解析器验证为无非流形边缘、法向统一且绝对水密的网格实体,生成的零件就能直接送入 3D 打印机。

毫秒与秒的代沟:阻碍 Agent 自愈的底层反馈阻抗

虽然最终零件都达到了可制造状态,两款工具在执行过程中的体感截然不同。OpenSCAD 在接入新的 Manifold 渲染后端后,几何重算延迟被压到了 12 到 43 毫秒的极窄区间;而基于 OpenCascade 的 CadQuery,每次改动代码重新计算几何,耗时都在 1.56 秒到 1.95 秒之间。

轻量网格与沉重拓扑内核在算法自愈闭环中产生巨大阻抗差(示意图)
轻量网格与沉重拓扑内核在算法自愈闭环中产生巨大阻抗差(示意图)

单看一次计算,1.5 秒无足轻重。但当自主代理进入“修改代码-调用内核-生成截面-检查缺陷-再次微调”的多轮循环时,两者的差异被成倍放大。

Code
OpenSCAD  [代码修改] ──> [Manifold: 12-43ms] ──> [即时反馈] ──> 快速收敛
CadQuery  [代码修改] ──> [OCCT B-Rep: 1.5-1.9s] ──> [拓扑推导] ──> 时延累积

重算时延相差约两个数量级,直接导致 CadQuery 整个运行流程耗时达到 2406 秒,较 OpenSCAD 的 2061 秒高出 16%;伴随等待重试所产生的长上下文交互,使 CadQuery 的 Token 消耗量攀升至 347k,较后者的 297k 增加了 17%。

在自主编程的闭环中,内核重算延迟实质上构成了算法收敛的阻抗。极度轻量、快速反馈的系统,即使在几何表达上需要多写几行基础数学,也能用极低的探索成本帮助模型在数秒内试错收敛;而重量级的工业内核每走一步都要背负沉重的拓扑校验开销。

两种建模内核的典型失败模式分布 OpenSCAD:静默错误为主 显式报错:2 次 静默几何错误:5 次(高隐患) 网格标为 NoError 但存在局部干涉或穿孔 CadQuery:显式崩溃为主 显式报错:5 次(早阻断) 静默几何错误:4 次 退化切割、倒角越界直接抛出异常中断

显式崩溃与静默欺骗:两种建模哲学的失败代价

评测真正拉开质感差距的地方,在于程序失败时的姿态。

螺纹接头因布尔运算失误导致内芯丢失,实际体积缩水三成(剖面示意)
螺纹接头因布尔运算失误导致内芯丢失,实际体积缩水三成(剖面示意)

在三项任务的总统计中,OpenSCAD 仅引发了 2 次工具显式报错,却出现了 5 次静默几何错误;CadQuery 出现了 5 次显式报错,静默几何错误则为 4 次。

对于无人看守的流水线,显式报错反而是廉价的。在 T1 支架任务中,CadQuery 因为壁厚不足以容纳两个 3 毫米倒角直接抛出异常中断,强制大模型折半查找并修正尺寸。相反,OpenSCAD 在 T2 外壳任务中历经数十次调用,终端始终返回没有错误,但实际上内部已经生成了被错误布尔差集剔除的固定柱,甚至导出了带有非流形缺陷的损坏网格。

更具戏剧性的是 T3 任务。CadQuery 在将螺旋外螺纹与圆柱核心进行布尔合并时,由于接触面完全共面切向,底层引擎无声无息地丢弃了整个内芯圆柱体,外部视觉渲染完美无瑕,内核自身甚至标记实体有效。最终逼迫大模型识别出故障的,并非视觉检查,而是一行针对体积计算的断言:预期 10323 立方毫米的实体只剩下了 7065 立方毫米。

  • 风险.若缺乏断言与外部无差错解析器,大模型仅凭渲染图像与内核进程退出码,极易被看似完美的零件截图欺骗,导致废品直接下发生产设备。

打印自由不是工程交付:网格与拓扑的现实分水岭

必须客观看待这次评测的边界条件。虽然 ModelRift 证明了在 3D 打印这种以离散网格(STL)为终点的场景下 OpenSCAD 兼具性价比与韧性,但这并不意味着工业界可以抛弃基于 B-Rep 的 CadQuery。

离散三角面片打样与连续数学曲面加工构成了工程交付的分水岭
离散三角面片打样与连续数学曲面加工构成了工程交付的分水岭

在学术界与工业界,BenchCAD 等基准测试收录了超过 17,900 个经执行验证的 CadQuery 程序,覆盖 106 个工业零件族。这背后的核心原因在于工程供应链的真实需求:注塑模具制造、高精度数控机床加工与大型装配工程,本质上依赖保留完整拓扑关系、曲面数学方程与公差配合的 STEP 格式,而非丢失了特征历史的三角面片。

此外,大模型在代码生成时的表现带有隐性先验偏差。OpenSCAD 在开源互联网上拥有更为庞大的历史代码沉淀,大模型对其语法的熟悉程度本就优于 CadQuery。

自动化机械设计的演进不会是一方彻底淘汰另一方的零和博弈。对于需要极速迭代、无人值守的硬件打样与外形探索,OpenSCAD 凭借毫秒级的响应速度展现出极高的探索效率;而涉及工程图样交换、多部件装配公差推导的深水区,B-Rep 内核的数学精确性仍是不可逾越的护城河。