跳到主要内容

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

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

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

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

  • 创建公共的COM可见类,实现ISwAddIn接口

  • 使用Regasm将dll注册为COM服务器,用于基于.NET的插件(C#或VB.NET),使用RegSvr32用于基于C++和VB6的插件。在注册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,可以在方法中使用该ID添加UI组件,如ISldWorks::GetCommandManagerISldWorks::AddFileSaveAsItem2ISldWorks::ShowBubbleTooltipAt2

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

  • 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环境,并从语言的特性(如强类型)中受益。