(C#)使用SolidWorks API模板开发SolidWorks插件
1. 导入模板
在 SolidWorks 安装镜像中 apisdk/
下存在一个名为 SOLIDWORKS API SDK.msi
的安装包,右键使用 7-Zip 提取文件,在解包出来的文件夹中可以找到 swcsharpaddin.zip
,将其放到 Visual Studio 的模板目录中解压即可。
然后就可以在 Visual Studio 中通过模板创建项目了:
2. 修改项目
进入项目后,需要对代码和配置进行初步的改动。
2.1 设置 SolidWorks 调试路径
首先需要把项目的调试配置设置成 “启动外部程序”,并设置成 SolidWorks 的启动路径:
2.2 插件注册信息
SwAddin.cs
是插件工作的主要部分,需要更改注册表的 Guid 和插件的注册信息,在代码的 19-22 行:
在 AddCommandMgr()
方法中设置了插件在 SolidWorks 工具栏中的显示名称:
3. 开发功能
在 AddCommandMgr()
方法中定义了所有工具栏显示的命令按钮,可以根据需求自行修改, AddCommandItem2
方法的 CallbackFunction
参数为点击回调函数 :
比如添加一个打开外部程序的按钮,则编写代码如下:
cmdIndex1 = cmdGroup.AddCommandItem2("文件格式批量转换", -1, "文件格式批量转换", "文件格式批量转换", 2, "OpenFileTrans", "", mainItemID2, menuToolbarOption);
public void OpenFileTrans(){
Process.Start(@"C:\Users\11751\Desktop\SolidWorksPlugins\8651\BatchExportDrawings.exe");
}
4. 生成DLL并注册到SolidWorks
设置好 SolidWorks 的调试路径后,在开发过程中通过 Visual Studio 的启动按钮即可直接注册插件并启动 SolidWorks,当我们需要在生产环境使用时则需要编写一个注册批处理程序以将插件注册到Windows注册表中。
注册工具使用 .NET 自带的 RegAsm
,项目模板默认编译为 “Any CPU”, 在使用 64 位 .NET 注册时可能会出现 “无法定位输入程序集” 的问题,所以我们可以直接在编译前将目标平台更改为 “x64”,然后再进行编译注册:
编译后会在 项目目录/bin/Debug/
下生成两个 .bin 文件,在生产环境注册时这两个 .bin 文件需要放在同一路径下,同时在该路径下编写一个批处理文件:
C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319\regasm.exe /codebase %~dp0/【项目名称】.dll
pause
右键使用管理员权限运行该批处理文件,出现 “成功注册了类型” 说明注册表已经添加成功了:
此时打开 SolidWorks 可以看到菜单栏已经出现了我们编写好的插件:
5. 清理插件注册表
通过源代码可以看出,插件在注册时会向注册表新建 HKEY_LOCAL_MACHINE\SOFTWARE\SolidWorks\AddIns\{GUID}
和 HKEY_CURRENT_USER\Software\SolidWorks\AddInsStartup\{GUID}
两个条目,将这两条删除即可清理。