CAD

SolidWorks用户试过用Claude Code接DeepSeek操作SolidWorks,结论是“只能做简单零件,而且多次试错,实用性不强”,AI在CAD里到底是“能力还不够”还是“交互范式从一开始就配错了”?

👤 为我痴狂 👁 55 阅读 ❤ 0 点赞 ➦ 0 分享 📅 2026-10-29
首页› 理学› CAD› 正文
AI进CAD:不是能力不够,而是交互范式配错了——从Claude Code接DeepSeek操作SolidWorks的失败案例说起
失败案例
1 例
核心症结
范式错配
推荐路径
API+特征树
文献基数
60+
摘要:一位SolidWorks用户把Claude Code接到DeepSeek上,试图用自然语言驱动CAD建模,得到的结论是"只能做简单零件,多次试错,实用性不强"。这个结论本身没错,但它把问题归因到了错误的地方。本文认为,当前AI在CAD中的困境,主要不是模型能力不足,而是交互范式从一开始就配错了:大语言模型擅长的是符号序列的生成,CAD建模需要的却是带约束的几何状态演化,两者之间缺少一个稳定的语义锚点。文章沿着"问题定义—机制剖析—技术路线—工程落地—评估与局限"的主线,提出以特征树为语义锚点、以API为执行层、以几何验证为闭环的分层架构,并给出可操作的实现步骤与评估指标。文中所有数据均标注来源,模拟数据单独说明。

CONTENTS目录

OVERVIEW一、导语:一个被误读的失败案例

先把案例本身说清楚。这位用户的搭建方式是:Claude Code作为前端代理,负责理解自然语言指令并组织工具调用;DeepSeek作为后端推理模型,负责生成操作步骤;两者通过某种桥接方式去驱动SolidWorks。结果是简单零件(如带孔法兰、阶梯轴)能勉强做出来,稍复杂的特征组合就频繁失败,需要反复试错,最终判定"实用性不强"。

这个结论在工程上是成立的,但它的归因值得推敲。把失败归为"AI能力还不够",隐含的假设是:只要模型再强一点、上下文再长一点、推理再准一点,问题就会自然解决。本文认为这个假设站不住脚。真正的问题在于,这条链路把CAD建模当成了一次性的文本生成任务,而CAD建模本质上是一个带约束的几何状态演化过程。两者对"正确性"的定义完全不同:文本生成的正确性是语义层面的,几何建模的正确性是拓扑与尺寸层面的,后者可以被精确验证,前者不能。

本文评述:把"模型不够强"当作主要矛盾,会导致资源投向错误的方向——继续堆参数、堆上下文,而不去改造交互层。事实上,即便把当前最强的通用模型直接接到CAD上,只要中间层仍然是"生成一段脚本然后盲执行",失败率就不会有数量级的改善。原因在第三章展开。

本文的分析主线可以一句话概括:AI与CAD之间缺的不是智能,而是一个可验证、可回滚、可增量更新的语义锚点。特征树(Feature Tree)恰好具备这三个性质,因此它应当成为交互范式的核心,而不是被绕过的中间产物。围绕这条主线,下文依次处理:问题从哪来、机制上为什么必然失败、应该怎么改、改完怎么落地、落地后怎么评估、以及还有哪些边界。

BACKGROUND二、背景与问题定义:AI进CAD的三次浪潮与当前断点

2.1 三次浪潮的划分依据

把AI进入CAD的历程按"AI承担的角色"来划分,比按年份划分更有解释力。笔者认为可以分成三段:

第一波 · 参数代理

AI只做参数优化与代理模型,几何由人建,AI调尺寸。代表工作是代理模型辅助的拓扑优化与尺寸寻优。这一阶段AI不碰几何拓扑,风险可控。

第二波 · 脚本生成

AI生成建模脚本(如SolidWorks宏、Fusion 360的Python脚本、OpenSCAD代码),由脚本驱动CAD。这一阶段AI开始碰几何,但执行是"盲执行",错了才知道。

第三波 · 智能体操作

AI作为Agent直接操作CAD界面或API,边做边看。本文讨论的Claude Code接DeepSeek案例属于这一波,也是失败最集中的一波。

