StepCAD:基于LLM策略与几何引导搜索的网格到CAD代码生成 StepCAD: Mesh-to-CAD Code Generation via LLM Policy and Geometry-Guided Search
状态条件LLM策略逐步生成CAD程序,IoU引导树搜索精修局部编辑,网格到CAD重建全面SOTA
前置知识
CAD 程序化建模(Constructive CAD)
将三维建模表示为一串带参数的构造操作(草图、拉伸、旋转、扫掠、放样、布尔运算、圆角、倒角、抽壳等)组成的可执行程序,而非最终三角网格。程序由 CAD 内核(如 CadQuery/OpenCascade)执行产生精确实体几何,且参数可编辑、特征历史可追溯。文中用 $p=(a_1,\dots,a_T)$ 表示动作序列,执行结果记为 $S(p)$。
本文的任务就是从网格恢复这种程序,理解方法设计、数据构造与评估指标(IoU、VSR、CD)都依赖对程序化表示的把握。
点云编码与 Point-MAE
点云是无序三维点集合,需要专门编码器提取几何特征。Point-MAE 是掩码自编码器式的点云预训练模型:把点云分块成 token,随机遮蔽一部分并训练模型重建,从而学到几何结构表征。StepCAD 用共享编码器 $f_\phi$ 同时编码目标点云 $Q_m$ 与中间几何点云 $Q_{t-1}$,得到条件 token 注入语言模型。
点云编码器是策略网络'看到'形状的入口,附录还消融了编码器选择与微调方式,不懂它就无法理解几何条件如何进入 LLM。
自回归策略与状态条件化
自回归模型逐步生成序列,每步条件于历史输出。本文策略 $\pi_\theta(a_t \mid Q_{t-1}, Q_m, a_{<t})$ 额外条件于'当前已建成几何':每预测一个动作就执行 CadQuery 程序、对结果实体采样新点云再继续,形成闭环生成,整个程序分布为 $\pi_\theta(p)=\prod_t \pi_\theta(a_t \mid Q_{t-1}, Q_m, a_{<t})$。
状态条件化是 Π-StepCAD 超越一次性生成方法的根本原因,消融显示去掉中间几何 token 使 IoU 从 0.682 降到 0.632,理解它才能读懂核心实验。
IoU(交并比)
两个三维体积交集与并集之比,衡量重建形状与目标的重叠程度,取值 $[0,1]$ 越高越好。文中它既是任务的形式化目标 $\hat{p}=\arg\max_{p\in\mathcal{P}} \mathrm{IoU}(S(p), m)$,也是搜索阶段对每个候选程序执行后的唯一打分信号。
几何引导树搜索完全以 IoU 为目标函数,主结果表、消融表也都以 IoU 为主指标,是贯穿全文的量化核心。
束搜索(Beam Search)与程序空间优化
在候选程序空间通过局部编辑(改参数、改草图、补切割、删操作)扩展候选,每个编辑实际执行后按 IoU 打分,只保留 top-$K$(本文 $K=2$)继续扩展的启发式搜索。相比穷举所有编辑组合的指数复杂度,其成本与程序长度 $T$ 呈线性。
StepCAD 第二阶段就是几何感知束搜索,是性能提升的主要来源(IoU +0.134),也是'生成式优化'这一方法范式落地的关键。
Chamfer Distance(CD)与 VSR
CD 衡量两个点集的表面差异:对每个点在对方点集找最近邻距离再双向平均,值越低表面越贴合,与 IoU 互补反映细粒度精度。VSR(Valid Shape Rate)是生成的程序能成功执行并产出有效几何的比例,衡量方法实用性。
论文用 CD 证明 StepCAD 在表面细节上也全面领先(最高降 28.0%),用 VSR≈100% 说明其程序几乎全部可执行,是对比基线的关键维度。
研究动机
工业界大量三维几何以密集网格形式存在:物理零件的 3D 扫描、拓扑优化结果、以及 Hunyuan3D 等生成式 3D 模型的输出,都缺乏可编辑的参数化结构,必须逆向出可执行 CAD 程序才能支撑设计迭代、制造与仿真。现有学习式方法(DeepCAD、CAD-Recode、Cadrille、CADEvolve 等)把该任务建模为一次性自回归预测完整程序,且主要依赖 sketch-extrude(草图-拉伸)表示。这带来两个具体问题:一是操作类型单一,如 DeepCAD 的 178k 样本 100% 只含拉伸、0% 含旋转/扫掠/放样/圆角(Table 1),遇到需要放样或旋转才能表达的几何就无能为力;二是程序一旦预测完便不再修正,中间步骤的几何误差会持续累积。后果在数据上很明显:CADBench 的 ABC Hard 子集上先前最强方法 IoU 仅 0.31–0.39,形状越复杂退化越严重;ABC Medium 也只有约 0.43,重建体积与目标重叠不足一半;Organic 有机形状上 CADReasoner 甚至跌到 0.31。
本文的目标是论文目标是把 mesh-to-CAD 重构为'策略驱动的几何条件程序合成 + 基于搜索的程序空间优化':给定输入网格 $m$,恢复可执行程序 $\hat{p}=\arg\max_{p\in\mathcal{P}} \mathrm{IoU}(S(p), m)$,使生成的实体几何在体积上忠实复现目标,同时保持程序可执行、可编辑。具体拆成三个子目标:其一,构建能支撑状态条件策略训练的大规模数据——覆盖拉伸、旋转、扫掠、放样、布尔、圆角、倒角、抽壳、镜像等操作、序列长达 150+ 计数操作、并带中间构造状态密集监督的 ARCADE-1.5M(1.5M 程序、12.5M 状态-动作转移);其二,训练一个既看目标形状又看当前已建成几何的自回归 LLM 策略 Π-StepCAD;其三,用 IoU 引导的树搜索在推理时通过局部编辑修正程序结构与连续参数,追求跨 DeepCAD、Fusion 360、ABC、机械件、有机形状五类基准的 SOTA 几何保真度。
与已有工作不同的是,本文的独特切入是把'生成'与'优化'显式解耦。以往方法要么一次性摊销预测整个程序(CAD-Recode、Cadrille),要么依赖学习到的迭代精炼(CADReasoner 的视觉反馈、CADCrafter 的 DPO),几何误差仍藏在结构与参数里;实体寻址类方法(Pointer-CAD、FutureCAD)专注细粒度实体选择而非网格条件重建。StepCAD 主张:LLM 策略负责提出结构合理、必然可执行的候选程序,把'数值精度和局部结构对不对'交给推理时的束搜索——用 CadQuery 实际执行每个编辑、以 IoU 打分再决定去留。关键差异有三:训练时用中间状态-动作对密集监督(每步条件于真实中间几何),推理时闭环执行(每步条件于自己产生的几何),搜索阶段以几何重叠为唯一显式目标且无需再训练即可迁移到其他生成器(把 CAD-Recode 程序从 IoU 0.597 提到 0.745)。这复兴了程序合成领域'神经提议+搜索'的经典范式,并针对 CAD 特有的可执行性与连续参数精度约束做了适配。
核心方法
直觉上,人建模 CAD 也是'先搭大形、再看效果、逐步修',StepCAD 把这一流程形式化为两阶段生成式优化。第一阶段 Π-StepCAD:用 Point-MAE 编码目标点云 $Q_m$ 与当前中间几何点云 $Q_{t-1}$ 作为 token 注入 Qwen2.5-Coder-1.5B,自回归预测下一个 CadQuery 构造动作;每预测一步就执行、采样新几何再条件化,直到 IoU 平台期、发出终止符或达 $T_{max}=12$ 个动作,得到种子程序。第二阶段几何感知程序优化:以种子为起点做束搜索(束宽 $K=2$),对每个候选沿执行顺序逐操作施加 4 种局部编辑——连续参数精修、草图修改、补切割去除过冲、删除冗余/有害操作——每个编辑都实际执行并以 IoU 打分,保留 top-K。支撑这一切的是 ARCADE-1.5M:94 种启发式策略随机组合草图与操作,双重验证确保全部可执行,程序均值 40.3 计数操作、8.5 实体操作、86 面,并存储每个实体操作后的几何,共约 12.5M 中间状态。
核心创新是'状态条件化 + 程序空间优化'的组合。区别一:条件信号不同。一次性方法只看目标形状 $Q_m$;StepCAD 的策略 $\pi_\theta(a_t \mid Q_{t-1}, Q_m, a_{<t})$ 同时看目标与'自己已建成什么',消融显示去掉中间几何 token 使 IoU 从 0.682 降至 0.632,证明闭环反馈是必要而非装饰。区别二:把几何误差修正从训练期挪到推理期。CADReasoner 等靠学习到的迭代精炼,从 ABC Easy 的 0.83 跌到 ABC Hard 的 0.31;StepCAD 的搜索直接以执行后的 IoU 为目标,是显式可解释的优化,带来 +0.134 IoU(0.682→0.816),且零成本迁移到其他模型输出。区别三:数据层面的操作多样性。ARCADE-1.5M 中扫掠出现在 25.37% 程序(Zero-to-CAD 仅 3.88%),使生成程序在 Organic 子集上 30.4% 含放样、23.2% 含旋转,而 CADEvolve 仅 3.0% 和 0.8%,这正是复杂自由曲面得以重建的原因。
方法步骤详情
第一步,数据合成:从 ABC 草图库(线、弧、圆、样条)出发,随机扰动、旋转、缩放后贴到包围盒随机面,经随机参数的拉伸/旋转/扫掠/放样成体,可概率性加圆角倒角;94 种策略约束操作与序列长度,保证中间态始终为单实体正体积、布尔操作满足体积相交约束;双重验证后归一化到 $[-1,1]^3$、浮点保留三位小数。第二步,策略训练:共享 Point-MAE 编码器产出 $z_m, z_{t-1}$,Qwen2.5-Coder-1.5B 以 teacher forcing 最小化 $\mathcal{L}(\theta)=-\mathbb{E}[\log \pi_\theta(a_t \mid Q_{t-1}, Q_m, a_{<t})]$,用 12.5M 状态-动作对密集监督。第三步,闭环推理:从空状态起交替'预测动作→执行 CadQuery→采样中间点云→重新条件化',得到种子程序 $\hat{p}$。第四步,束搜索精修:按执行顺序逐操作展开,每步 4 种局部编辑(参数优化、草图替换、补切割去 过冲、跳过有害操作),执行后按 IoU 保留 $B_t=\mathrm{Top}_K$,$K=2$,输出 $\arg\max_{p\in B_T}\mathrm{IoU}(S(p),m)$。
技术新颖性
技术新颖性体现在四个层面。数据层面,ARCADE-1.5M 不是新词表而是新分布:1.5M 程序超过 CAD-Recode(1M)、CADEvolve(1.3M),平均 40.3 计数操作 / 8.5 实体操作 / 86 面远超 Fusion 360(18/2.2/16)与 CAD-Recode(28/2.0/17),且首次提供 12.5M 级中间构造状态,使'条件于中间几何'的训练成为可能。模型层面,把 LLM(Qwen2.5-Coder-1.5B)当作 CAD 领域的低成本策略网络,用点云 token 而非渲染图像做条件,避免视觉反馈方法的渲染开销。推理层面,首次在 mesh-to-CAD 中把执行打分的局部程序编辑作为显式优化阶段——四类编辑配合束宽 K=2,编辑次数随程序长度线性增长,单样本约 1 分钟,无需再训练即可迁移(CAD-Recode 程序 +0.148 IoU)。系统层面,展示一对多生成能力:同一网格可采样出操作序列不同但几何几乎一致的多个程序,DeepCAD 上恢复长度比 0.91、IoU 0.89,说明策略学到的是构造策略的分布而非单一映射。
实验结果
在 CADBench 七个子集(各 3000 样本、ABC 每难度 2000)上 StepCAD 全线 SOTA。主表(公开 checkpoint 对比):ABC Hard IoU 从最强基线 0.31–0.39 提至 0.73(+87.2%),ABC Medium 0.43→0.74(+72.1%),Mechanical 0.67→0.89(+32.8%),Organic 0.42→0.71(+69.0%),Fusion 360 0.71→0.83(+16.9%),ABC Easy/DeepCAD 提至 0.89;所有子集 CD 最低(ABC Hard 0.0263,Mechanical 降 28.0%),VSR 约 100%。仅策略版 Π-StepCAD 已超先前工作(ABC Hard 0.52 vs ~0.38)。受控消融(均用 ARCADE-1.5M):单次 Qwen2.5 基线 0.644 IoU,已高于 CADEvolve 公开版 0.568;去掉中间几何 token 降至 0.632;Π-StepCAD 0.682;加搜索后 0.816(+0.134)。附录:IoU≥0.95 占 39.9%(vs 27.2%)、IoU≥0.99 占 15.3%(vs 7.4%);搜索套在 CAD-Recode 程序上 1200 样本 0.597→0.745;顶点/边/面精度 20.8/12.6/8.1(vs 15.7/9.7/6.4);精修使程序从 16.2 增至 31.7 操作。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| ABC Hard 网格到CAD重建 | IoU | 0.73(VSR 99.95%) | 最强基线 0.31–0.39(CADReasoner 0.31) | 相对提升 87.2%,CD 相对降 19.8% |
| ABC Medium | IoU | 0.74 | CADReasoner 0.43 | +72.1% |
| Mechanical(MCB 机械件) | IoU | 0.89 | CADReasoner 0.67 | +32.8%,CD 降 27.8% |
| Organic(Objaverse 有机形状) | IoU | 0.71 | Cadrille 0.42 | +69.0%,CD 降 23.5% |
| Fusion 360 | IoU | 0.83 | CADReasoner 0.71 | +16.9% |
| ABC Easy / DeepCAD | IoU | 0.89 / 0.89 | CADReasoner 0.83 / 0.86 | +7.2% / +3.5% |
| 全子集程序可执行率 | VSR | ≈100%(多数子集 100.00%) | CAD-Recode 87.57–96.22% | 可执行率提升最高约 12 个百分点 |
| 搜索迁移(CAD-Recode 程序,1200 样本) | IoU | 0.745 | 原始 CAD-Recode 0.597 | +0.148,无需再训练 |
| 受控消融(同用 ARCADE-1.5M) | IoU | StepCAD 0.816;Π-StepCAD 0.682 | 单次 Qwen2.5 基线 0.644;CADEvolve 公开版 0.568 | 状态条件化 +0.038,搜索 +0.134 |
局限与改进
作者承认的局限:其一,搜索成本与覆盖度——每个样本精修约需 1 分钟,固定编辑集合、有限参数邻域与束宽可能错过正确修正,坏种子难以挽回;12 动作的策略上限意味着训练中 150+ 操作的长序列在推理时并无等价容量。其二,几何保真不等于语义保真——IoU/CD 只衡量形状重叠,不恢复原始尺寸、设计意图或约束,删除一个参数错误但有意义的圆角可能反而提升 IoU。其三,选择器粗糙——粗粒度的边与方向性面选择器无法寻址任意单个实体,程序可执行可编辑但未验证约束保持与用户编辑成功率。其四,合成训练数据带来域差,替代有效历史也让与参考 B-rep 的对比复杂化。我补充观察:顶点/边/面级实体精度绝对值仍低(20.8/12.6/8.1),说明重建的是'形状'而非完整特征树;ABC Hard 上 0.73 IoU 距离完美仍远;分钟级推理对百万级网格库的批量逆向不友好;精修后程序长度近乎翻倍(16.2→31.7 操作),以 IoU 为唯一信号可能偏好过度分割、牺牲长期可维护性。
独立分析的弱点
独立分析的弱点与改进方向:(1) 推理成本——束搜索每样本约 1 分钟,是单次生成方法的数十倍开销;可引入学习到的价值网络做预剪枝,或先让网络预测哪些操作值得精修,把搜索预算集中在低 IoU 操作上。(2) 搜索局部性——四种编辑均为局部操作,无法修复整体结构选错(该用旋转却用拉伸)的种子;可在低分时让策略重新采样多个结构候选再分别搜索,形成'结构级+操作级'两级搜索。(3) 实体精度与可编辑性——粗选择器无法指定'给这条边倒角',可借鉴 Pointer-CAD 的指针机制实现实体级编辑,并引入约束求解以保持尺寸与几何约束。(4) IoU 目标短视——补切割与跳过操作可能牺牲语义正确性换取体积重叠,可在打分中加入特征级惩罚或参考 B-rep 拓扑相似度。(5) 评估依赖归一化——统一缩放到 $[-1,1]^3$ 掩盖了绝对尺寸错误,真实工程需要维度感知指标,Pointer-CAD v2 的思路值得跟进;另外训练序列可达 150+ 操作但推理上限 12 动作,长程序能力未被真正兑现。
未来方向
作者提出的方向:结合对齐的点云/B-rep 双表征、实体级专用算子、特征感知目标与约束建模、用户研究验证可编辑性、提升搜索效率。基于其成果可自然延伸:(1) 图像到 CAD 全流水线——作者已演示把 Hunyuan3D 等图像到 3D 模型生成的网格交给 StepCAD,可端到端从单张图产出可编辑参数模型;(2) 逆向工程辅助——对扫描件批量恢复特征历史,对接主流 CAD 的特征树与 STEP AP242 等交换格式;(3) 一对多设计探索——利用策略的分布性,从同一网格采样多种构造方案供工程师比选或做结构类比检索;(4) 强化学习微调——以 IoU/CD 为奖励对策略做后训练,减少对昂贵搜索的依赖;(5) 范式迁移——'神经提议+几何搜索'可推广到结构相似的程序合成任务,如机器人任务规划、建筑 BIM 重建、电路版图逆向;(6) 蒸馏——把搜索精修后的高质量程序回流训练更强的单次模型,在保精度同时把推理成本降回秒级。
复现评估
复现评估:论文给出项目页,正文称数据集与代码伴随论文发布,但未逐条确认权重开放情况。数据方面,ARCADE-1.5M 的生成只依赖 ABC 草图库、开源的 CadQuery 与 94 种随机策略,重建数据管道可行,但 1.5M 程序的双重验证执行、STEP 导出与 12.5M 中间状态的点云存储需要可观的 CPU 集群时间与磁盘。模型方面门槛很低:基座仅 Qwen2.5-Coder-1.5B,单张消费级 GPU 即可完成推理,精修约 1 分钟/样本且无专用硬件要求,这对复现与二次开发非常友好。评估需准备 CADBench 各子集(DeepCAD、Fusion 360、ABC、MCB、Objaverse)以及 CADEvolve、CAD-Recode、Cadrille、CADReasoner 的公开 checkpoint 作基线。总体难度中等:算法细节(策略终止条件、束搜索预算、编辑实现)集中在附录 I/J/K,需仔细对照;最大不确定因素是数据集与权重的实际发布完整度与规模。
论文图表
展示失败案例:结构选错后搜索无法挽回的种子、细小特征丢失、以及需要实体级编辑才能修复的参数错误等情形。
诚实的失败分析界定了方法的边界,与 Limitations 中搜索局部性、粗选择器、12 动作上限等局限一一对应。