更多
当前位置: 首页 > 资讯

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

发布时间:2023-04-09 16:52:24 来源:哔哩哔哩

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 的代码库。

将有关插件的信息添加到 SOLIDWORKS 注册表,以便在加载时可以识别它。插件信息需要添加到SOFTWARE\SolidWorks\Addins\和Software\SolidWorks\AddInsStartup\注册表目录下。第一个键定义外接程序的名称和说明,并且是必需的。第二个键是可选的,允许指定在 SOLIDWORKS 启动时是否需要在启动时加载插件。

实现插件

ISwAddIn 接口提供了两个函数来实现:

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

存储指向 ISldWorks 的指针,并在整个代码中使用它来访问所有接口。请勿使用 CreateObject 或 Activator::CreateInstance 方法来检索指向应用程序的指针,因为此方法不能保证连接到 SOLIDWORKS 的当前实例,并且会启动新的后台会话。

第二个参数是插件的ID,可用于在方法中添加UI组件,例如 ISldWorks::GetCommandManager、ISldWorks::AddFileSaveAsItem2、ISldWorks::ShowBubbleTooltipAt2。

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

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

导入它是为了卸载用户界面页面,因为用户可以通过在插件菜单中禁用加载项(不仅通过关闭 SOLIDWORKS 应用程序)来卸载插件,并且保持用户界面页面加载可能会引入崩溃或不稳定的风险,因为页面与插件本身断开连接。

开发环境

SOLIDWORKS 插件最受欢迎的开发环境是 Microsoft Visual Studio。Visual Studio有不同的版本:Professional,Enterprise和Community。您可能更容易获得免费版本的Community版本。查看 EULA 了解更多信息。可替代的自由环境是SharpDevelop。

例子

下面的链接提供了使用不同编程语言创建简单的“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”消息框。

插件可从“插件...”对话框中获得。

开发框架

使用免费和开源的xCAD.NET框架(https://xcad.xarial.com/),可以在.NET(C#或VB.NET)中显著简化 SOLIDWORKS 加载项的开发。框架封装了 COM 类和 API 对象模型的复杂性,以适应 .NET 环境并从语言的功能(如强类型)中受益。

文章翻译自https://www.codestack.net/

仅供学习使用。

上一篇:

下一篇: