SOLIDWORKS 自动化三大核心体系

日期:2026-06-09 发布者: Antonio 浏览次数:

阅读本文,带你探索 SOLIDWORKS 中全新的自动化实现方式。很多使用者都曾借助 SOLIDWORKS 内置的 VB 编辑器录制宏程序,期望后续直接调用运行

阅读本文,带你探索 SOLIDWORKS 中全新的自动化实现方式。

解读 SOLIDWORKS 事件、互操作性及文档管理器对宏程序的赋能

很多使用者都曾借助 SOLIDWORKS 内置的 VB 编辑器录制宏程序,期望后续直接调用运行。但并非所有 SOLIDWORKS 操作命令都支持录制。也有部分使用者参考网络上大量教程、论坛案例与示例代码,从零手动编写宏程序。

如果你属于上述两类人群,或是单纯想要了解 VB 编辑器的拓展用法,本文将介绍两组多数使用者并不熟知的核心概念。掌握这些内容,将彻底打开 SOLIDWORKS 自动化的全新大门,它们分别是:SOLIDWORKS 事件、互操作性,以及后续讲解的SOLIDWORKS 文档管理器。

我们首先从 SOLIDWORKS 应用程序编程接口(API)文档中被称作委托的事件开始讲解。


一、什么是 SOLIDWORKS 事件

顾名思义,事件指 SOLIDWORKS 软件运行过程中触发的特定节点或操作行为,API 可以对这些行为进行监听。常见示例包括:打开文档、修改自定义属性、在界面中选中任意对象。

打开文档、修改自定义属性、界面选中操作,这些行为在软件内部均被定义为事件,开发者可通过代码让 API 对各类事件做出响应。

本文旨在帮助大家理解以下内容:

  • 事件的基本定义;

  • 事件的监听方法;

  • 事件的实际运用方式,让自动化程序不再局限于点击按钮触发,还能主动响应使用者在 SOLIDWORKS 内的各类操作。

本文不会编写完整可落地的宏程序,仅通过代码片段演示整体运行逻辑。


二、在本地 API 帮助文档中查看事件

打开随 SOLIDWORKS 一同安装的本地 API 帮助文档。

7a5cfa19-03e4-4b28-9cbd-cfc04d9431ed.png22ca9b88-9982-4122-a6f7-63b78817eeb1.png

在 API 帮助文档的内容目录中,可以找到委托节点,该节点罗列了当前 SOLIDWORKS 版本支持的全部事件。

我们可将事件按照应用对象分为以下类别:

1、应用程序事件:DSldWorksEvents

2、装配文档事件:DAssemblyDocEvents

3、工程图文档事件:DDrawingDocEvents

4、零件文档事件:DPartDocEvents

5、特征管理器视图事件:DFeatMgrViewEvents

6、模型视图事件:DModelViewEvents

7、鼠标事件:DMouseEvents

8、属性面板事件:DSWPropertySheetEvents

9、任务窗格事件:DTaskpaneViewEvents

我日常使用最多的是与当前活动文档绑定的事件,建议大家逐一查阅所有事件,绝大多数事件都配有详尽的功能说明与文档注释。

c36947e3-fc8d-45e3-9e5e-7f8e920f9abb.png

重要细节:所有委托均无法被手动调用。委托由 SOLIDWORKS 内部触发,当对应事件发生时,软件会自动携带参数执行委托对应的程序。


三、编写响应选中事件的宏程序

接下来演示如何监听 SOLIDWORKS 界面内的选中操作。我们在 VB 编辑器中新建宏程序,分步操作如下:

abaf709e-ca78-417e-b814-502188731740.png

步骤 1:整理默认模块并重命名

对软件自动生成的默认模块进行整理。为便于区分,建议按照统一规则命名模块,格式参考:S01_名称、S02_名称……

该命名方式可按照执行顺序对模块排序。

步骤 2:对 SOLIDWORKS 应用对象进行强类型声明

编辑器默认会将应用对象swApp声明为通用对象类型。我们需要替换为显式指定类型:

Dim swApp As SldWorks

该操作用于启用前期绑定,编辑器将激活智能感知功能,大幅降低方法与属性的查阅难度。

代码对比:后期绑定与前期绑定

8c1bbe9a-ad38-46e0-a8ed-7cde585dd506.png8418b37c-58cc-495c-986d-33cba8b01354.png

步骤 3:新建类模块用于处理事件

右键【模块】→【插入】→【类模块】。

b1f1b548-529f-47ee-9359-2be8d78da590.png

为类模块设置易识别的名称,示例名称:SolidEvents_Handler。

