软件平台配置
VS2022+ SolidWorks2023。
新建项目:打开 VS2022 → 点击 “创建新项目”;搜索 类库 → 选择 “类库 (.NET Framework)”;点击 “下一步”。

框架 .NET Framework 4.8(或 4.0)

删除默认类文件,在解决方案资源管理器中,右键 Class1.cs → 删除,后面自行创建。
创建 References 文件夹并复制 DLL
右键项目 → 添加 → 新建文件夹,命名为 References
在文件资源管理器中,从 SolidWorks 的 API\redist 目录复制以下 3 个 DLL:
SolidWorks.Interop.sldworks.dll
SolidWorks.Interop.swpublished.dll
SolidWorks.Interop.swconst.dll
solidworkstools.dll
粘贴到项目的 References 文件夹中
右键 “引用” 节点 → “添加引用…”
点击 “浏览” → 选中 References 文件夹中的 3 个 DLL
点击 “确定”
在 “引用” 节点下,依次选中这 4 个 DLL,在属性窗口中设置:
属性 设置值
嵌入互操作类型 False
复制本地 True(调试时设为 True,发布后改为 False)

有时候需要添加 System.Windows.Forms 引用,因为使用到了Windows相关资源。
编写插件代码
创建主插件类:右键项目 → 添加 → 类,命名为 MainAddin.cs
配置项目属性
右键项目 → “属性”
“生成” 选项卡:
平台目标:Any CPU
勾选 ✅ “为 COM 互操作注册”
“调试” 选项卡:
启动外部程序:C:\Program Files\SolidWorks Corp\SolidWorks\SLDWORKS.exe

完成代码如下:
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using SolidWorks.Interop.swpublished;
using System;
using System.Collections.Generic;
using System.Net;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace MyFirstSwAddin
{
[ComVisible(true)]
[Guid("YOUR GUID")] // 生成唯一 GUID 替换此处
public class MainAddin : ISwAddin
{
private ISldWorks _swApp;
private int _cookie;
//与SW开始连接事件=====================================================
public bool ConnectToSW(object ThisSW, int Cookie)
{
_swApp = (ISldWorks)ThisSW;
_cookie = Cookie;
_swApp.SendMsgToUser("插件加载成功!");
return true;
}
//与SW断开连接事件=====================================================
public bool DisconnectFromSW()
{
if (_swApp != null)
{
_swApp.SendMsgToUser("插件已卸载。");
_swApp = null;
}
return true;
}
//DLL 注册函数===========================================================
[ComRegisterFunction]
public static void RegisterFunction(Type t)
{
try
{
string guid = "{" + t.GUID.ToString() + "}";
using (var key = Microsoft.Win32.Registry.LocalMachine.CreateSubKey(
@"SOFTWARE\SolidWorks\AddIns\" + guid))
{
key.SetValue(null, 1);
key.SetValue("Title", "蜗牛插件");
key.SetValue("Description", "蜗牛插件设计好帮手!");
}
using (var key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey(
@"Software\SolidWorks\AddInsStartup\" + guid))
{
key.SetValue(null, 1, Microsoft.Win32.RegistryValueKind.DWord); //第2参数改为1启动SW自动启动插件
}
}
catch (Exception e)
{
System.Windows.Forms.MessageBox.Show("注册失败: " + e.Message);
}
}
//DLL 反注册函数=========================================================
[ComUnregisterFunction]
public static void UnregisterFunction(Type t)
{
try
{
string guid = "{" + t.GUID.ToString() + "}";
Microsoft.Win32.Registry.LocalMachine.DeleteSubKeyTree(
@"SOFTWARE\SolidWorks\AddIns\" + guid);
Microsoft.Win32.Registry.CurrentUser.DeleteSubKeyTree(
@"Software\SolidWorks\AddInsStartup\" + guid);
}
catch { }
}
}
}