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 库
的对象类型
我想创建一个插件来自动化我们在 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 库
的对象类型