这三波的共同趋势是:AI对几何的介入程度越来越深,但对几何状态的掌控能力并没有同步提升。第一波AI不碰几何所以不会错;第二波AI碰了几何但错了才发现;第三波AI想边做边纠,却缺少可靠的中间表示来支撑纠错。当前断点就在第三波。

2.2 问题定义的精确化

要让讨论可检验,必须把"AI操作CAD"这个模糊说法拆成可度量的子问题。笔者认为至少应拆成四层:

层级 子问题 可度量指标 失败典型表现
意图层 把自然语言转成明确的建模目标 目标抽取准确率 漏掉倒角、误判基准面
规划层 把目标拆成有序的特征操作序列 步骤合法率、顺序正确率 先打孔后拉伸导致孔被覆盖
执行层 把操作序列正确落到API或界面上 API调用成功率 选择集为空、草图未闭合
验证层 判断结果是否满足几何与工程约束 几何一致性、干涉检出率 模型"看起来对"但壁厚不足

这四层的失败率不是均匀分布的。根据公开的CAD脚本生成评测与笔者的工程观察,意图层和规划层是主要瓶颈,执行层反而是相对成熟的部分——SolidWorks的API文档完整、社区示例丰富,一个明确的API调用很少写错;真正难的是"该调用哪个API、按什么顺序调"。这个判断直接决定了后文的技术路线选择。

本文评述:很多讨论把"AI不会用SolidWorks"笼统化,导致改进方向发散。按四层拆开后可以看到,执行层已经有成熟的工程解法(API封装、选择集管理、事务回滚),真正需要范式创新的是意图层与规划层之间的衔接。这也解释了为什么单纯换更强的模型收效有限——强模型改善的是意图理解,但规划层缺的是一个结构化的中间表示。

MECHANISM三、机制剖析:为什么"自然语言→CAD"这条链路天生不稳

3.1 两种正确性的错位

大语言模型的输出是token序列,其训练目标是下一个token的条件概率最大化。这意味着它优化的是"像不像人写的",而不是"对不对"。在文本任务里,这两个目标高度相关;在几何任务里,它们几乎正交。一段语法完美、逻辑通顺的建模脚本,完全可能因为一个基准面选错而整体失败。

更麻烦的是误差的传播方式。文本生成里,一个词错了,后面可以靠上下文补救;几何建模里,一个特征错了,后续所有依赖它的特征都会连锁失效。用形式化的话说,CAD建模的状态转移是强耦合的,而LLM的生成过程是弱耦合的。弱耦合的过程去驱动强耦合的系统,误差必然被放大。

概念界定:本文所说的"语义锚点",指一个既能被人读懂、又能被机器精确执行、还能被几何引擎验证的中间表示。它必须同时满足三个条件:(1)表达力足以覆盖目标零件的关键特征;(2)每个节点都有确定的几何语义;(3)支持增量修改与回滚。特征树是天然候选,纯文本脚本不是。

3.2 上下文窗口解决不了状态管理

有一种常见误解:只要上下文足够长,把整个建模历史塞进去,模型就能"记住"当前状态。这个想法混淆了"信息可见"和"状态可控"。即便模型能看到全部历史,它仍然需要自己推断"当前几何到底长什么样",而这个推断没有任何机制保证正确。CAD软件内部维护的是精确的B-rep表示,模型看到的是文本描述,两者之间存在不可逆的信息损失。

笔者认为,正确的做法不是让模型去"记住"几何,而是让模型始终向CAD查询几何。模型不该是状态的持有者,而应是状态的查询者与修改者。这个角色转换是范式迁移的关键一步,后文的技术路线正是建立在这个判断上。

3.3 试错成本的结构性差异

案例里提到"多次试错",这值得单独分析。试错本身不是问题,问题在于试错的成本结构。在软件开发中,试错成本低(编译快、可回滚、有单元测试);在CAD中,试错成本高得多:一次失败的建模可能留下脏状态,回滚需要重建,验证需要人工看模型。如果AI的试错频率高于人类工程师,那它就没有实用价值,哪怕单次成功率不低。

维度 软件工程试错 CAD建模试错
反馈时延 秒级(编译/测试) 秒到分钟级(重建/渲染)
回滚成本 低(版本控制) 中高(特征重建、依赖修复)
错误可见性 高(报错信息明确) 低(几何错误可能不报错)
验证自动化 成熟(单元测试) 不成熟(需几何检查)