a905ec80-0124-493d-b127-6788bc98616e.png

在类模块中使用WithEvents关键字,声明需要监听的应用对象、零件对象、装配对象、工程图对象:

额外新增ModelDoc2类型变量,用于捕获当前处于激活状态的文档:

c9f68f11-cfd6-4a90-849c-db02ea33c8bb.png

Dim swModel As SldWorks.ModelDoc2

步骤 4:初始化类模块

选中对象下拉栏中的【类】、过程下拉栏中的【初始化】,创建Class_Initialize(类初始化)过程。

在初始化过程中完成核心变量的绑定:

debb02a6-83a0-4906-8afe-10635ee60dd5.png

通过swModel.GetType方法判断当前文档类型,该方法的返回值为整型,对应 API 帮助文档中的枚举表。

IModelDoc2 接口 — GetType 方法

.NET 语法

Visual Basic 声明:Function GetType () As System.Integer

C# 语法:System.int GetType ();

C++/CLI 语法:System.int GetType ();

备注:请参考非托管 C++ 与 C++/CLI 代码的差异说明。

返回值:文档类型,对应枚举swDocumentTypes_e。

文档类型枚举(swDocumentTypes_e)

75608d88-7225-4e85-9346-327cebbfef31.png3fd8a906-01f4-4f38-bba2-58e6ffe7cf36.png8cb3b835-6c1b-455b-984d-12b2b929ae9b.png

初始化后,你可以开始捕获事件

5957ca45-234e-4eb9-92b7-236ef2343a76.png

代码说明:以上代码是 99% 宏程序的基础,可避免因文档类型不匹配调用错误方法、属性,从而导致宏程序启动崩溃。若仅需让宏在零件文档中运行,可在装配、工程图的判断分支中添加Exit Sub语句,也可弹出提示框告知使用者。

步骤 5:捕获选中事件

本次演示使用用户完成选择后通知事件(UserSelectionPostNotify),该事件会在使用者每一次完成界面选中操作后触发。

2ab1d9b2-8106-4b3b-8f08-e5896d58a6bf.png

选中事件代码实现

调用 ** 选择管理器(SelectionManager)** 的GetSelectedObjectType3方法,该方法的返回值为长整型,对应选中类型枚举表。

5b43477c-aa1e-435a-bbe3-5724373a3cf9.pngdd042dc7-6af3-41f5-b41c-3c86c5189db7.png

699ab004-3a8b-4e19-8e34-9f74feaf3de4.png

运行测试

在标准模块中声明类对象,编写入口主程序:

新建零件文件并创建模型,运行main主程序;

按下快捷键Ctrl+G调出立即窗口,查看选中对象对应的编码。

运行结果示例

依次选中尺寸、面、实体特征、基准面后,立即窗口输出编码:14、2、22、4,与枚举表完全对应。


92fb14f3-9fbe-48ea-b785-a356ca29e705.png70a1df69-86e6-41d0-ab1b-5ab76ba524c8.png


你可以不断选择任何东西,从计数器那里查看它的长值

即时窗口显示的每个选区都有一个数字

41951848-34b9-485d-b2aa-0a9905370c67.png

API Help是这么说的:

6e6955ee-dfb8-4a39-bf87-25ecb40efe1c.png

基于该编码,你可以编写逻辑代码,针对性响应指定类型的选中对象。本案例中,我们将以尺寸和实体特征为例,实现外部控制逻辑。


四、互操作性:SOLIDWORKS 与 Excel 通信

本节讲解互操作性,以及组件对象模型(COM)的运行原理。

COM 全称组件对象模型,依托类型库文件(.tlb)实现不同应用程序之间的通信。借助 COM 技术,SOLIDWORKS 与 Excel 可以实现双向数据互通。

4.1 第一部分:SOLIDWORKS 调用 Excel

在 SOLIDWORKS 的 VB 编辑器中启用 Excel 引用,操作路径:【工具】→【引用】,勾选对应版本的Microsoft Excel 对象库。

127f9584-925e-42ed-873e-29b50f1bc376.pnge352c857-d556-4ebd-a800-d30719f2830b.png

添加引用后,即可在宏程序中调用 Excel 的所有对象、方法与属性,用法与 Excel 原生 VBA 完全一致。

案例需求

编写宏程序,将 SOLIDWORKS 中选中的尺寸、特征信息录入 Excel 表格:

若 Excel 未启动,自动新建 Excel 进程;

在工作表 1 中创建三列表格;

弹出无模态窗体维持程序连接;

窗体显示期间,SOLIDWORKS 内选中的指定对象会自动在 Excel 新增行;

