为SOLIDWORKS创建VB.NET独立(exe)应用程序
在本教程中,我将演示如何使用 VB.NET 和Microsoft Visual Studio从进程外(也称为独立)应用程序(例如Windows Forms,Windows Console)连接到SOLIDWORKS应用程序。
有关本文中讨论的方法的更详细说明,请阅读《如何使用SOLIDWORKS API创建独立(exe)应用程序》一文。

创建新项目
我将使用Microsoft Visual Studio开发环境。您可以使用任何版本的 Visual Studio。相同的代码适用于专业版、精简版或社区版。
打开Visual Studio。
启动新项目:

选择项目模板。我建议从控制台应用程序项目模板开始,因为它包含最少的预生成代码:

添加对 SolidWorks 互操作库的引用。
互操作库文件位于SOLIDWORKS安装文件夹\api\redist\SolidWorks.Interop.sldworks.dll(用于面向 Framework 4.0 及更高版本的项目),SOLIDWORKS安装文件夹\api\redist\CLR2\SolidWorks.Interop.sldworks.dll(用于面向框架 2.0 和 3.5 的项目)。

对于面向 Framework 4.0 的项目,我建议将“嵌入互操作类型”选项设置为 false。否则,由于类型转换问题,在调用 SOLIDWORKS API 时,应用程序可能会出现不可预测的行为。

现在我们可以添加代码以连接到 SOLIDWORKS 实例。
创建或连接到SOLIDWORKS实例
连接到 COM 服务器的最常见和最快速的方法可能是使用CreateObject方法(https://learn.microsoft.com/zh-cn/dotnet/api/microsoft.visualbasic.interaction.createobject)。替代方法是:Activator::CreateInstance(https://learn.microsoft.com/zh-cn/dotnet/api/system.activator.createinstance)和 GetObject(https://learn.microsoft.com/zh-cn/dotnet/api/microsoft.visualbasic.interaction.getobject)。请注意,如果 GetObject 无法连接到活动会话,它将创建新实例。
我建议使用 Activator::CreateInstance,因为这允许通过 2 个步骤连接到会话:
由于 SOLIDWORKS 应用程序已注册为 COM 服务器,因此我们可以通过 Type::GetTypeFromProgID方法(https://learn.microsoft.com/zh-cn/dotnet/api/system.type.gettypefromprogid)从其程序标识符创建类型。
从类型定义构造类型的实例。
这种方法将在发生错误时提供更好的故障排除选项:如果第一步失败,则意味着 COM 类未注册或无法从注册表访问;否则,这可能表示存在某些权限问题。请阅读《如何使用SOLIDWORKS API创建独立(exe)应用程序》一文,了解此方法的限制说明。
或者,您可以使用 Marshal::GetActiveObject方法(https://learn.microsoft.com/zh-cn/dotnet/api/system.runtime.interopservices.marshal.getactiveobject)连接到SOLIDWORKS的活动(已启动)会话。与调用 GetObject 不同,此方法将确保不会创建新的 SOLIDWORKS 实例,并且如果没有要连接的正在运行的 SOLIDWORKS 会话,则会引发异常。
通过 ROT 获取正在运行的实例
为了连接到已经运行的特定 SOLIDWORKS 会话或能够创建多个会话,您可以使用正在运行的对象表 API。请阅读《如何使用SOLIDWORKS API创建独立(exe)应用程序》一文,了解有关此方法的更多详细信息。
在上面的示例中,通过从SOLIDWORKS应用程序安装路径启动新进程来启动SOLIDWORKS的新会话。StartSwApp 函数需要 sldworks.exe的完整路径作为第一个参数,可选的timeout(超时,以秒为单位)作为第二个参数。超时将确保在进程无法启动的情况下应用程序不会被锁定。
您还可以使用异步调用,以便在SOLIDWORKS启动时在应用程序中显示一些进度指示:
文章翻译自https://www.codestack.net/
仅供学习使用。