这张表说明,要让AI在CAD里可用,必须把试错成本压到接近软件工程的水平。具体手段包括:事务化执行(失败即回滚)、几何断言(每步后自动检查关键约束)、增量重建(只重建受影响的特征)。这些都不是模型能力问题,而是工程基础设施问题。

ARCHITECTURE四、技术路线:以特征树为语义锚点的分层架构

4.1 架构总览

基于第三章的分析,本文提出一个四层架构。它的核心思想是:把LLM从"脚本生成器"降级为"特征树编辑器",把CAD从"被驱动的黑盒"升级为"可查询的状态机"。架构如下:

L1 意图层
自然语言 → 结构化建模目标(JSON Schema约束)
L2 规划层
目标 → 特征树增量操作序列(增删改特征节点)
L3 执行层
特征操作 → SolidWorks API调用(事务化、可回滚)
L4 验证层
几何断言 → 一致性检查 → 反馈给L2修正

与案例中的做法相比,关键差异在L2和L4。案例里L2直接产出脚本,L4基本缺失(靠人眼看结果);本架构里L2产出的是特征树操作,L4是自动化的几何检查。这两个改动把"盲生成"变成了"可验证的增量演化"。

4.2 特征树作为中间表示的理由

为什么选特征树而不是别的表示?笔者认为可以从三个性质来论证:

  • 可读性:特征树本身就是工程师熟悉的抽象,节点名、参数、依赖关系都是人类可读的。LLM在预训练中见过大量CAD教程与特征描述,对"拉伸凸台""旋转切除"这类术语有先验知识,迁移成本低。
  • 可执行性:SolidWorks的特征树与API有一一对应关系。一个"拉伸凸台"特征对应FeatureExtrusion3调用,参数映射明确,不存在歧义。
  • 可验证性:每个特征节点执行后,几何引擎会更新B-rep表示。可以针对每个节点定义断言(如"该特征产生的实体数量""该特征后的体积变化范围"),验证成本低。
本文评述:特征树不是唯一可能的锚点。学术界也有用CSG树、B-rep图、甚至点云作为中间表示的工作。但特征树的独特优势在于它同时是"用户心智模型"和"软件内部模型",这一点是CSG树和点云不具备的。选锚点的标准应该是"人机共用的抽象层级",而不是"机器表示的最优形式"。

4.3 增量操作而非全量生成

案例失败的另一个技术原因是"全量生成":每次让模型从头生成完整脚本。这有两个问题:一是每次都要重新理解全部上下文,token消耗大且容易漂移;二是任何一处错误都会导致整体重来,试错成本极高。

增量操作的做法是:模型每次只输出对特征树的最小修改,比如"在第3个特征后插入一个孔特征""把第5个特征的深度从10改成15"。这样每次修改的影响范围可控,验证只需检查受影响的部分,回滚只需撤销单个操作。工程上这对应SolidWorks API的IModelDoc2.EditRebuild3配合特征级的事务管理。

IMPLEMENTATION五、工程落地:从零搭建一条可用的AI-CAD流水线

5.1 环境与依赖

下面给出一条最小可行路径。环境要求:SolidWorks 2022及以上(API较稳定)、Python 3.10+、pywin32(COM桥接)、一个支持结构化输出的LLM接口。核心思路是用COM接口把SolidWorks暴露成可编程对象,再用LLM生成对特征树的操作。

# 最小示例:连接SolidWorks并读取特征树(示意,非完整实现)
import win32com.client

sw = win32com.client.Dispatch("SldWorks.Application")
sw.Visible = True
model = sw.ActiveDoc
if model is None:
    raise RuntimeError("请先打开一个零件")

# 遍历特征树,导出为结构化表示
feat = model.FirstFeature()
tree = []
while feat is not None:
    tree.append({
        "name": feat.Name,
        "type": feat.GetTypeName2(),
        "next": feat.GetNextFeature() is not None
    })
    feat = feat.GetNextFeature()
print(tree)

这段代码只做一件事:把特征树读出来。它是整个流水线的起点,因为只有模型能"看到"当前特征树,才谈得上增量修改。案例里的做法跳过了这一步,直接让模型凭空生成脚本,这是失败的结构性原因之一。

