跳到主要内容

如何通过API开发SOLIDWORKS自动化插件

SOLIDWORKS插件是一种进程内应用程序,可使用SOLIDWORKS API实现高度定制化、最佳性能和用户体验。插件可以在启动时加载,并通过扩展SOLIDWORKS用户界面和功能来集成到应用程序中。

SOLIDWORKS插件是COM对象,可以使用任何兼容COM的语言进行开发,例如C++、C#、VB.NET、VB6。

要开发插件,需要执行以下操作:

  • 创建公共的COM可见类,该类实现ISwAddIn接口
  • 使用Regasm为基于.NET的插件(C#或VB.NET)注册dll作为COM服务器,使用RegSvr32为基于C++和VB6的插件注册dll作为COM服务器。在注册COM对象时,需要添加dll的codebase

注册表中插件dll的COM注册信息{ width=550 }

  • 将插件的信息添加到SOLIDWORKS注册表中,以便在加载时可以识别插件。插件信息需要添加到SOFTWARE\SolidWorks\Addins\{AddInGuid}Software\SolidWorks\AddInsStartup\{AddInGuid}。第一个键定义了插件的名称和描述,是必需的。第二个键是可选的,允许指定在SOLIDWORKS启动时是否需要加载插件。

SOLIDWORKS注册表中的插件详细信息{ width=450 }

SOLIDWORKS注册表中的插件启动详细信息{ width=450 }

实现插件

ISwAddIn接口提供了两个需要实现的函数:

  • ConnectToSW。当插件与SOLIDWORKS一起加载(如果指定了启动时加载选项)或从SOLIDWORKS的“工具”->“加载项”菜单启用时调用。该函数传递两个参数:指向主要ISldWorks接口的指针和插件ID。

存储ISldWorks的指针,并在整个代码中使用它来访问所有接口。不要使用CreateObjectActivator::CreateInstance方法来检索应用程序的指针,因为这种方法不能保证与当前实例的SOLIDWORKS连接,并且可能会启动新的后台会话。

第二个参数是插件的ID,可以在诸如ISldWorks::GetCommandManagerISldWorks::AddFileSaveAsItem2ISldWorks::ShowBubbleTooltipAt2等方法中添加UI组件。

使用此方法初始化资源并创建用户界面(命令管理器、任务窗格等)。

  • DisconnectFromSW。当SOLIDWORKS关闭时卸载插件或从SOLIDWORKS的“工具”->“加载项”菜单禁用插件时调用。使用此方法清除资源并删除所有用户界面元素(如命令管理器或任务窗格)。

卸载用户界面页面很重要,因为用户可以通过在插件菜单中禁用插件来卸载插件(不仅仅是关闭SOLIDWORKS应用程序),保持用户界面页面加载可能会导致崩溃或不稳定,因为页面与插件本身断开连接。

开发环境

SOLIDWORKS插件最流行的开发环境是Microsoft Visual Studio。Visual Studio有不同的版本:专业版、企业版和社区版。您可能有资格获得免费的社区版。请查阅最终用户许可协议以获取更多信息。另一个免费的环境是SharpDevelop

示例

下面的链接提供了使用不同编程语言创建简单的“Hello World”插件的详细指南。

插件在启动时加载,并在加载时显示“Hello World”消息框。

加载插件时显示的消息框{ width=350 }

插件在SOLIDWORKS的“工具”菜单中的“加载项...”对话框中可用。

插件显示在加载项对话框中{ width=450 }

开发框架

使用.NET(C#或VB.NET)开发SOLIDWORKS插件可以使用免费且开源的xCAD.NET Framework来大大简化开发过程。该框架封装了COM类和API对象模型的复杂性,以适应.NET环境,并从语言的特性(如强类型)中受益。