StepCAD: Mesh-to-CAD Code Generation via LLM Policy and Geometry-Guided Search¶
会议: NeurIPS 2026
arXiv: 2610.03799
OpenReview: https://openreview.net/forum?id=oLvC2AljNY
代码: https://ghadinehme.com/stepcad.github.io/
领域: 代码智能
关键词: Mesh-to-CAD, 程序合成, 几何引导搜索, 离散连续协同优化, CadQuery
一句话总结¶
针对三维网格反求可执行参数化CAD代码时单次生成累积几何误差的难题,本文提出结合状态条件策略网络与IoU引导树搜索的生成式优化框架StepCAD,配合150万规模的ARCADE-1.5M数据集,实现了几何保真度达87.2%的相对提升。
研究背景与动机¶
从三维网格恢复结构化且可执行的参数化CAD代码,在逆向工程、拓扑优化结果转换以及将AI生成的非结构化3D网格接入下游可编辑制造管线中具有重要应用。然而,CAD程序具有长程依赖、组合性高以及离散拓扑结构与连续几何参数强耦合的特性。现有主流学习方法通常采用自回归模型单次生成整段代码,且多局限在简单的草图-拉伸(sketch-extrude)流水线,缺乏在构建过程中执行中间状态并针对几何偏差进行实时纠偏的能力。
这种单次生成范式的核心痛点在于:自回归模型生成长程CAD程序极易累积微小的离散拓扑或连续尺寸误差,而无执行反馈机制使得模型在发生几何漂移后无法自愈。尽管少数学者尝试引入基于视觉反馈的迭代优化,但由于未在可执行程序空间展开显式的几何目标搜索,连续参数的精确对齐与局部的结构性错误依然难以根除。
本文的切入角度是:将Mesh-to-CAD任务重新形式化为程序空间中的生成式优化问题,解耦全局结构生成与局部几何精修。核心 idea:由以中间和目标几何为条件的LLM策略网络提出高质量种子程序,再通过以IoU为反馈信号的几何感知树搜索执行局部编辑(连续参数贝叶斯优化、草图替换、补差集切除、冗余跳过),在可执行程序空间内实现高保真闭环纠偏。
方法详解¶
整体框架¶
StepCAD由两个紧密衔接的核心阶段构成:第一阶段为以几何状态为条件的自回归CAD策略网络(\(\Pi\)-StepCAD),交替预测构造动作并在CAD内核中执行,逐步构建出全局拓扑合理的种子程序;第二阶段为几何感知的程序空间树搜索优化(Geometry-Aware Program Optimization),沿构造动作执行顺序展开束搜索,通过四类局部代码编辑操作并在CadQuery中即时执行打分,搜索使得生成几何与输入网格体积IoU最大化的最优可执行程序。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
A["输入目标网格 m<br/>采样点云 Qm"] --> B["状态条件CAD策略网络<br/>双几何点云输入自回归预测动作"]
B --> C["闭环交互执行生成<br/>CadQuery执行更新并反馈中间状态"]
C --> D["初始种子程序 p"]
D --> E["几何感知束搜索优化<br/>按执行步骤顺序展开局部编辑"]
E --> F["四类局部算子联合精修<br/>连续参数优化+草图替换+补差切除+动作跳过"]
F --> G["最优高保真CAD代码 p*<br/>最大化体积IoU与拓扑有效性"]
关键设计¶
1. 状态条件CAD策略网络:闭环自回归预测与中间几何感知 单次直接自回归生成整段代码无法感知中间构建状态,极易导致后续操作建立在已偏离的基准面上。\(\Pi\)-StepCAD将目标网格点云 \(Q_m\) 与上一步执行后得到的中间实体点云 \(Q_{t-1}\)(各1024点)输入共享权重的Point-MAE编码器,分别提取64个几何Token并投影至大语言模型隐空间;同时结合包含包围盒中心与尺度的几何元数据Token,注入Qwen2.5-Coder-1.5B基座。在生成第 \(t\) 步时,策略网络条件化于历史动作与当前几何偏差,自回归输出下一个CadQuery构造动作 \(a_t\):
在推理过程中采用闭环交互滚行机制:生成一个动作即在CadQuery引擎中执行,重新采样点云并评估即时IoU增益,直至IoU增益收敛(提升小于0.001)、输出终止符或达到最大动作步数(上限设为12个动作,非API调用行数),有效防止了开环生成时的误差级联扩散。
2. 几何感知树搜索:程序空间离散与连续协同精修 即使策略网络抓住了全局骨架,连续参数的量化误差和局部冗余特征依然难以彻底消除。StepCAD设计了基于束搜索(Beam Search,束宽 \(K=2\))的程序空间几何优化。针对种子程序中的每一个构造动作 \(a_t\),依次生成四种局部变体候选,并在CadQuery中执行以输入网格计算体积重合度进行候选剪枝排序:
搜索空间覆盖四大针对性局部编辑算子: - 连续参数贝叶斯优化(Continuous refinement):固定代码结构,对拉伸深度、旋转角度、草图坐标偏移等连续参数建立高斯过程代理模型,利用期望提升(EI)采集函数进行有界局部调优; - 草图投影与几何替换(Sketch modification):将目标网格与当前基准工作平面求截交线,通过Ramer-Douglas-Peucker多边形简化与直线/圆弧拟合,直接从输入网格抽取高精度二维草图轮廓替换原有预测草图; - 补差集切除(Complement cut):利用manifold3d布尔运算提取生成几何相对目标网格的突起冗余区域 \(D = S(p) \setminus m\),提取主法向平面并拟合草图,自动插入切除拉伸(cut-extrude)消除多余体积; - 动作冗余跳过(Operation skipping):直接剔除当前动作 \(p' = p \setminus \{a_t\}\),当剔除后的执行几何IoU提升时予以保留,快速纠正策略网络误判的冗余布尔切削或退化特征。
3. ARCADE-1.5M数据集:全工序长序列合成与稠密状态轨迹监督 现有CAD数据集(如DeepCAD)绝大多数仅包含基础草图-拉伸,缺乏放样(loft)、扫掠(sweep)、倒角(fillet/chamfer)及抽壳(shell)等工业标准工序,且缺乏轨迹级中间状态。本文构建了包含150万个可执行CAD程序、1250万个中间状态-动作对的合成数据集ARCADE-1.5M。该数据集基于从ABC提取的2D草图环路库,结合94种工程建模启发式策略,施加单连通正体积实体和可控布尔重叠的有效性约束。合成管线严格采用双重验证机制(内存BRep拓扑校验与独立命名空间代码执行校验),生成的程序长度最长超过150步(平均40.3个算子),为策略网络提供了前所未有的稠密中间几何监督信号。
一个完整示例¶
以重构一个带异形侧耳与中心沉孔的机械支座为例: 1. 策略生成种子:\(\Pi\)-StepCAD以初始空几何为起点,第一步预测底部矩形垫板拉伸(\(t=1\), IoU=0.52);第二步根据当前垫板点云与目标点云的差异,准确识别出顶部过渡柱体并生成放样(loft)特征(\(t=2\), IoU=0.74);第三步生成中心通孔切削(\(t=3\), IoU=0.81),生成终止获得包含3个动作的种子程序。 2. 树搜索精修: - 在步骤1中,触发连续参数贝叶斯优化,将垫板拉伸厚度从18.0微调至19.2,并使用草图几何替换将垫板外形直接贴合网格截面,IoU从0.81升至0.87; - 在步骤2中,检测到放样曲面边缘产生微小外凸,触发补差集切除算子,在截面自动追加一次切削,消除外溢体积,IoU提升至0.91; - 在步骤3中,对中心孔执行贝叶斯半径微调,最终获得可执行CadQuery程序,整体IoU达到0.94,表面倒角和孔径完全贴合目标网格。
损失函数 / 训练策略¶
策略网络在大规模轨迹数据集ARCADE-1.5M上采用Teacher Forcing方式进行全参数监督微调。训练目标为最大化每个构造动作的Token似然:
点云编码器与语言模型分别采用独立学习率(编码器 \(5 \times 10^{-5}\),LLM \(2 \times 10^{-4}\)),前1000步线性预热后采用余弦退火。在8张NVIDIA H100 GPU上以批大小32训练100k步(约12小时)。
实验关键数据¶
主实验¶
在涵盖ABC(分Easy、Medium、Hard难度)、DeepCAD、Fusion 360、MCB(机械零件)和Objaverse(有机自由曲面)五大领域的CADBench基准测试上评估网格重构性能。
| 数据集 / 类别 | 指标 | StepCAD (本文) | CADReasoner (之前SOTA) | CAD-Recode | 相对提升 |
|---|---|---|---|---|---|
| ABC Hard | IoU ↑ / CD ↓ | 0.73 / 0.0263 | 0.31 / 0.0627 | 0.35 / 0.0328 | IoU +87.2% / CD -19.8% |
| ABC Medium | IoU ↑ / CD ↓ | 0.74 / 0.0302 | 0.43 / 0.0419 | 0.37 / 0.0349 | IoU +72.1% / CD -13.5% |
| Mechanical (MCB) | IoU ↑ / CD ↓ | 0.89 / 0.0213 | 0.67 / 0.0413 | 0.66 / 0.0297 | IoU +32.8% / CD -27.8% |
| Organic (Objaverse) | IoU ↑ / CD ↓ | 0.71 / 0.0420 | 0.31 / 0.0968 | 0.40 / 0.0570 | IoU +69.0% / CD -23.5% |
| DeepCAD | IoU ↑ / CD ↓ | 0.89 / 0.0191 | 0.86 / 0.0197 | 0.79 / 0.0207 | IoU +3.5% / CD -3.0% |
| Fusion 360 | IoU ↑ / CD ↓ | 0.83 / 0.0228 | 0.71 / 0.0326 | 0.65 / 0.0268 | IoU +16.9% / CD -14.9% |
消融实验¶
1. 架构与训练组件消融(CADBench总体)
| 配置 | CD ↓ | IoU ↑ | 有效几何率 (VSR %) | 说明 |
|---|---|---|---|---|
| StepCAD (Full Model) | 0.025 | 0.816 | 100.0 | 完整策略 + 几何感知树搜索 |
| \(\Pi\)-StepCAD (仅策略生成,无搜索) | 0.028 | 0.682 | 100.0 | 去除搜索后IoU下降0.134 |
| \(\Pi\)-StepCAD 去除历史几何Token | 0.045 | 0.632 | 100.0 | 失去中间状态感知,IoU下降0.050 |
| 单次生成基线 (Qwen2.5 on ARCADE) | 0.041 | 0.644 | 100.0 | 无状态条件反馈单次预测整段代码 |
| \(\Pi\)-StepCAD 去除Point-MAE微调 | 0.093 | 0.316 | 100.0 | 几何表征严重退化 |
| CADEvolve (公开基线CheckPoint) | 0.056 | 0.568 | 97.0 | 对比现有开源模型 |
2. 树搜索局部编辑算子贡献拆解
| 局部编辑算子 | 胜率 (Win-rate %) | 实际IoU增益 (\(\Delta\text{IoU}\)) | 增益贡献占比 (% share) | 单样本耗时 (s) |
|---|---|---|---|---|
| 草图修改替换 (Sketch Modification) | 26.0% | +0.059 | 41.5% | 12.5 |
| 补差集切除 (Complement Cut) | 24.4% | +0.043 | 30.3% | 17.0 |
| 连续参数贝叶斯优化 (Continuous) | 36.6% | +0.023 | 16.2% | 28.4 |
| 动作跳过 (Operation Skipping) | 13.0% | +0.017 | 12.0% | 8.1 |
| 完整树搜索 (Full Search) | 100.0% | +0.142 | 100.0% | 66.0 |
关键发现¶
- 复杂几何优势显著扩大:在简单的DeepCAD上提升为3.5%,但在高复杂度机械件和自由曲面(ABC Hard、Organic)上,IoU提升分别高达87.2%和69.0%。这表明引入丰富的非拉伸算子(loft、revolve)和几何搜索对长程、复杂形状重构是决定性的。
- 草图替换与补差切除贡献了超70%的搜索收益:在束搜索各阶段中,直接从目标网格截面重构草图贡献了41.5%的IoU涨幅,补差集布尔切除贡献了30.3%,证明了跨越离散代码与连续网格几何表征的混合算子设计极其高效。
- 搜索优化具有零样本迁移能力:在未经重训的情况下,将StepCAD的几何树搜索直接套用于CAD-Recode生成的代码上,1200个测试样本的平均IoU从0.597大幅提升至0.745(+0.148)。
亮点与洞察¶
- 生成策略与符号优化的解耦与协同:神经网络极其擅长把握宏观语义与全局拓扑走向,但在浮点数连续几何边界上天生缺乏精度;通过让LLM策略网络负责粗粒度骨架提议,将微观尺寸与几何细节交由以执行器反馈为导向的局部树搜索,完美兼顾了生成灵活性与工程精度。
- 几何截面反投影的草图编辑巧妙利用了几何先验:不同于常规代码大模型在纯文本空间做随机重采样或自我纠错,StepCAD利用工作平面切片网格直接提取多边形并逆向拟合成CadQuery草图代码,将几何视觉先验直接注入代码修改。
- 可复用到其他程序合成任务的闭环思路:这种“闭环环境执行反馈状态 + 关键中间步状态监督 + 符号化局部算子局部搜索”的范式,可以自然迁移到机器人动作规划代码生成、可微分物理仿真脚本逆求等高容错要求的复杂代码智能场景中。
局限与展望¶
- 计算时间开销较大:每次重构需要多次调用CadQuery/OpenCASCADE几何内核执行代码及计算三维网格布尔运算,平均单样本树搜索耗时约1分钟(66秒),难以满足工业级毫秒级实时交互需求。
- 仅优化几何贴合度而非设计意图:IoU与Chamfer Distance只能约束体积和表面的宏观重合,无法识别特征背后的装配语义、约束尺寸标注或制造特征树意图(例如若粗暴切除一个微小圆角能增加IoU,算法可能会抹杀原设计的圆角特征)。
- 动作步数上限约束:目前策略网络设置了最多12个动作步数的上限截断,面对超长(如数百次特征交叠)的超大型装配体或复杂注塑件模具代码,该架构仍存在建模上限。
相关工作与启发¶
- vs CAD-Recode / Cadrille: 传统单次生成方法在给定点云后直接输出整段代码,容易在连续特征累积后产生严重几何偏移;StepCAD通过中间状态闭环条件输入和显式程序空间树搜索,大幅降低了复合几何的误差积累。
- vs CADReasoner: CADReasoner依赖LLM读取渲染图像进行纯提示词或视觉驱动的无序代码二次修改,无法保证收敛与局部连续参数精确优化;StepCAD将执行反馈形式化为IoU量化指标,并引入贝叶斯优化和布尔补差算子,优化更稳定、保真度更高。
- vs CSG / 传统逆向工程方法: 传统方法多局限在简单几何基元拼贴(InverseCSG)或纯B-Rep面片重建,难以生成包含参数化草图、放样、抽壳的完整特征树;StepCAD生成的是标准的Python CadQuery脚本,具备极佳的后续二次编辑能力。
评分¶
- 新颖性: ⭐⭐⭐⭐⭐ 首次将中间状态感知LLM策略与几何引导树搜索相结合用于参数化CAD代码反求,框架设计优雅且实用。
- 实验充分度: ⭐⭐⭐⭐⭐ 涵盖5个经典基准,针对复杂几何、算子分布、消融实验和可迁移性进行了详尽评测,并开源1.5M规模新数据集。
- 写作质量: ⭐⭐⭐⭐⭐ 逻辑严密,问题陈述与图表设计精美,附录细节与边界讨论非常坦诚透彻。
- 价值: ⭐⭐⭐⭐⭐ 成功打通了三维视觉网格表征与工业CAD工程代码之间的阻隔,为智能逆向设计和3D代码生成提供了重要基准。