5.2 五步落地流程

  1. 特征树序列化:把当前零件的特征树导出为JSON,包含节点名、类型、关键参数、依赖关系。这是给LLM的"当前状态快照"。
  2. 意图结构化:用JSON Schema约束LLM的输出,要求它返回{"op":"insert","after":"特征名","feature":{...}}这样的操作对象,而不是自由文本。
  3. 操作翻译与执行:把操作对象翻译成具体的API调用序列,在事务中执行。失败则回滚到执行前的状态。
  4. 几何断言:执行后读取关键几何量(体积、包围盒、面数、干涉检查结果),与预期范围比对。超出范围则标记该步失败。
  5. 反馈修正:把断言结果与失败原因回传给LLM,让它生成修正操作。限制重试次数(如3次),超过则交还人工。

这五步里,第2步和第4步是案例缺失的关键。第2步把"自由文本"变成"受约束的结构",大幅降低了执行层的失败率;第4步把"人眼验证"变成"程序验证",把试错成本压了下来。笔者认为,这两步的工程投入产出比远高于换一个更强的模型。

5.3 事务化与回滚的实现要点

SolidWorks API本身没有数据库式的事务,但可以通过"特征级快照"模拟:在执行一组操作前,记录当前特征树的序列化状态与模型文件路径;执行失败时,关闭当前文档、重新打开快照文件。这种做法简单但有效,代价是重建时间。对于大型装配体,重建可能较慢,此时可以退化为"只回滚受影响的特征"——通过特征依赖图确定影响范围。

本文评述:回滚机制的设计直接决定了AI的试错预算。如果回滚需要30秒,那AI最多试错几次;如果回滚只需2秒,试错空间就大得多。这意味着交互范式的改进不仅是软件问题,也是性能工程问题。很多"AI不好用"的抱怨,根子在这里。

5.4 提示词与约束设计

在结构化输出的前提下,提示词的重点从"教模型怎么建模"转向"约束模型的输出空间"。一个可用的提示词骨架如下:

你是CAD特征树编辑器。当前特征树JSON如下:
{feature_tree}

用户需求:{user_intent}

请只输出一个JSON对象,表示对特征树的最小修改:
- op: insert | modify | delete
- target: 目标特征名(insert时为插入位置的前一个特征)
- feature: 特征定义(type, params, references)

约束:
1. 不得修改与需求无关的特征
2. 所有尺寸必须带单位
3. 引用基准面/边时必须使用特征树中已存在的名称
4. 若需求无法用单步完成,返回 {"op":"plan","steps":[...]}

这个骨架的关键是最后一条约束:它允许模型在必要时输出多步计划,但计划本身也是结构化的,可以被逐步验证。这比让模型一次性生成完整脚本要稳健得多。

DATA六、关键数据与案例:能力边界到底在哪里

6.1 公开评测透露的信号

关于LLM生成CAD脚本的能力,公开评测不多,但有几个方向可以参考。CADCodeVerify等工作提出了对LLM生成的CAD代码进行自动验证的框架,其核心发现是:直接生成的CAD脚本在复杂零件上的首次通过率显著低于简单零件,且错误类型集中在基准选择与特征顺序上(来源:CADCodeVerify相关论文,2024)。这与案例的观察一致。

另一条线索来自Text2CAD方向的研究。这类工作尝试从文本直接生成参数化CAD序列,评测指标通常包括序列合法性、几何相似度、约束满足率。公开结果显示,简单零件(如单特征或双特征零件)的序列合法率较高,但随特征数增加快速下降(来源:Text2CAD相关论文,2024)。需要说明的是,不同工作的评测集与指标不统一,跨论文比较需谨慎。

本文评述:这些评测的共同局限是"以脚本为输出"。它们测的是"模型能不能写出对的脚本",而不是"模型能不能通过增量交互把零件做对"。后者才是工程上真正关心的。笔者认为,未来的评测应该转向"交互式建模成功率"——给定一个目标零件,允许模型多轮查询与修改,看最终能否做对、用了多少轮。这个指标更贴近实用场景。

6.2 一个模拟的复杂度-成功率关系

由于缺乏统一的公开基准,下面给出一组模拟数据,用于说明趋势而非精确数值。设定:特征数从2到10,分别测试"全量脚本生成"与"增量特征树编辑"两种范式,每种配置模拟100次,统计首次成功率与平均修正轮数。数据为整合模拟,非真实实验。

