如何通过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。
{ width=550 }
- 将插件的信息添加到SOLIDWORKS注册表中,以便在加载时可以识别插件。插件信息需要添加到SOFTWARE\SolidWorks\Addins\{AddInGuid}和Software\SolidWorks\AddInsStartup\{AddInGuid}。第一个键定义了插件的名称和描述,是必需的。第二个键是可选的,允许指定在SOLIDWORKS启动时是否需要加载插件。
{ width=450 }
{ width=450 }
实现插件
ISwAddIn接口提供了两个需要实现的函数:
- ConnectToSW。当插件与SOLIDWORKS一起加载(如果指定了启动时加载选项)或从SOLIDWORKS的“工具”->“加载项”菜单启用时调用。该函数传递两个参数:指向主要ISldWorks接口的指针和插件ID。
存储ISldWorks的指针,并在整个代码中使用它来访问所有接口。不要使用CreateObject或Activator::CreateInstance方法来检索应用程序的指针,因为这种方法不能保证与当前实例的SOLIDWORKS连接,并且可能会启动新的后台会话。
第二个参数是插件的ID,可以在诸如ISldWorks::GetCommandManager、ISldWorks::AddFileSaveAsItem2、ISldWorks::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环境,并从语言的特性(如强类型)中受益。