SolidWorks CAM api

SolidWorks CAM api

我想创建一个插件来自动化我们在 SolidWorks CAM 2021 中的一些工作流程。 根据这个帮助页面,可以访问其他插件的API: https://help.solidworks.com/2018/English/api/sldworksapiprogguide/Overview/Accessing_Add-ins.htm

但是我不确定在 SolidWorks CAM 插件上使用 GetAddInObject 后该怎么做。 这家伙似乎有 VB 的解决方案,但没有提供实际的实现。

这是我目前的代码:

dynamic SWCAMObject = default(dynamic);
dynamic SWCAM = default(dynamic);

SWCAMObject = iSwApp.GetAddInObject("{CCAC6208-0E19-6455-2017-2021CEB541FA}");
if (SWCAMObject == null) ErrorMsg(iSwApp, "SWCAMObject object not found");
Debug.WriteLine($"SWCAMObject loaded: {SWCAMObject}");

SWCAM = SWCAMObject.CAMWORKSADDINLib;    <---- Breaks here, not at all sure how to extract the addin interface.
if (SWCAM == null) ErrorMsg(iSwApp, "SWCAM object not found");
Debug.WriteLine($"SWCAM loaded: {SWCAM}");

有谁知道如何正确提取Solidworks CAM界面?

这里也有人问过问题: https://forum.solidworks.com/thread/246718

---更新--- 遵循 Sinues 的建议行之有效! 我无法添加他所指的 dll,出现以下错误: “...无法添加。请确保该文件可访问,并且它是有效的程序集或 COM 组件。” 但是我添加了 COM 引用: SOLIDWORKS CAM 2021 类型库 CAMWorksAddin 1.0 类型库 这似乎有效

我的最终代码 运行 是:

CAMWORKSADDINLib.MWAddin addinObject = iSwApp.GetAddInObject(@"{CCAC6208-0E19-6455-2017-2021CEB541FA}");  
if (addinObject == null) ErrorMsg(iSwApp, "SWCAMObject object not found");  
Debug.WriteLine($"SWCAMObject loaded: {addinObject}");  

CAMWORKSLib.CWApp cwApp = addinObject.GetCWApp();  
if (cwApp == null) ErrorMsg(iSwApp, "SWCAM object not found");  
Debug.WriteLine($"SWCAM loaded: {cwApp}");  

Debug.WriteLine(cwApp.GetVersion());  

首先,您必须添加对以下 DLL 文件的引用才能访问智能感知:

  • C:\Program Files\SOLIDWORKS 2021\SOLIDWORKS CAM\camworksu.dll
  • C:\Program Files\SOLIDWORKS 2021\SOLIDWORKS CAM\cwapiu.dll

然后您可以像以前一样获取插件对象,但作为特定对象 (MWAddin):

CAMWORKSADDINLib.MWAddin addinObject = swApp.GetAddInObject(@"{CCAC6208-0E19-6455-2017-2021CEB541FA}");

并访问接口 API(cwapiu.dll):

CAMWORKSLib.CWApp cwApp = addinObject.GetCWApp();

从这里您将使用 cwApp 对象和 CAMWORKSLib

的对象类型