Zero-to-CAD:无需真实数据、面向百万规模的可解释 CAD 程序的智能体合成 Zero-to-CAD: Agentic Synthesis of Interpretable CAD Programs at Million-Scale Without Real Data
LLM 智能体闭环合成百万级可执行 CadQuery CAD 序列,无需任何真实历史数据。
前置知识
CAD 构造历史 (Construction Sequence / Construction History)
CAD 模型不仅是一个最终几何形状,而是一串可重放的参数化操作(画草图、拉伸、倒角、布尔运算等),每步都带有命名参数、约束和引用关系,等同于'设计意图'的程序化表达。
本文核心论点正是现有 3D 数据集普遍只提供 B-Rep 或网格,丢失了这种程序化历史,导致 CAD AI 无法学习真正的设计意图;理解这个概念才能抓住论文动机。
边界表示 (B-Rep) 与网格 (Mesh)
B-Rep 用面、边、顶点的拓扑关系加解析曲面描述实体;Mesh 用三角面片离散化表面。二者都是最终几何快照,不携带建模过程。
论文把 ABC、Objaverse 这类仅含 B-Rep/Mesh 的大规模数据集作为对比基线,凸显它们无法支持序列生成任务。
CadQuery 与参数化编程建模
CadQuery 是基于 Python 的开源参数化 CAD 库,把 OpenCascade 内核封装为脚本 API,允许用代码构建草图、拉伸、布尔、倒角等操作并导出 STL/STEP。
整篇论文的合成目标就是生成可执行的 CadQuery 代码而非底层 B-Rep;理解其编程模型才能看懂代码生成与验证流程。
LLM 智能体 (Agentic LLM) 与工具调用
把大语言模型放入'思考—调用工具—观察结果—再思考'的循环,让模型用函数调用 (Function Calling) 查询文档、执行代码、读取反馈,从而完成开放式生成任务。
Zero-to-CAD 的核心技术就是这种闭环:模型写 CadQuery 代码→执行→若失败则查文档→修复→再次执行;这是与传统一次性生成的关键差异。
视觉语言模型 (VLM) 与图像到代码任务
VLM 把视觉编码器与语言解码器相连,可把图像转成文本/代码。'图像到序列 (Image-to-Sequence)' 指给定多视图图像直接输出可执行建模代码。
论文用合成的百万序列微调 Qwen3-VL-2B 来做图像到 CAD 代码的重建,并与 GPT-5.2 等强基线对比,是验证数据集价值的核心实验。
研究动机
CAD AI 训练面临严重的数据缺口:尽管 ABC、Koch 2019 提供了一百万级 B-Rep、Objaverse 提供了海量 3D 模型,但它们都丢失了构造历史——即'设计意图'的参数化程序。少量保留历史的公开数据集如 DeepCAD(178k 条且去重后仅 114,985 条)、Fusion 360 Gallery(仅 8.6k 条)几乎都局限于'草图+拉伸'这一狭窄操作词汇,无法表达真实机械零件中常见的倒角、圆角、布尔运算、抽壳、扫掠、阵列等核心特征。CC3D-Ops 虽提供操作标签但不是可重放程序,CAD-Recode 虽生成百万级代码却是坐标链式的硬编码转译,缺乏语义参数。更糟的是,专业 CAD 历史数据被闭源格式与内核兼容性壁垒(Heidari & Iosifidis 2024; Lin et al. 2025)锁死。因此业界同时缺少大规模、可执行、可读、可编辑且操作多样的 CAD 序列语料。
本文的目标是本文目标是构建一个完全无需真实 CAD 历史数据的合成框架 Zero-to-CAD,用 LLM 智能体闭环地自动产出约一百万条可执行、可读、可编辑的 CadQuery 构造序列,覆盖真实机械零件所需的丰富操作(倒角、圆角、布尔、抽壳、扫掠、阵列等);同时配套发布一个按几何多样性精选的 10 万条子集、可直接预训练的下游视觉语言模型以及完整推理代码,使社区能在没有真实数据的前提下训练 CAD 序列生成模型,并通过图像到代码的下游任务验证合成数据的可用性。
与已有工作不同的是,已有工作的盲区在于把 CAD 数据获取当作'采集'问题,本文则把它重新框定为'智能体搜索'问题:用 gpt-oss-120b 作为在 CadQuery 环境内具备工具访问(执行验证、TF-IDF 文档检索、正则查询)的智能体,通过提示变分与 API 感知校验在广阔的机械零件空间里采样,并强制要求'可读+可编辑'(命名参数、对称性、可制造特征),从而在操作多样性、代码可读性、规模三个维度上同时超越 DeepCAD/Fusion 360 Gallery(量小且词汇窄)与 CAD-Recode(量大但缺乏语义结构)。
核心方法
直觉上,与其寻找稀缺的'带历史的 CAD 文件',不如利用 LLM 已从文本中学到的机械设计常识('支架需要安装孔'、'轴需要键槽'),让模型在反馈闭环里把这些先验翻译成可执行的 CadQuery 代码。技术路线上,系统部署 gpt-oss-120b 于 vLLM/Ray 集群,由中央协调节点调度数千条独立 rollout,每条 rollout 在隔离子进程里执行代码,并通过三类工具(execute_and_validate、lookup_documentation、grep_documentation)进行自纠。整个流程分为两阶段:先由 LLM 充当'机械零件图书管理员'为 65 个类别批量生成无尺寸描述,再为每条描述配套 19 条设计原则系统提示与可选参考代码片段生成可执行程序;多轮迭代修复循环最多支持 10 回合/100 次尝试,并配合三级验证(代码执行、几何有效性、STL+STEP 导出)筛选合格样本,最终通过 DINOv3 嵌入 + k-means 聚类挑出 10 万条多样性代表。
与传统单次 LLM 生成代码或固定规则合成(如 CAD-Recode 用程序化模板转译)不同,Zero-to-CAD 的本质创新在于把'描述决策'与'代码实现'解耦的两阶段流水线:阶段一让 LLM 在大上下文里批量产出 200 条差异化描述充当'机械图书管理员',阶段二再为每条描述在智能体循环里写代码,从而既保证类内多样性又控制几何有效性。同时明确禁止模型'通过删特征修 bug'——必须查文档维持原本设计复杂度——这避免了合成退化为简单体。最后通过 DINOv3 嵌入 + k-means 选样把百万条数据压缩到 10 万条多样化代表,并提供预计算嵌入与 FAISS 索引以支持后续检索。
方法步骤详情
流水线由四组件协同:(1) LLM 服务把 gpt-oss-120b 部署在 vLLM+Ray 上,暴露 OpenAI 兼容 API 与函数调用支持多轮会话与水平扩展;(2) 协调节点负责负载均衡、容错与产物流式写入;(3) Worker 提供三个工具——execute_and_validate 在隔离子进程执行代码并做拓扑/连通/面数/体积检查与 STL+STEP 导出,lookup_documentation 用 TF-IDF 检索 CadQuery 文档,grep_documentation 做正则定位;(4) 存储后端接收成功序列。两阶段协议:Stage 1 系统提示扮演'机械零件图书管理员'在 65 类别下批量产出无尺寸描述并去重;Stage 2 为每条描述注入 19 条设计原则与参考代码,在智能体循环中按'推理→写代码→执行→失败查文档→修正'迭代最多 10 轮/100 次;通过代码执行、几何(拓扑有效、单连通、≥7 B-Rep 面、正体积)、STL+STEP 导出三级验证入库;最后用 DINOv3 多视图嵌入 + k-means 中心点选 10 万条多样子集。
技术新颖性
技术新颖性体现在三方面:第一,把 CAD 数据稀缺问题重构为'智能体搜索+反馈闭环'问题,利用 LLM 关于机械零件的语义先验替代不可获取的真实历史数据;第二,两阶段'描述-代码'解耦配合 19 条设计原则的提示工程在保证操作多样性的同时维持几何有效性,22.3% 一次成功率背后 77.7% 通过平均 3.3 次迭代修复,平均每条对话 4.34 次函数调用、375K 次文档检索调用说明系统真正把'查文档'当作纠错手段;第三,'禁止用简化换通过'的设计哲学让最终 999,633 条序列都保留丰富的命名参数与构造步骤(如 Figure 11 中 plate_thickness、fillet_radius 等命名变量和'基板→筋→减槽→倒角'的工程逻辑),显著优于 CAD-Recode 的坐标链式代码。
实验结果
实验从数据集质量与下游任务两方面验证。规模保留 999,633 条可执行序列,消耗 60.2B 输入 token、生成 5.59B token,平均每条 5,638 token,22.3% 一次成功、3.30 次平均尝试。质量对比(Table 3):Zero-to-CAD 平均面数 46.2(接近 ABC 50.7),远高于 CAD-Recode 的 16.4;0% 部件低于 7 面且 0% 不连通(CAD-Recode 12.9%/56.3%);与 ABC 的 Fréchet 距离 0.164 vs 0.268、k=5 覆盖率 57.2% vs 45.3%。下游图像到序列(Table 4):测试集微调 Qwen3-VL-2B 取得 82.1% 成功率、IoU 0.747(中位 0.847、P90 0.999),远优于 GPT-5.2 High/Medium(约 72%、IoU ≈ 0.49)与基座 Qwen(6.6%、0.184);ABC 跨分布集微调模型达 61.0%、IoU 0.377,IoU 各分位全面超过 GPT-5.2,证明合成数据能从零引导出真实 CAD 重建。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| 图像到 CadQuery 序列重建(Zero-to-CAD 测试集) | 成功率 / 平均 IoU | Qwen3-VL-2B 微调:82.1% / 0.747(中位 0.847,P90 0.999) | GPT-5.2 High:72.2% / 0.485;GPT-5.2 Medium:71.1% / 0.495;Qwen3-VL-2B 基座:6.6% / 0.184 | 相对 GPT-5.2 High 成功率 +9.9pp、平均 IoU +0.262;相对基座 Qwen 成功率绝对提升 75.5pp、IoU 提升约 4 倍 |
| 图像到序列重建(ABC 跨分布) | 成功率 / 平均 IoU | Qwen3-VL-2B 微调:61.0% / 0.377(中位 0.303,P90 0.854) | GPT-5.2 High:66.2% / 0.344;GPT-5.2 Medium:62.6% / 0.346;Qwen3-VL-2B 基座:5.4% / 0.131 | 平均 IoU 比 GPT-5.2 High 高 0.033,且 IoU 四分位(mean/median/P75/P90)全面胜出;成功率略低 5.2pp 但几何保真度更优 |
| 几何质量(与 ABC 分布对齐) | Fréchet 距离 ↓ / k=5 覆盖率 ↑ / 平均面数 | 0.164 / 57.2% / 46.2 | CAD-Recode:0.268 / 45.3% / 16.4(ABC 50.7 作参考) | Fréchet 距离降低 38.8%,k=5 覆盖率提升 11.9pp,平均面数与真实 ABC 更接近(46.2 vs 50.7) |
| 数据有效性筛选 | 低于 7 面部件占比 / 不连通多体占比 | 0% / 0% | CAD-Recode:12.9% / 56.3% | 通过构造保证完全消除两类结构性失败模式 |
局限与改进
作者承认的局限主要在三方面:(1) LLM 在合成时仅有文本反馈,没有空间/视觉自检能力,因此 Figure 3 显示常见失败模式包括薄壁破坏连通性、孔位错放、自相交、尺度漂移以及局部合理但全局不连贯的原始体拼接;(2) 框架不强制设计可制造性 (DFM) 规则,因为 CNC、铸造、增材各自约束不同且需要材料假设,难以在百万规模上做每零件校验;(3) 跨分布到 ABC 时模型从合成到真实仍存在性能下降(IoU 从 0.747 降至 0.377),合成-真实差距未完全弥合。我观察到的额外局限:所有生成代码都基于 CadQuery 这一 Python 库,与 Fusion 360、SolidWorks、NX 等主流商业内核生态割裂,限制了数据集在工业流水线的即插即用;gpt-oss-120b 作为生成器引入了对该模型的隐式依赖,社区若想复现需重部署整套 vLLM/Ray 栈;一次成功率仅 22.3% 意味着 77.7% 需要多轮修复,百万级合成消耗 60.2B token 的算力门槛对中小团队仍较高。
独立分析的弱点
独立分析下有三个可改进点:(1) 描述阶段由 LLM 自主生成易出现'近义重复'与'伪多样性',尽管系统提示鼓励批内去重,但缺乏显式的语义去重度量,可以引入 Sentence-BERT 或 LLM 嵌入相似度过滤;(2) 几何验证仅做拓扑、连通、面数、体积、导出五项硬性检查,未必能捕获刀轨不可达、深腔无法加工等真实可制造性问题,可以接入开源可制造性分析(如 PyVista 配合 STL 切片刀轨仿真)做软约束;(3) 微调阶段仅以 IoU/Chamfer 作为评价,但 CAD 实际更看重操作序列的工程语义忠实度——生成代码可能几何相似但用了完全不同的构造步骤,建议增加'操作相似度'指标(如编辑距离在操作 token 上的归一化)。每个方向都能在现有管线里以增量改动方式引入。
未来方向
作者提出未来要拓展合成到真实 CAD 的差距与可制造性约束。结合论文成果可延伸的研究方向包括:(1) 引入视觉反馈让 LLM 在迭代中看到渲染结果以缓解 Figure 3 中的空间不自洽失败,作者已做初步试验但当前模型判别能力不足,需要更强的多模态推理模型;(2) 把相同智能体框架迁移到其他 CAD 内核(如 OCCT 直接生成 C++/Python 操作序列,或建模 FreeCAD 的脚本接口),从而打破 CadQuery 单一生态锁定;(3) 探索与直接 B-Rep 生成方法(BRepGen、AutoBrep、BrepGPT)的互补范式,用序列数据做条件生成的反向通道:给定 B-Rep 反推构造历史;(4) 把百万序列用于 CAD-Llama/FlexCAD 等已有 LLM 训练管线,研究合成监督对真实任务的下游迁移效率;(5) 拓展到装配体(多零件配合)场景,进一步逼近真实工程。
复现评估
复现友好度较高:作者明确在 HuggingFace 公开了完整数据集(999,633 条全集 + 10 万精选子集 + 预计算 DINOv3 嵌入 + FAISS 索引)、微调后的 Qwen3-VL-2B-Instruct 权重、系统提示与推理代码(huggingface.co/collections/ADSKAILab/zero-to-cad),附录还给出提示词全文与示例代码(Figure 8–11)。训练细节(Table 5)完全公开:16 块 H100 80GB、AdamW、$\eta = 1\times 10^{-4}$、cosine 调度、warmup 0.03、bf16、3 epoch。生成算力方面,论文使用弹性 2–80 块 GPU + 高峰 3,000 CPU 核处理 60.2B 输入 token,规模门槛对一般实验室较高;论文虽未开源编排代码(vLLM/Ray 配置、工具协议),但描述足够清晰,由熟悉 LLM 服务化的工程师可在 1–2 周内复刻核心流水线。算法上无新神经网络架构,主要是系统与提示工程,工程实现难度 ★★★★。
论文图表
列举五类典型失败:薄壁破坏连通性、孔位错放、自相交、尺度漂移、局部合理但全局不连贯的原始体拼接。
诚实展示方法边界,为 limitations 部分提供视觉证据。
展示 Stage 1 提示词全文,要求模型扮演机械零件图书管理员,按 1–3 句无尺寸 JSON 数组输出。
让读者理解'描述-代码'解耦的设计原则,是 method.steps 的关键参考。
Stage 2 提示词 19 条设计原则的节选,覆盖参数命名、规模约定(100 单位 = 10 cm)、自包含代码、可制造性提示与'禁止简化修 bug'的纠错规则。
是控制生成质量的核心提示工程文档,直接决定数据集可读性与多样性。
左侧为微调模型使用的极简提示词;右侧为零样本模型(基座 Qwen 与 GPT-5.2)使用的更长提示词,包含输出格式约束。
提示读者对比'已训练'与'零样本'两种设置下的提示差异,呼应实验对照设计。