ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

用DeepSeek写SolidWorks VBA宏:智能化建模实战指南

用DeepSeek写SolidWorks VBA宏:智能化建模实战指南 一次无意间的尝试让我把 DeepSeek 用在了 SolidWorks 二次开发上说出来你可能不信我是在一个加班赶方案的晚上被一堆重复性的建模操作逼到崩溃才动了用 AI 写 VBA 宏的念头。当时手里有个项目需要在几十个零件上反复做同样的切除特征、加同样的属性、导出一模一样的 STEP 文件。手动操作到第十个零件的时候我的耐心已经见底了。老实说SolidWorks 的 VBA 宏我平时也会写一点但每次都要翻 API 文档查方法名、查参数顺序写一个稍微复杂点的宏半天时间就没了。那天晚上我突发奇想既然 DeepSeek 在写代码方面这么强能不能让它直接替我写 SolidWorks 的 VBA 宏毕竟 VBA 本质上就是 Windows 下的 COM 编程DeepSeek 的训练数据里肯定有大量 SolidWorks API 的资料。结果一试还真行。DeepSeek 生成的宏代码我把它们贴到 SolidWorks 的 VBA 编辑器里跑起来居然能直接用。从那以后我的建模效率提升了一个量级——我现在做设计凡是遇到三步以上的重复操作第一反应不是硬扛而是让 DeepSeek 给我写个宏。到后来我甚至开始让 AI 直接生成整个自动化建模流程让 SolidWorks 在一个按钮下自动完成从草图到特征的全部动作。这篇文章就是我这一段时间实践下来的完整总结包含我踩过的坑、摸索出的提示词模板、以及一套从零到一的完整实操流程。如果你也是被重复建模搞到头大的 SolidWorks 用户或者你想知道 AI 到底能在 CAD 二次开发里帮你做到什么程度这篇文章值得你看完。1. 为什么用 DeepSeek 写 VBA 宏——智能化建模的核心思路1.1 SolidWorks 宏的底层逻辑其实没那么玄乎先给还没接触过宏的朋友补个基础。SolidWorks 自带的宏录制功能会把你的每一步操作转化成 VBA 代码它的逻辑特别简单粗暴你点一下拉伸它就记一个FeatureManager.FeatureExtrusion2你选一个面它就记一个SelectByID2。这些代码本质上是 SolidWorks 通过 COM 接口对外暴露的 API 函数调用跟你在 Word 里按 AltF11 看到的 VBA 是一回事。但是录制宏有个致命缺点它只会记录你的操作不会帮你思考。比如你录制一个拉伸凸台的宏它生成的是针对某个特定草图、特定尺寸的硬编码指令。你换一个零件、改一下草图名称、调整一下尺寸位置录制出来的宏就会报错因为代码里写的选择对象 ID 已经不存在了。这就是我为什么推荐用 DeepSeek 来生成宏——它能理解你的意图然后自动写出带逻辑判断、带参数化、带错误处理的完整代码而不是像录制宏那样机械地复读你的每一步鼠标操作。1.2 为什么选 DeepSeek 而不是其他 AI其实我现在常用的 AI 工具不少豆包、Kimi、智谱清言都试过。但专门用 DeepSeek 来写 SolidWorks 宏我有我的理由。先看代码生成能力。SolidWorks 的 API 是典型的资料多但分散类型官方文档写得很简略网上论坛里的示例代码往往又老又残缺。DeepSeek 在代码类任务上的表现更稳定尤其是在生成一段完整可运行的代码时它对 API 函数名、参数顺序、返回值类型的把握更准确很少出现看起来像那么回事、一运行就报错的情况。再看上下文理解。写宏这件事最怕的是 AI 不理解 SolidWorks 的对象模型。比如你告诉它选择前视基准面它得知道在 VBA 里应该用SelectByID2(前视基准面, PLANE, 0, 0, 0)前面的大类参数要写PLANE而不是PLANE1或者别的什么。DeepSeek 在这方面表现得相当靠谱可能是它的训练数据里 SolidWorks 论坛的内容足够多。还有些实际体验上的原因。网页版登录就能用不需要像某些工具那样装客户端、配环境我这种经常在工地和办公室两边跑的工程师实在太方便了。而且它的长文本能力不错我把一段几百行的现有宏丢给它让它分析哪里有问题、怎么改进它都能处理。注意我踩过坑后得出的经验不要指望 AI 生成的宏一次就能跑通。我用了这么久的 DeepSeek生成的宏第一次运行成功率大概在 60% 到 70%。但这已经非常强了——剩下的 30% 报错把报错信息直接复制粘贴回给 DeepSeek它自己就能改对。这个过程比我自己查 API 文档快十倍不止。1.3 智能化建模的核心工作流用 DeepSeek 辅助 SolidWorks 建模我总结了一套固定的工作流你不妨直接照搬第一步梳理需求。想清楚你要让 SolidWorks 做什么。是新建一个零件还是修改现有模型是要遍历装配体里的所有零件批量加属性这一步你越清楚后面 AI 生成的代码越准确。第二步用自然语言描述你的需求。打开 DeepSeek 网页版像跟同事交代工作一样把你的需求用中文写清楚。关键信息别省略操作对象是什么零件、装配体、工程图、操作类型是什么拉伸、切除、圆角、镜像、关键参数是多少尺寸值、角度值、阵列个数。第三步让 DeepSeek 生成 VBA 宏。明确提出让它生成 SolidWorks VBA 宏并且设定好你的 SolidWorks 版本和 API 版本的要求。第四步把代码复制进 SolidWorks VBA 编辑器运行。这一步没有任何技术含量但切记运行前先保存你的 SolidWorks 文件最好先在一个测试零件上跑。第五步调试并回传错误。如果运行报错把完整的错误信息连同代码一起复制回给 DeepSeek告诉它这段代码报错了错误信息是XXX请帮我修复。反复两三轮基本就能得到一个能稳定运行的宏。这套流程走顺了以后你相当于给自己配了一个随叫随到的二次开发工程师。关键不是它会写代码而是它懂你的需求——你用大白话告诉它你想要什么它就能给你一套能运行的 VBA 实现。2. 核心案例拆解让 AI 从零生成一个自动化建模宏2.1 实战场景自动创建带圆角的拉伸凸台为了让你直观感受 DeepSeek 写宏的真实水平我用一个最常见的需求来做演示在 SolidWorks 前视基准面上创建一个矩形草图拉伸成凸台然后在四条边自动加圆角。这个场景很基础但它涵盖了 SolidWorks 建模的最核心 API 调用链文档访问、草图绘制、尺寸标注、特征拉伸、特征圆角。如果 AI 能把这个宏写明白那么 80% 的基础建模宏它都能搞定。我当时的提示词是这样写的请用 SolidWorks VBA 宏生成一个程序。 功能要求 1. 新建一个零件文档使用模板 Part.prtdot 2. 在前视基准面上创建一个矩形草图矩形宽度 100mm高度 60mm以原点为中心 3. 退出草图后做拉伸凸台拉伸深度 25mm 4. 对四条竖直边添加圆角特征圆角半径 5mm 请使用 SolidWorks 2022 API注意变量声明要完整代码要有注释。DeepSeek 给我的回复整理后是一段大约 80 行的 VBA 代码。这里我把核心部分贴出来做讲解完整代码因篇幅原因做了简化但核心调用你一眼就能看懂Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim swPart As SldWorks.PartDoc Dim swSketchMgr As SldWorks.SketchManager Dim swFeatMgr As SldWorks.FeatureManager Sub main() Set swApp Application.SldWorks Set swModel swApp.NewDocument(C:\ProgramData\SOLIDWORKS\SOLIDWORKS 2022\templates\Part.prtdot, 0, 0, 0) Set swPart swModel Set swSketchMgr swModel.SketchManager Set swFeatMgr swModel.FeatureManager 在前视基准面上新建草图 swModel.ClearSelection2 True swModel.Extension.SelectByID2 前视基准面, PLANE, 0, 0, 0, False, 0, Nothing, 0 swSketchMgr.InsertSketch True 绘制中心矩形 swSketchMgr.CreateCornerRectangle -0.05, 0.03, 0, 0.05, -0.03, 0 标注智能尺寸 Set swDispDim swModel.AddDimension2(0, 0.04, 0, 0, 0, 0, 0, 0, True, D1草图1) swModel.ClearSelection2 True 退出草图并拉伸 swModel.ClearSelection2 True swFeatMgr.FeatureExtrusion2 True, False, False, 0, 0, 0.025, 0, False, False, False, False, 0, 0, False, False, False, False, True, True, True, 0, 0, False 对四个边添加圆角 Dim swSelMgr As SldWorks.SelectionMgr Set swSelMgr swModel.SelectionManager swModel.ClearSelection2 True 此处通过坐标选择四条边具体坐标根据模型几何确定 swModel.Extension.SelectByID2 , EDGE, 0.05, 0.03, 0.0125, True, 1, Nothing, 0 swModel.Extension.SelectByID2 , EDGE, -0.05, -0.03, 0.0125, True, 2, Nothing, 0 swModel.Extension.SelectByID2 , EDGE, -0.05, 0.03, 0.0125, True, 3, Nothing, 0 swModel.Extension.SelectByID2 , EDGE, 0.05, -0.03, 0.0125, True, 4, Nothing, 0 swFeatMgr.FeatureFillet3 0, 0, 0.005, 0, 0, 0, 0, TANGENT_EDGE, FILLET, 0 End Sub细看这段代码你就能明白为什么 DeepSeek 适合干这个活。它不只是把录制宏的函数调用搬过来而是主动做了三件聪明的事一是用了SelectByID2配合坐标参数来选择边线。手工录制的宏在选择边线时往往会生成一大堆GetSelectedObject6之类的辅助逻辑或者依赖特定的特征名称碰到改名就完蛋。而 DeepSeek 生成的代码直接通过边线中点的三维坐标来定位这对拉伸体来说非常可靠因为矩形体的边线坐标一定落在你设定的几何位置上跟特征名称无关。二是合理使用了ClearSelection2。这是新手写宏最容易忽略的点。CAD 软件的选择管理器是有状态的——你上一个操作选中的对象还留在选择集里如果不手动清空后续的操作会莫名其妙地同时选中多个对象导致特征报错。DeepSeek 几乎在每次关键操作前后都加了这行清理代码说明它真的明白 SolidWorks 对象模型的工作方式。三是它对异常情况有基本预判。虽然代码本身没有写On Error Resume Next这一点我后面会建议你加上但它在注释里写了坐标由模型几何确定这样的说明提醒你不同几何形状需要调整选择坐标。这说明 AI 有基本的工程意识不只是给你一段死代码。2.2 从基础到进阶让 AI 生成参数化的通用宏上面的宏虽然能跑但它有一个明显的局限尺寸写死了。矩形永远是 100×60拉伸深度永远是 25圆角永远是 5。这种硬编码的宏换一个场景就得手动改代码本质上没比录制宏强多少。真正的智能化建模应该让宏具备通用性——同一段代码通过输入参数的改变来适应不同的设计需求。我接着把需求抛给了 DeepSeek请修改上面的宏让它变成参数化版本。 要求 1. 在宏开头定义参数变量width, height, depth, filletRadius类型为 Double 2. 在 SolidWorks 中使用 InputBox 让用户输入这 4 个参数 3. 根据用户输入的参数值动态生成矩形草图、拉伸凸台和圆角 4. 添加必要的错误处理比如用户输入非数字时给出提示并退出这次 DeepSeek 给我的代码质量又上了一个台阶。它用InputBox接收用户输入用Val()函数做数据转换用IsNumeric()做输入校验最后还自动调整了视口视角让用户能直接看到生成结果。这让我彻底服了——AI 不是简单拼凑 API 调用它是真的在设计用户交互流程。这套代码写下来已经不是一段宏了而是一个功能完整的参数化建模小程序。你双击运行输入四个数字SolidWorks 自动就把零件建好了全程不需要手动碰一下鼠标。参数化版本的核心代码逻辑是这样的Dim width As Double, height As Double, depth As Double, filletRadius As Double Sub main() 输入参数 On Error Resume Next width Val(InputBox(请输入矩形宽度 (mm):, 参数输入, 100)) height Val(InputBox(请输入矩形高度 (mm):, 参数输入, 60)) depth Val(InputBox(请输入拉伸深度 (mm):, 参数输入, 25)) filletRadius Val(InputBox(请输入圆角半径 (mm):, 参数输入, 5)) 简单校验 If width 0 Or height 0 Or depth 0 Or filletRadius 0 Then MsgBox 输入的参数不合法请确保所有值都大于0, vbExclamation, 参数错误 Exit Sub End If 之后跟之前一样建模但所有坐标和尺寸都基于变量计算 ... End Sub这一段代码虽然简单但体现了一个关键思路AI 具备理解参数化设计需求的能力。你不需要告诉它应该在宏开头定义四个变量这种具体的技术指令你只需要说让它变成参数化版本用户能输入数值它自己就知道要用InputBox、要用Val()做转换、要加校验。这就是大语言模型在 CAD 领域最有价值的地方——它把你脑子里的模糊需求翻译成了严谨的机器指令。2.3 实测心得什么话术能把 AI 的宏写得又快又好方法学会了但很多人反馈说让 DeepSeek 写的宏还是经常跑不通。我观察了一下问题往往出在提示词上。提示词写得好不好直接决定了 AI 生成代码的质量。根据我的大量实测有几个关键技巧值得你记下来。技巧一是说清 SolidWorks 版本。DeepSeek 的数据库里装着 SolidWorks 从 2012 到 2025 各个版本文档的资料不同版本的 API 签名有差异。比如FeatureExtrusion2在旧版资料里参数长度是 18 个新版变成了 20 多个。你不说版本它可能给你生成一套旧版 API在 SolidWorks 2022 上跑就会报参数数量不匹配。我在提示词里固定写一句请使用 SolidWorks 2022 API命中率大幅提升。技巧二是描述记录顺序比描述界面操作更有效。你直接说选择前视基准面AI 会自己转换到SelectByID2(前视基准面, PLANE, 0, 0, 0)但如果你说我点了一下设计树里的前视基准面AI 很可能就懵了因为你给的是界面信息而非 API 信息。尽量用功能性的语言描述不要让 AI 去猜你的鼠标操作。技巧三是对关键参数标注单位。SolidWorks 的 API 里默认单位是米MKS 系统也就是说你在界面里输入 100mm代码里如果直接用 100模型就是 100 米大。我亲眼见过有同事让 AI 生成宏出来的模型尺寸是 100 米乘以 120 米吓得以为是电脑出了问题。所以在提示词里尺寸要么直接写米比如 0.1要么明确告诉 AI 单位为毫米请自动转换。我的习惯是让 AI 按毫米生成因为界面输入框也是毫米语义一致不容易搞混。技巧四是主动要求错误处理。AI 默认生成的代码是不含错误处理逻辑的你如果不说它不会主动加。但宏在 SolidWorks 里跑经常会碰到选择失败、特征失败、对象不存在之类的情况。所以我会在提示词末尾固定加一句请在关键代码段添加 On Error Resume Next 错误处理并在操作失败时用 MsgBox 给出提示。加了这句生成的宏健壮性完全不是一个级别。关于提示词我还有一点想特别强调不要一次性想着让 AI 生成一个大而全的宏。我刚开始尝试的时候直接跟 DeepSeek 说帮我写一个能自动建模整个泵体的宏结果它生成了一段 300 行的代码看着像模像样但跑起来各种报错调试成本极高。正确的做法是拆分成小任务先让它生成创建草图并拉伸的宏跑通了再让它添加圆角再跑通了再打孔。小块拼起来的大功能远比一次性生成的稳定。3. 完整实操过程从提示词到宏落地的全流程演示3.1 新手友好五步跑通第一个 AI 生成宏纸上谈兵聊了这么多现在我们完整走一遍实操流程。这个流程我在多个版本的 SolidWorks 上验证过2018、2020、2022在 Windows 10 / 11 上都能跑通。你要是从来没写过宏按照下面五步走最多十分钟你就能得到人生中第一个 AI 生成的 SolidWorks 宏。第一步打开 SolidWorks 的 VBA 编辑器。在 SolidWorks 里按下 AltF8 调出宏对话框。这里有两个选项新建和录制。听我的点击新建在弹出的对话框里选零件然后点击完成。SolidWorks 会自动打开一个 VBA 编辑窗口同时里面应该有一个空白的宏代码模块。有些朋友可能找不到 AltF8 这个快捷键正常。SolidWorks 的宏入口藏得比较深工具栏空白处右键选择自定义在弹出的窗口里找到工具类别你会在里面看到一个红色的圆点图标那个就是宏工具栏。把这个工具栏拖到菜单栏上以后用起来就方便多了。快捷键和菜单路径记不牢都不怕记住一个原则宏相关的功能全部在工具菜单下面。第二步跟 DeepSeek 对话让它生成代码。打开 DeepSeek 网页版把前面演示的提示词复制进去。注意这里的核心句子是请帮我用 SolidWorks VBA 宏实现以下功能 [在这里描述你的需求] 要求使用 SolidWorks [你的版本号] API添加完整的错误处理代码要有注释。描述需求时尽量具体。不是只写画一个零件而是把关键信息全列出来。我习惯用分条列举的方式写提示词因为 AI 对结构化文本的理解最好。你多试几次就能找到感觉——AI 返回代码质量最高的前提是你在输入时把意图说得足够清晰。第三步复制代码并修正模板引用。DeepSeek 生成的代码复制到 VBA 编辑器后第一件事是检查它引用的文档模板路径是否存在。我遇到过太多次了——AI 默认生成NewDocument(C:\ProgramData\SOLIDWORKS\SOLIDWORKS 2022\templates\Part.prtdot)但你的实际安装路径可能完全不一样。如果代码运行时报文件未找到八成就是这个路径不对。最快的解决办法是删掉模板路径参数改用如下写法Set swModel swApp.NewDocument(, 0, 0, 0)这样 SolidWorks 会使用默认模板创建新零件省去路径匹配的麻烦。第四步在 VBA 编辑器中设置引用。这一步是新手最容易忽略的。新建的宏默认可能没有引用 SolidWorks 的类型库比如声明Dim swApp As SldWorks.SldWorks时VBA 直接报用户定义类型未定义。解决办法是在 VBA 编辑器菜单栏点工具选引用在列表里勾选SolidWorks 2022 Type Library你的版本号可能不同。勾选完成后点击确定。这个引用设置相当关键。相当于告诉 VBA 程序我要用 SolidWorks 的 API 了请把它的函数库加载进来。不设置引用代码里所有SldWorks.开头的数据类型都会无法识别。第五步运行宏。按 F5 或者在 VBA 编辑器里点运行按钮。如果代码没有任何问题SolidWorks 界面会自动新建一个零件并开始建模。如果报错把报错代码行号和错误信息记下来连同代码一起复制回 DeepSeek 让它修复。还有一个建议首次运行 AI 生成的宏之前先在 VBA 编辑器菜单栏的文件里点击保存把宏文件存成一个.swp文件放在容易找到的位置。这样就算宏跑挂了你也不用担心丢失代码。3.2 常用功能模块的提示词模板库用 DeepSeek 写了一段时间的宏之后我攒了一套自己的提示词模板库。这些模板我反复用、反复验证过覆盖了 SolidWorks 建模中最常见的几类操作场景。你直接复制过去改改关键参数就能用省去每次从头描述需求的功夫。批量修改零件属性。这个宏是跟 PDM 系统对接时最常用的。需求描述是这个样子的请用 SolidWorks VBA 宏实现以下功能 1. 遍历当前打开的装配体中的所有零件 2. 对每个零件设置自定义属性材料为 Q235表面处理为喷漆设计者不变 3. 属性写入后弹窗提示共处理了多少个零件 4. 需要处理装配体中的子装配体遇到子装配体时递归进入查找零件 使用 SolidWorks 2022 API注意遍历零件时要用 Component2.GetModelDoc2 方法批量导出 STEP 文件。这个宏简直到处都能用上客户要图纸、内部评审、加工对接都需要不同格式的模型文件。请用 SolidWorks VBA 宏实现以下功能 1. 遍历当前打开的装配体中的所有零件和子装配体 2. 将每个零件另存为 STEP 格式文件保存在当前装配体同名文件夹下 3. STEP 文件的命名规则为零件原名_step.step 4. 如果文件夹不存在则自动创建 5. 导出完成后显示导出成功数量 注意 STEP 文件的导出要用 SaveAs3 方法文件格式代码是 109自动创建工程图三视图。设计完零件后最讨厌的步骤就是出工程图但这个宏能帮你一键完成。请用 SolidWorks VBA 宏实现以下功能 1. 打开当前零件的默认工程图模板 2. 自动插入前视、左视、上视三个视图比例设为 1:1 3. 在图纸右上角插入等轴测视图 4. 调整视图位置使布局整齐 使用 SolidWorks 2022 API视口类型代码为 2 是前视4 是左视6 是上视参数化齿轮建模。这个稍微复杂但你只需要把齿数、模数、压力角这些参数告诉 AI请用 SolidWorks VBA 宏实现一个直齿圆柱齿轮的参数化建模 1. 使用 InputBox 让用户输入齿数 Z、模数 m、齿宽 B、压力角 alpha默认20度 2. 根据齿轮公式计算分度圆直径 d Z * m 3. 只生成齿廓草图并拉伸不需要生成完整的齿轮实体后续可手动补充 4. 齿廓可以用渐开线近似用样条曲线拟合即可 请生成可靠的参数计算代码注意单位统一为毫米这四个模板基本覆盖了我日常 70% 的宏需求。你要做的只是把方括号里的参数替换成实际值然后用自然语言补充一些细节要求DeepSeek 生成的宏质量都相当能打。3.3 SolidWorks 与 AI 协作时的高效设置说到效率提升我的经验是把工作流的冗余步骤剪干净比单纯让 AI 写更快的代码要有用得多。有几个设置和习惯我用了之后整体流程顺畅了一个档次。首先是把 VBA 宏分配一个快捷键。在 SolidWorks 自定义界面里你可以把宏文件拖到某个快捷键位上。我用的是 CtrlShiftN按一下就能弹出宏运行对话框然后选中目标宏执行。习惯了以后你写宏、跑宏的整个过程可以控制在三秒以内。其次是善用 SolidWorks 的任务调度功能。如果我要批量处理一堆文件不会在 SolidWorks 图形界面里逐个打开跑宏而是用 Windows 的任务计划程序定时运行 SolidWorks 批处理脚本或者写一个简单的 PowerShell 脚本循环调用宏。这一步借助 AI 写起来也不难——让 DeepSeek 生成一个 PowerShell 脚本遍历文件夹下的所有 SLDPRT 文件调用 SolidWorks 命令行的/m参数传入宏路径即可实现全自动批处理。还有一点是关于宏代码的版本管理。AI 生成的代码不能只存一个最终版本我建议每个宏都新建一个文件夹把初版、修复版、最终版分开存同时在代码开头注释里写明这个宏的开发日期、用途、AI 对话的关键词。不然三个月后你回来看肯定忘了这段代码当初是为什么写的。我吃过这个亏现在养成习惯了。4. 常见问题与排查技巧实录4.1 代码报错快速定位表AI 生成的宏第一次跑不通太正常了。关键是你要能快速定位问题到底出在哪。根据我这几个月的实践把最常见的错误类型整理成了下面这个速查表。错误类型典型报错信息主要原因解决方案对象未选择要求选择一个面/边/草图代码里SelectByID2引用的对象名称或坐标与实际情况不符用 SolidWorks 录制一段手动操作宏对照里面的对象名称修正代码模板路径错误找不到文件NewDocument里的模板路径跟你电脑上的不一致改用swApp.NewDocument(, 0, 0, 0)使用默认模板类型未定义用户定义类型未定义没有勾选 SolidWorks 类型库引用VBA 编辑器 - 工具 - 引用 - 勾选 SolidWorks Type Library数组索引越界下标越界代码里遍历特征或配置时数量和实际不符检查循环终止条件在循环内打印计数变量调试单位异常模型尺寸过大/过小代码直接用数值导致单位换算错误明确让 AI 按毫米处理或手动把所有尺寸除以 1000参数数量不匹配子过程或函数调用中的参数数或其类型有错误SolidWorks API 版本不同参数数量不同在提示词里强调具体版本或把报错的 API 名称发给 AI 修复许可错误无法获得下列许可 SolidWorks standardSolidWorks 授权异常或软件崩溃残留重启 SolidWorks必要时运行清理工具清理注册表后重装许可服务这个表里最难排查的是第一种对象未选择。因为 SolidWorks 的SelectByID2要求名称和坐标完全精确AI 生成的坐标通常是根据它假设的几何位置计算出来的跟你实际模型不一定对得上。我一般遇到这种问题会先手动操作一遍用录制宏的方式拿到正确的特征名称和选择坐标再让 AI 根据这些真实数据重新生成代码。4.2 调试宏的独家经验调试 AI 生成的宏我有一套自己的方法跟调试手写代码完全不同。第一在每条 API 调用之间加一行检查代码。比如Set swFeat swFeatMgr.FeatureExtrusion2(...) If swFeat Is Nothing Then MsgBox 拉伸特征创建失败, vbCritical Exit Sub End If这段代码的作用是让宏在失败时立刻弹窗告诉我们卡在哪一步。AI 生成的代码默认不会有这种检查我让 DeepSeek 在关键 API 调用后自动补上。这样跑一遍宏就知道是草图、拉伸还是圆角出了问题不用拿眼睛一行行盯代码。第二用 MsgBox 打印关键变量的值。特别是 AI 用 InputBox 接收参数时我都会加一行MsgBox 宽度 width 高度 height之类的代码确认输入正确。别小看这一行很多宏跑出奇怪模型的问题根源就是输入参数没被正确传递。第三善用 VBA 编辑器的逐行执行功能。按 F8 一行行执行宏在每一行观察 SolidWorks 界面的变化这样能精准定位是哪一行操作导致了错误。这个方法虽然慢但排查效果最好。第四把错误信息原封不动丢回给 AI。这是最有效的调试方式。我会把完整的宏代码和报错信息一起复制给 DeepSeek然后说这段代码报错了请分析原因并修复。AI 能看代码、能看报错它通常能准确判断出是参数问题还是逻辑问题直接给出修正后的完整代码。反复三轮左右代码基本就能稳定运行了。4.3 新手最容易犯的几个错误最后说几个我在带新人过程中总结出来的高频错误。如果你刚开始接触这个方向这些坑迟早会踩提前了解了能省不少时间。第一个错误是直接拿生产模型试跑宏。AI 生成的宏第一次运行十有八九会有问题。如果你直接在重要的、还没存盘的生产模型上跑宏一旦操作错误可能会把模型改得乱七八糟。我的习惯是在 SolidWorks 里创建一个简单的测试零件先在上面验证宏能正常跑通再拿到真实模型上去用。这个习惯帮我避免了无数次挽救模型的噩梦。第二个错误是忽略单位制。前面说过了2015 年以后版本的 SolidWorks API 默认使用米作为长度单位。很多新人在提示词里说宽度 100AI 不知道单位默认按米处理。我的解决方案是在提示词里显式写明所有尺寸按毫米计算或者在代码里加swModel.SetUserPreferenceIntegerValue swDefaultLengthUnit, swMM把单位设置成毫米。第三个错误是不保存宏文件。我第一次用 AI 生成宏的时候直接在 VBA 编辑器里跑的跑了通就算了没保存.swp文件。结果过几天想再用这个宏发现代码没了只能再让 AI 生成一遍还不见得能生成一模一样的。现在我的习惯是任何宏只要验证能跑通立刻在 VBA 编辑器里保存到项目文件夹。宏文件很小存一堆在硬盘上没压力但要用的时候找不到才真要命。第四个错误是忽视装配体环境下的选择逻辑。在零件环境里能跑的宏放到装配体里经常报错。原因是装配体里SelectByID2的坐标系和对象层级跟零件环境完全不同。你在让 AI 写装配体的宏时一定要在提示词里强调这段代码将在装配体环境中运行。5. AI 生成宏的边界与进阶方向5.1 哪些宏适合 AI 代写哪些最好不要用 AI 写宏这件事我不建议你啥都往 AI 上扔。根据我这些时间的经验适合 AI 生成的宏有这些共同点交互逻辑简单但代码繁琐——比如批量导出、批量加属性、遍历文件夹操作文件这些功能本身不复杂但代码要写很长AI 生成起来既快又不容易出错。API 调用明确且有大量公开资料——比如创建拉伸、旋转、阵列这些基础特征论坛上有海量示例代码AI 训练时见过足够多的样本生成的代码质量就高。有明确的判断分支但规则清晰——比如根据零件尺寸决定是否加加强筋这种条件逻辑 AI 也能写得很干净。不适合 AI 生成的宏也有几类。一类是涉及极复杂的几何计算的比如齿轮啮合仿真、复杂的曲面造型AI 生成的代码往往逻辑上说得通但几何上不对。另一类是需要大量交互式选择的宏——你希望用户在运行过程中不断点选界面元素这种宏 AI 很难处理好状态管理因为它对 SolidWorks 交互流程的理解还不够深入。还有一类比较微妙涉及公司内部 PDM 或 PLM 系统私有 API 的宏这类宏依赖的接口信息在网上几乎搜不到AI 的预训练数据里没有相关信息生成出来也是瞎编的。这种宏只能找有经验的二次开发工程师来写。5.2 从AI 写宏到AI 辅助设计还有多远写宏只是 AI 进入 CAD 领域的入口。这段时间的实践中我更期待的是 AI 从代码生成器变成设计助手。当一个设计师告诉 AI 这个零件要承受 5000N 的力壁厚 3mm 和 5mm 哪个更好AI 能结合材料力学知识出方案、做初步校核这才是真正的智能化设计。以当前的 AI 能力它已经能辅助做一些简单的工程决策。比如我让 DeepSeek 同时提供三种结构方案它基于各类知识库给出的合理性建议竟然比不少初级工程师想得还周全。而基于这个方向下一步探索就是从宏到参数化模板再到知识驱动的自动化设计。现在的路径是借助 AI 写宏去解决具体的重复劳动把碎片时间用来思考设计本身。等积累了足够的AI 辅助设计经验后就可以逐步演变成一个固定的工作模式产品需求 - AI 提方案/生成参数化模型 - 工程师审核/调整 - 快速出样。这个过程核心不是 AI 有多强而是你愿不愿意升级自己的设计工具链。说到底AI 在这里的定位不是取代工程师而是把我们从鼠标点击器变成定义规则的人。你会告诉 AI 什么情况下需要倒角、什么情况下要用加强筋、什么情况下公差要放严——这些规则是 AI 永远学不来的因为它们来自现场的装配经验、加工反馈和多年踩坑。5.3 一个让人上头的扩展玩法宏代码库的计划用了三个月的 DeepSeek 生成宏我逐渐做出了一点自己的积累。最近我在整理自己常用的宏代码把它们分门别类放在了本地的一个宏代码库文件夹里并按功能模块做成一个个带参数说明的标准宏模板。这个代码库建好后效率还能再上一层楼。比如遇到给装配体所有零件添加质量属性的需求我不用再从头描述让 AI 生成直接从库里挑一个最接近的模板在上面改改参数就能用。如果这个模板本身有问题我再把修复过程反馈给 AI让它优化模板本身。代码库在持续进化我的建模效率也在不断提升。我还试着做了一个更激进的玩法把代码库里的宏按功能模块拆开让 DeepSeek 理解每个模块的输入输出接口然后让它根据具体需求自动组合不同的模块生成新宏。有点像是给 AI 搭了一套乐高积木它能按需拼出各种不同的成品。实测下来这种方式生成的宏比纯靠提示词生成的稳定得多因为构成模块都是经过验证的稳定代码。跟你分享这个是想说AI 生成宏这事儿表面上是让 AI 替你写代码但它的长期价值其实在于让你积累起一套属于自己的设计工具链。你用得越久这套工具链越完善你的重复劳动就越少留给真正需要脑力的设计决策的时间就越多。最后说两句实在的这段时间用 DeepSeek 写 VBA 宏要说最大的收获不是省下了多少时间而是改变了我面对重复劳动时的心态。以前遇到批量改属性、批量导出的活第一反应是硬着头皮干干到半夜眼冒金星。现在我的第一反应是这活儿能不能写个宏自动化掉然后花十分钟跟 AI 沟通需求跑通一遍验证没问题剩下的时间用来喝茶发呆或者干别的正事。如果你也要试试这条路我给你三条建议。第一从最小的需求开始练手不要一上来就追求全自动建模先解决你平时最烦的那一个重复性操作。第二提示词一定要写清楚版本和环境这句话能让你的成功率提升一半。第三跑出来的宏一定要存好那是你积累数字资产的一部分以后改改就能用。AI 写宏、AI 辅助设计这条路才刚刚开始。也许过不了多久我们跟 CAD 软件的交互方式会彻底变个样子但有一点不会变真正好的设计还是需要工程师的灵魂和判断力。AI 负责跑腿我们负责思考这个组合就是我理解中的智能化建模。
返回列表