关闭窗体时,释放所有 COM 对象指针,避免产生内存悬空引用。

1d452991-124b-43c0-bf31-c0280a3c5c70.png

9cbff85f-721a-42f6-af13-744d4ab0f603.png

补充说明

Excel 文件格式为.xlsm(启用宏的 Excel 工作簿);

B2 单元格记录当前关联的 SOLIDWORKS 零件完整路径;

完成数据采集后可直接保存 Excel 文件。

4.2 第二部分:Excel 调用 SOLIDWORKS

我们可以反向操作,通过 Excel 驱动 SOLIDWORKS,并结合 Excel 事件实现联动。

打开 Excel,启用【开发工具】选项卡(操作:Excel 选项→自定义功能区→勾选开发工具);

009ce562-7793-4784-b5d2-fd9ba63199e6.png

通过开发工具选项卡打开 Excel VB 编辑器。

9335a201-c1c0-472d-a9ff-7192ef00c8ba.png

Excel VB 编辑器与 SOLIDWORKS VB 编辑器存在界面差异:首次打开会显示当前工作簿对象与所有工作表对象,工作表支持单元格变更等内置事件。

74e938fe-a42a-4a67-9c9a-1e74cd2d1738.png

实现架构

沿用 SOLIDWORKS 宏的架构:

标准模块:作为程序入口;

类模块:捕获 Excel 内置事件;

窗体:维持程序通信连接。

a4508b2d-6f89-4ca7-8294-743b33b0fd89.png

操作步骤

将 SOLIDWORKS 端的窗体文件直接拖拽至 Excel VBA 项目中,复用窗体;

在 Excel VBA 引用列表中,添加以下库文件:

SldWorks 2025 类型库

SOLIDWORKS 2025 常量类型库

SwDocumentMgr 2025 类型库

ee2ffde1-b953-49c3-9bc4-6cbde3f7412d.png

编写代码建立通信,通过 Excel 单元格变更事件,修改 SOLIDWORKS 模型的尺寸与特征状态。

81298c30-efdf-40fe-8528-507f4da309d4.png


4.3 第三部分:借助文档管理器实现 Excel 调用 SOLIDWORKS

上述双向通信均需要保持 SOLIDWORKS 程序处于运行状态。而SOLIDWORKS 文档管理器是一套独立 API,无需启动 SOLIDWORKS 主程序,甚至不需要 SOLIDWORKS 软件许可,即可实现 SOLIDWORKS 文件的读写、参考修改、物料清单提取等操作。

6c902ea4-7df1-4acd-8904-5a315552eedd.png

本案例目标:使用 Excel 搭建配置器,通过参数驱动 SOLIDWORKS 三维模型。前置准备:SOLIDWORKS 模型参数化

在 SOLIDWORKS 中为尺寸绑定方程式,关联自定义属性(界面中 Σ 符号代表方程式驱动尺寸)。编写规则:在尺寸栏输入=+ 自定义属性名称,即可将尺寸与自定义属性绑定。

核心优势:借助文档管理器,无需打开 SOLIDWORKS,即可读写自定义属性,间接修改模型尺寸。

86456172-8121-4d26-9b3f-beea8342e4a2.png

然后,利用文档管理器 API 帮助,我们可以看到一个示例来使用它。

32a84c01-343c-4103-9e0e-174b946a86ed.png

正如我们所见,我们需要的唯一参数是许可证密钥,我建议将其放在一个分开的文件中,然后读取它,而不是在 vba 项目中写完整个密钥。

下一步是通过文档管理器打开文件。

4bd2ced0-cf22-4ad0-a6cf-acf9fab470e5.png

在获得我们想要的文档后,也就是Excel文件中路径的那个,我们修改了它的自定义属性。

1e6e802a-27f9-46d1-83aa-97d3633b5df1.png

最后一步是保存文件。

561f0512-6416-4690-a388-c4d392501acf.png


最终实现方案

在 Excel 单元格录入参数:高度、深度、宽度、厚度、是否带窗口;

文档管理器读取 Excel 参数,调用SetCustomProperty2修改 SOLIDWORKS 文件的自定义属性;

调用Save方法保存文件;

使用者在 SOLIDWORKS 中打开文件并重建模型,即可完成参数更新。

该方案可用于搭建产品报价配置器、参数化三维模型生成器。

Excel 配置器界面示例



部分文章来源网络或用户投稿,如有侵权请联系本站删除!

加入收藏 我有疑问


获取SW正版免费试用,有任何疑问咨询热线:400-886-6353或 联系在线客服

未解决你的问题?请到「问答社区」反馈你遇到的问题,专业工程师为您解答!

社交账号登录