特征数 全量生成首次成功率 增量编辑首次成功率 全量平均修正轮数 增量平均修正轮数
2 78% 91% 0.4 0.2
4 52% 80% 1.1 0.5
6 31% 68% 2.3 0.9
8 17% 55% 3.8 1.4
10 9% 42% 5.6 2.1

这组模拟数据的趋势很清楚:两种范式的成功率都随复杂度下降,但增量编辑的下降斜率明显更缓,且在修正轮数上优势更大。这支持了本文的核心论点——范式改进能带来实质收益,而且收益随复杂度增加而扩大。需要强调,这是模拟数据,真实数值会因模型、提示词、零件类型而不同,读者应关注趋势而非绝对值。

6.3 案例复盘:失败点定位

回到开头的案例,用本文的框架复盘,可以定位到三个具体失败点:

  • 缺少状态查询:模型不知道当前模型长什么样,每次生成都是"盲写"。对应第三章的"上下文窗口解决不了状态管理"。
  • 全量生成导致高试错成本:一次失败就要整体重来,修正轮数多。对应第三章的"试错成本结构性差异"。
  • 缺少几何验证:错误要到人眼看模型时才发现,反馈链路长。对应第四章的L4缺失。

这三个失败点都不是"模型不够聪明",而是架构缺失。换句话说,即便换成更强的模型,只要架构不变,失败模式不会变,只是失败得晚一点。这个判断是本文与"能力不足论"的核心分歧。

COMPARISON七、对比与局限:三条主流路线的横向评估

7.1 三条路线的定位

当前AI进CAD主要有三条路线,各有适用边界:

路线 核心做法 优势 局限
脚本生成 LLM直接写宏/脚本,一次执行 实现简单,无需改造CAD 盲执行、难回滚、复杂零件失败率高
界面Agent 视觉模型看屏幕,模拟鼠标键盘操作 通用性强,不依赖API 慢、脆弱、坐标漂移、难验证
API+特征树 结构化操作特征树,事务化执行 可验证、可回滚、增量更新 需前期工程投入,依赖API覆盖度

案例中的做法介于"脚本生成"与"界面Agent"之间,但两头不靠:它想用脚本的自动化,又想用Agent的灵活性,结果既没有脚本的可验证性,也没有Agent的通用性。笔者认为,对于工程级应用,API+特征树是唯一能同时满足可验证与可回滚的路线;界面Agent适合演示与轻量场景,不适合严肃建模。

7.2 局限与未解问题

本文提出的架构也有明确局限,必须诚实列出:

  • API覆盖度:SolidWorks API并非所有功能都开放,某些高级特征(如复杂曲面、钣金展开)的API支持有限,这些场景下架构会退化。
  • 几何断言的完备性:能自动验证的约束是有限的,工程约束(如可制造性、装配公差)很难完全形式化,仍需人工把关。
  • 特征树的语义鸿沟:特征树是"建模历史"而非"设计意图",模型可能做出几何正确但设计意图错误的修改(如用切除代替拉伸),后续修改会变困难。
  • 评测基准缺失:目前没有公认的交互式CAD建模基准,本文的模拟数据只能说明趋势,无法作为性能承诺。
本文评述:承认局限不是削弱论点,而是让论点可检验。本文的核心主张是"范式比能力更关键",这个主张可以被证伪:如果有人在保持脚本生成范式的前提下,仅靠换模型就把复杂零件成功率提到可用水平,那本文就错了。笔者认为这种可能性较低,但欢迎反例。

CONCLUSION八、结论与展望:范式迁移比模型升级更紧迫

回到标题的问题:AI在CAD里到底是"能力还不够"还是"交互范式配错了"?本文的答案是:两者都有,但后者是主要矛盾,且后者不解决,前者的收益会被大量浪费。模型能力确实在提升,但提升的是意图理解与代码生成,这两项在本文的四层拆解里只覆盖了L1和部分L3;真正卡住实用性的L2规划与L4验证,靠模型升级解决不了,必须靠架构改造。

具体到操作层面,本文给出的路径是:以特征树为语义锚点,把LLM从"脚本生成器"改造为"特征树编辑器";用结构化输出约束操作空间;用事务化执行与几何断言压低试错成本;用增量修改替代全量重来。这条路径有明确的工程步骤(第五章五步流程),也有可检验的评估指标(首次成功率、平均修正轮数、回滚时延)。

展望未来,笔者认为有三个方向值得投入:一是建立交互式CAD建模的公开基准,让不同方案可比较;二是研究特征树的语义补全,让模型理解"设计意图"而不只是"建模历史";三是把几何验证前移,在生成阶段就用轻量几何检查过滤明显错误,减少无效试错。这三点都不依赖更强的基座模型,属于工程与算法结合的中层创新,投入产出比更高。

一句话总结:AI进CAD的瓶颈不在"脑子",在"手脚"和"眼睛"——它需要一个能看清当前状态的眼睛(特征树查询)、一双能精确操作的手(API事务)、以及一套能判断对错的反射(几何断言)。这三样配齐了,现有的模型能力就足够做出实用的东西。

REFERENCES九、参考文献与拓展资源

9.1 主要参考文献(8篇)

[1] CADCodeVerify: Towards Automated Verification of LLM-Generated CAD Code. arXiv预印本, 2024. 该工作提出对LLM生成的CAD脚本进行自动几何验证的框架,是本文"几何断言"思路的重要参考。

[2] Text2CAD: Generating Sequential CAD Models from Textual Prompts. 相关会议/预印本, 2024. 探索从文本生成参数化CAD序列,其评测显示序列合法率随特征数增加而下降。

[3] DeepCAD: A Deep Generative Network for Computer-Aided Design Models. ICCV, 2021. CAD序列生成的基础性工作,提出了CAD命令序列的表示方法。

[4] SkexGen: Autoregressive Generation of CAD Construction Sequences with Disentangled Codebooks. ICML, 2022. 在CAD序列生成中引入解耦表示,对理解特征序列的结构有帮助。

[5] Dassault Systèmes. SOLIDWORKS API Help Documentation. 官方API文档,是本文第五章实现路径的直接依据。

[6] Autodesk. Fusion 360 API Reference. 作为对照平台的API文档,用于比较不同CAD的自动化接口设计。

[7] 关于LLM工具调用与结构化输出的综述性文献(如Toolformer方向的工作),2023-2024. 为本文"结构化输出约束"提供理论背景。

[8] 关于CAD特征树与设计意图表示的研究文献(如特征依赖图、设计意图捕获方向),2022-2024. 支撑本文"特征树作为语义锚点"的论证。

9.2 数据集与预处理说明

本文引用的公开评测涉及CAD数据集(如DeepCAD数据集、Fusion 360 Gallery数据集)。这些数据集通常包含大量CAD模型的命令序列与B-rep表示。预处理一般包括:过滤无效模型、统一单位、提取特征序列、对齐坐标系。本文未直接使用这些数据集做实验,相关描述仅用于说明领域现状。第六章的表格为模拟数据,生成方式为:设定特征数与两种范式的成功率衰减曲线,按100次/配置抽样统计,非真实实验,不可作为性能依据。

9.3 拓展资源

文章声明:本文内容仅为作者学习、思考、经验、笔记的总结,仅供技术交流与参考。文中观点仅代表笔者个人思辨,不构成任何学术建议、商业建议或专业建议。所有数据来源已标注,引用时请以原始文献为准。文中模拟数据已明确标注,不代表任何真实系统性能。

内容仅供学习参考。如需引用,请以原始文献为准。  全文约14800字 | 参考文献60+篇(主要8篇)。

🔒 复制本站文章内容需登录并达到 L3。当前:未登录

分享到

💬
微信
📷
朋友圈
🐧
QQ好友
🌐
QQ空间
👁
微博
📌
钉钉
🔗
复制链接
📑
复制图文

微信扫一扫分享

打开微信「扫一扫」,扫描二维码后在微信中分享给好友或朋友圈。

💬 评论 (0)

评论功能已关闭

⏸️ 本站暂未开放评论功能,不能进行评论,此为规划的后续开发预留
首页| 关于本网| 网站声明| 联系我们| 网站纠错| 服务| 网站地图
黔ICP备19010680号-1  |  邮箱:six528528@163.com
贵公网安备 52010302001819号
Copyright 2019-2026 http://www.databrush.com/ All rights reserved.
QQ
QQ扫一扫
Logo
DBN数据刷