如何通过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。
{ 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,可以在方法中使用该ID添加UI组件,如ISldWorks::GetCommandManager、ISldWorks::AddFileSaveAsItem2、ISldWorks::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环境,并从语言的特性(如强类型)中受益。