SolidWorks 二次开发全面指南
SolidWorks 二次开发,也称为 API (Application Programming Interface) 开发,允许你使用编程语言来自动化、定制和扩展 SolidWorks 的功能,无论是创建宏来自动化重复性任务,还是开发功能强大的插件,API 都是你强大的工具。

第一部分:基础入门
什么是 SolidWorks 二次开发?
就是通过编写代码,让 SolidWorks “听你的话”,你可以:
- 自动化操作:一键完成一系列手动操作,如创建零件、生成工程图、添加注释等。
- 定制界面:添加自定义菜单、工具栏、属性页,让软件更符合你的工作流。
- 数据集成:将 SolidWorks 与其他系统(如 ERP、PDM、数据库)集成,实现数据的双向流动。
- 开发专用工具:针对特定行业或需求,开发独特的功能模块。
开发环境与语言选择
SolidWorks API 主要支持以下几种语言:
| 语言 | 优点 | 缺点 | 推荐场景 |
|---|---|---|---|
| C# (C Sharp) | 上手快,语法现代,拥有强大的 .NET Framework 库,社区庞大,调试方便。 | 性能略低于 C++,但绝大多数场景下足够。 | 强烈推荐初学者,适合快速开发宏、插件,进行数据处理和界面开发。 |
| C++ | 性能最高,功能最强大,可以访问所有底层 API。 | 学习曲线陡峭,开发复杂,调试困难。 | 对性能有极致要求的插件开发,或需要与硬件深度交互的场景。 |
| VB.NET / VBA (宏) | VBA 是录制宏的默认语言,简单直接,VB.NET 类似 C#。 | VBA 只能在 SolidWorks 内部运行,功能受限。 | 快速录制和修改宏,进行简单的自动化任务。 |
对于绝大多数开发者,从 C# 开始是最好的选择。
环境搭建
以 C# 为例:

- 安装 SolidWorks:确保你安装了 SolidWorks(推荐较新版本,如 2025 或更新),并记录下版本号(如 SP5)。
- 安装 Visual Studio:安装 Visual Studio Community(免费版),在安装时,务必勾选 “.NET 桌面开发” 工作负载。
- 安装 SolidWorks API SDK:
- 从 SolidWorks 官网下载对应版本的 API SDK (Software Development Kit)。
- 运行安装程序,它会自动将 SolidWorks 的类型库(
.tlb文件)和必要的引用文件注册到你的系统中。
第二部分:核心概念与 API 结构
SolidWorks 对象模型
SolidWorks API 是一个面向对象的层次结构,你操作的不是功能,而是“对象”,这个结构就像一棵树:
- SldWorks (根对象):代表整个 SolidWorks 应用程序,这是你操作的起点。
ModelDoc2(文档对象):代表一个打开的文档(零件、装配体或工程图)。PartDoc(零件文档)AssemblyDoc(装配体文档)DrawingDoc(工程图文档)
SelectionMgr(选择管理器):用于获取用户在图形区域中选择的对象。FeatureManager(特征管理器):用于操作特征(拉伸、切除等)。ModelView(模型视图):用于操作视图(旋转、缩放、平移)。
核心思想:要操作一个特征,你必须先获取 SldWorks 对象,然后获取活动的 ModelDoc2 对象,再通过 ModelDoc2 获取 FeatureManager,最后才能操作特征。
API 两大核心命名空间
在你写的 C# 代码中,需要引用这两个核心库:
SolidWorks.Interop.sldworks:包含了 SolidWorks 的所有对象、接口和枚举(如ModelDoc2,Feature,SelectionMgr等),你通过这个命名空间来“读取”和“调用” SolidWorks 的功能。SolidWorks.Interop.swconst:包含了大量的常量、枚举和错误代码(如swSelectType_e.swSelFACES表示选择面,swDocumentTypes_e.swDocPART表示零件类型),它为Interop.sldworks提供了“常量值”。
第三部分:实战演练 - 从第一个 C# 插件开始
我们将创建一个简单的插件,点击按钮后,弹出一个消息框显示当前打开文件的名称。

