SolidWorks API可用于任何兼容 COM 的语言(即 C++、C#、VB.NET 和 Visual Basic)。可以使用 SolidWorks API开发不同类型的应用程序。请参阅下面的比较表,以选择适合要求的正确应用类型。
.NET 项目的参考
SolidWorks 是一个基于 COM 的应用程序,因此当从 .NET 应用程序使用 SolidWorks API 时,需要添加程序集互操作以实现与 COM 的通信。
获取所需类型库一般有两种方法。
COM 类型库
通过将类型库 (*.tlb) 文件的引用直接添加到 .NET 项目 (sldworks.tlb, swconst.tlb, swpublish.tlb)。这可以通过浏览相应的类型库文件或在 COM 选项卡中查找注册的引用来完成。这些步骤等效于使用 tlbimp(类型库导入程序,https://learn.microsoft.com/zh-cn/dotnet/framework/tools/tlbimp-exe-type-library-importer),因为 Visual Studio 将在后台将类型库转换为互操作。转换后的等效 .NET 互操作将在项目中使用。
主互操作程序集 (PIA)
通过添加随 SolidWorks 安装一起提供的互操作程序集(SolidWorks.Interop.sldworks.dll、SolidWorks.Interop.swconst.dll、SolidWorks.Interop.swpublish.dll)。这些类型的互操作称为主互操作程序集 (PIA)。互操作库文件位于以下目录中,SolidWorks 安装文件夹\api\redist(面向框架 4.0 及更高版本的项目)和 SolidWorks 安装文件夹\api\redist\CLR2(面向框架 2.0 和 3.5 的项目)。
对于面向框架 4.0 的项目,我建议将“嵌入互操作类型(https://learn.microsoft.com/zh-cn/dotnet/framework/interop/type-equivalence-and-embedded-interop-types)”选项设置为 False。否则,由于类型转换问题,在调用 SolidWorks API 时,应用程序可能会出现不可预测的行为,但是这种情况在极少数情况下会发生。
差异
区别之一是名称和命名空间不同。对于从类型库生成的互操作,默认命名空间为 SldWorks、SWPublished 等(可以使用 tlbimp 实用程序更改默认命名空间),而命名空间名称中的 SldWorks.Interop 前缀在其他情况下使用。
但还有另一个主要区别。
从 COM 类型库生成的互操作不是强类型名称(https://learn.microsoft.com/zh-cn/dotnet/standard/assembly/create-use-strong-named)。
而随 SolidWorks 安装一起提供的主互操作程序集(PIA)是强类型名称。
如果您正在构建进程外独立应用程序(https://www.codestack.net/solidworks-api/getting-started/stand-alone/)(除非您的 *.exe 支持插件机制并且可以加载引用 SolidWorks 互操作的库),则几乎没有区别,但如果多个加载项引用不同版本的未签名(非强名称)互操作,则可能会导致进程内加载项应用程序(https://www.codestack.net/solidworks-api/getting-started/add-ins/)出现重大问题。这个视频(P1)中也展示了类似的问题。
最佳实践
文章翻译自https://www.codestack.net/
仅供学习使用。