SOLIDWORKS API:如何创建独立应用程序(exe)

在本文中,我将讨论从COM兼容编程语言(例如C#,VB.NET,C++,Visual Basic 6)连接到SOLIDWORKS实例的2种通用方法,以便使用SOLIDWORKS API。

这是这些可选方法的详细说明。请点击以下链接访问演示如何创建示例项目并连接到 SOLIDWORKS 实例的文章:

  • Using C# (https://www.codestack.net/solidworks-api/getting-started/stand-alone/connect-csharp/)
  • Using VB.NET(https://www.codestack.net/solidworks-api/getting-started/stand-alone/connect-vbnet/)
  • Using C++(https://www.codestack.net/solidworks-api/getting-started/stand-alone/connect-cpp/)

方法 A - Activator 和 ProgId

通过程序标识 (Program Identified,progid) 或全局唯一 COM 类标识符 (Global Unique COM Class Identifier,CLSID) 创建实例进行连接。

SOLIDWORKS 有两种类型的程序标识符:版本独立和版本特定。

程序标识符在 Windows 注册表中注册:

Windows注册表中的类ID

在上面的示例中,SldWorks.Application.23 的程序标识符对应于 COM 类标识符。

有关此对象的更多信息(如类型库类标识符、COM 服务器位置 [即 sldworks.exe] 的路径)可以在与类标识符相关的注册表分支中找到(即 HKEY_CLASSES_ROOT\CLSID{D66FBAAE-4150-402F-8581-75D1652D696A})

Windows 注册表中的程序 ID

对于所有版本的 SOLIDWORKS,与版本无关的程序标识符将相同,并且等于“SldWorks.Application”。

如果您使用与版本无关的标识符,这将确保您的代码对安装了 SOLIDWORKS 的任何环境都有效。但是,在安装多个版本的 SOLIDWORKS 时,这将引入歧义。在这种情况下,您的程序将连接到计算机中上次安装或修改的版本。

要使用特定于版本的程序标识符,需要在程序标识符后指定修订号,即“SldWorks.Application.RevisionNumber”。有关 SOLIDWORKS 版本(Version)及其修订号(Revision)的列表,请参阅下表:

版本及其修订号列表

可以通过 ISldWorks::RevisionNumber 方法获取 SOLIDWORKS 会话(运行中的程序)的修订号。返回值是格式为 25.1.0 的字符串,其中第一个数字是修订号。

使用此方法时需要注意的一些限制:

  • 此方法是连接到已在运行的 SOLIDWORKS 实例还是将创建新的实例并不总是可预测的。
  • 无法指定要连接到哪个正在运行的 SOLIDWORKS 会话(例如,当多个 SOLIDWORKS 会话打开时)
  • 如果由于运行此方法而创建新会话,则默认情况下,此会话将不可见,并以 /embed 标志启动。这意味着会话是轻量级启动的,并且不会加载任何加载项。这旨在允许将 OLE 对象嵌入到第三方应用程序(如 Microsoft Office)中。

Excel 中的 SOLIDWORKS 零件文档 OLE 对象

  • 无法创建多个 SOLIDWORKS 的活动会话。

方法 B - 运行对象表(Running Object Table,ROT)

通过从运行对象表 (ROT) 查询 COM 实例进行连接。

当 COM 服务器创建对象实例时,它会为此实例创建一个名字对象,并将其注册到运行对象表 (ROT) 中。ROT允许通过Windows API从正在运行的进程中查找对象(GetRunningObjectTable方法,https://learn.microsoft.com/zh-cn/windows/win32/api/objbase/nf-objbase-getrunningobjecttable?redirectedfrom=MSDN),从而实现与第三方应用程序的进程间通信。

下面是使用多个已注册的 COM 对象运行对象表的示例:

!{00024505-0014-0000-C000-000000000046}
!Microsoft Visual Studio Telemetry:11004
!{31F45B04-7198-45ED-A13F-F224A4A1686A}
SolidWorks_PID_15212
!VisualStudio.DTE.14.0:16144
  • 使用此方法,可以从其进程 ID 连接到 SOLIDWORKS 的任何会话。
  • 可以通过 shell 启动新的 SOLIDWORKS 实例或启动流程 API 来创建任意数量的会话。
如果 SOLIDWORKS 应用程序和独立应用程序以不同的权限级别运行(例如,一个以管理员身份运行,而另一个则不是),则可能无法从 ROT 中成功检索对象。在同一用户下运行它们以启用通信。

请点击文章开头的链接获取详细指南,其中包含连接到 SOLIDWORKS 实例的代码示例。

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

仅供学习使用。

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空