SOLIDWORKS 插件是使用 SOLIDWORKS API 实现的 SOLIDWORKS进程内应用程序,它具有高度客制化、最佳的性能和用户体验等特点。插件可以在启动时加载并集成到应用程序中,并拥有扩展 SOLIDWORKS 用户界面和功能的能力。
SOLIDWORKS 插件是一个 COM 对象,可以使用任何兼容 COM 的语言(如 C++、C#、VB.NET、VB6)进行开发。
为了开发外接程序,需要:
创建实现 ISwAddIn 接口的公共 COM 可见类。(https://help.solidworks.com/2023/english/api/swpublishedapi/solidworks.interop.swpublished~solidworks.interop.swpublished.iswaddin.html)
使用Regasm(https://learn.microsoft.com/zh-cn/dotnet/framework/tools/regasm-exe-assembly-registration-tool)
(适用于基于 .NET 的插件(C# 或 VB.NET))和 RegSvr32()
(适用于基于 C++ 和 VB6 的插件)将 dll 注册为 COM 服务。注册 COM 对象时需要添加 dll 的代码库。
(注册表中插件 dll 的com 注册信息)
将有关插件的信息添加到 SOLIDWORKS 注册表,以便在加载时可以识别它。插件信息需要添加到SOFTWARE\SolidWorks\Addins\和Software\SolidWorks\AddInsStartup\注册表目录下。第一个键定义外接程序的名称和说明,并且是必需的。第二个键是可选的,允许指定在 SOLIDWORKS 启动时是否需要在启动时加载插件。
(SOLIDWORKS 注册表中的加载项详细信息)
(SOLIDWORKS 注册表中的插件启动详细信息)
实现插件
1
ISwAddIn 接口提供了两个函数来实现:
ConnectToSW:当插件随 SOLIDWORKS 一起加载时(如果指定了启动时加载选项)或从 SOLIDWORKS 中的 工具->插件 菜单启用时调用。函数传递 2 个参数:指向主 ISldWorks接口的指针和插件的ID。
存储指向 ISldWorks 的指针,
并在整个代码中使用它来访问所有接口。
请勿使用 CreateObject 或 Activator::CreateInstance 方法
来检索指向应用程序的指针,
因为此方法不能保证连接到 SOLIDWORKS 的当前实例,
并且会启动新的后台会话。
第二个参数是插件的ID,可用于在方法中添加UI组件,例如 ISldWorks::GetCommandManager、ISldWorks::AddFileSaveAsItem2、ISldWorks::ShowBubbleTooltipAt2。
使用此方法启动资源并创建用户界面(命令管理器、任务窗格等)。
DisconnectFromSW:在关闭 SOLIDWORKS 时卸载插件时或在 SOLIDWORKS 中的 工具->插件 菜单中禁用插件时调用。使用此方法清除资源并删除所有用户界面元素(如命令管理器或任务窗格)。
导入它是为了卸载用户界面页面,
因为用户可以通过在插件菜单中禁用加载项
(不仅通过关闭 SOLIDWORKS 应用程序)来卸载插件,
并且保持用户界面页面加载可能会引入崩溃或不稳定的风险,
因为页面与插件本身断开连接。
开发环境
2
SOLIDWORKS 插件最受欢迎的开发环境是 Microsoft Visual Studio。Visual Studio有不同的版本:Professional,Enterprise和Community。您可能更容易获得免费版本的Community版本。查看 EULA 了解更多信息。可替代的自由环境是SharpDevelop。
例子
3
下面的链接提供了使用不同编程语言创建简单的“Hello World”插件的详细指南。
C#(https://www.codestack.net/solidworks-api/getting-started/add-ins/csharp/)
VB.NET(https://www.codestack.net/solidworks-api/getting-started/add-ins/vbnet/)
插件在启动时加载,并在加载时显示“Hello World”消息框。
(加载插件时显示的消息框)
插件可从“插件...”对话框中获得。
(插件对话框中显示的插件)
开发框架
4
使用免费和开源的xCAD.NET框架(https://xcad.xarial.com/),可以在.NET(C#或VB.NET)中显著简化 SOLIDWORKS 加载项的开发。框架封装了 COM 类和 API 对象模型的复杂性,以适应 .NET 环境并从语言的功能(如强类型)中受益。