步骤 1:创建项目
- 打开 Visual Studio,创建一个新项目。
- 选择 “类库 (.NET Framework)” 模板,命名为
MyFirstPlugin。 - 确保你的项目框架版本是 .NET Framework 4.x(不是 .NET 5/6/7)。
步骤 2:添加引用
- 在“解决方案资源管理器”中,右键点击“引用” -> “添加引用”。
- 切换到“COM”选项卡。
- 找到并勾选以下两项:
SolidWorks 20XX Type Library(版本号根据你的 SolidWorks 版本而定)SolidWorks Constant Type Library
- 点击“确定”,Visual Studio 会自动为你生成
Interop程序集。
步骤 3:编写插件代码
将 Class1.cs 的代码替换为以下内容:
using System;
using System.Runtime.InteropServices; // 需要这个库来使用 DllImport
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
namespace MyFirstPlugin
{
// GUID 必须是唯一的,你可以用 Visual Studio 的工具生成
[Guid("A1B2C3D4-E5F6-7890-ABCD-EF1234567890")]
[ComVisible(true)]
[ProgId("MyFirstPlugin.Connect")]
public class Connect : SwAddin
{
#region "插件生命周期"
private SldWorks swApp;
private int nLastConnected = 0;
// 插件连接时被调用
public bool ConnectToSW(object ThisSW, int cookie)
{
swApp = (SldWorks)ThisSW;
nLastConnected = cookie;
// 设置插件信息
swApp.SetAddinInfo(nLastConnected, true, this.GetType().GUID.ToString("B"), null);
// 创建自定义菜单
CreateMenu();
return true;
}
// 插件断开连接时被调用
public void DisconnectFromSW()
{
// 清理资源
}
#endregion
#region "创建界面"
private void CreateMenu()
{
// 在“工具”菜单下添加一个子菜单
swApp.AddMenu2("工具", "我的插件", 0);
// 为这个子菜单添加一个命令
swApp.AddMenuCommand2("显示文件名", "显示文件名", ShowFileName, nLastConnected);
}
// 点击菜单项时执行的方法
public void ShowFileName()
{
ModelDoc2 swModel = swApp.ActiveDoc;
if (swModel == null)
{
swApp.SendMsgToUser("请先打开一个 SolidWorks 文档。");
return;
}
string fileName = swModel.GetTitle();
swApp.SendMsgToUser($"当前打开的文件是: {fileName}");
}
#endregion
}
}
步骤 4:注册与部署
- 生成程序集:在 Visual Studio 中,选择
Release模式,生成->生成解决方案,你会在bin/Release目录下找到MyFirstPlugin.dll。 - 注册 DLL:SolidWorks 插件是 COM 组件,必须注册才能被识别。
- 管理员权限:右键点击“开始”按钮,选择“Windows PowerShell 管理员”或“命令提示符管理员”。
- 进入目录:
cd "C:\path\to\your\project\bin\Release" - 执行注册:
regsvr32 MyFirstPlugin.dll - 如果出现错误:尝试先
regsvr32 /u MyFirstPlugin.dll卸载,再重新注册。
步骤 5:在 SolidWorks 中加载插件
- 打开 SolidWorks。
- 点击
工具->插件。 - 在列表中找到
MyFirstPlugin,勾选它,并勾选启动时加载。 - 点击
确定。
你应该能在 工具 菜单下看到 我的插件 子菜单,点击 显示文件名 就会弹出提示框了!
第四部分:进阶学习与资源
宏 - 学习 API 的最佳起点
在深入学习插件开发前,强烈建议你先学会录制和编辑宏。
- 录制宏:
工具->宏->录制,然后你在 SolidWorks 中进行一系列操作,停止录制后,会生成一个 VBA 文件 (.swp)。 - 编辑宏:
工具->宏->编辑,这会打开 VBA 编辑器,你可以查看 SolidWorks 为你生成的 VBA 代码,并将其“翻译”成 C# 代码,这是学习 API 方法名和参数最快的方式。
官方文档
- SolidWorks API 帮助:这是最权威、最全面的资料,在 SolidWorks 中,按
F1或通过帮助->SolidWorks API 帮助打开,你可以按对象名(如IModelDoc2)或功能(如How to create a feature)进行搜索。
视频教程
- SolidWorks 官方 YouTube 频道:搜索 "SolidWorks API Tutorials",有官方出品的系列教程。
- YouTube 上的个人开发者:搜索 "C# SolidWorks API tutorial",有很多优秀的开发者分享实战项目。
社区与论坛
- SolidWorks 论坛 - API 板块:遇到问题时,这里是提问和寻找答案的最佳地方,在提问前,请先搜索,因为 99% 的问题都已经被问过了。
- Eng-Tips Forum:一个工程师技术论坛,SolidWorks API 板块也很活跃。
示例代码
- SolidWorks API SDK 示例:在安装 API SDK 的目录下,有大量的 C++ 和 C# 示例代码,覆盖了大部分 API 功能,是绝佳的学习材料。
- GitHub:搜索
solidworks-api-csharp或solidworks-api-cpp,可以找到很多开源的插件项目,阅读别人的代码是提高水平的捷径。
第五部分:常见问题与技巧
-
调试插件:
- 在 Visual Studio 中,右键项目 ->
属性->调试。 - 勾选
启用非托管代码调试。 - 在
启动操作中选择启动外部程序,并浏览到sldworks.exe的安装路径。 - 你可以在 C# 代码中设置断点,然后点击 Visual Studio 的“启动”按钮,它会自动打开 SolidWorks 并加载你的插件,当代码执行到断点时,就会暂停。
- 在 Visual Studio 中,右键项目 ->
-
性能优化:
- 批量操作:尽量使用
IModeler接口下的方法(如CreateFeatureFromBody2)来一次性创建复杂几何,而不是通过 UI 模拟(先创建草图,再拉伸,再打孔...)。 - 减少选择/取消选择:频繁地选择和取消选择对象会严重影响性能,尽量在内存中操作对象,而不是依赖图形区域的选择。
- 释放 COM 对象:在使用完
swApp或其他 COM 对象后,最好调用System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)来释放资源,尤其是在循环中操作大量对象时。
- 批量操作:尽量使用
-
错误处理:
- 始终使用
try...catch块来包裹你的 API 调用。 - 使用
swApp.SendMsgToUser()向用户显示友好的错误信息,而不是直接让程序崩溃。
- 始终使用
SolidWorks 二次开发是一个充满创造力的领域,能够极大地提升个人和团队的工作效率。
学习路径建议:
- 从宏开始:录制宏,理解基本 API 调用。
- 学习 C#:掌握 C# 基础语法。
- 编写第一个插件:按照本教程,成功创建并运行一个简单插件。
- 深入研究 API:阅读官方文档,尝试实现更复杂的功能(如创建自定义属性、生成 BOM 表等)。
- 阅读与贡献:在社区和 GitHub 上学习他人的代码,并尝试解决一些实际问题。
祝你开发顺利!
