我想要创建一个外接程序,它可以自动化我们在SolidWorks CAM 2021中的一些工作流。根据此帮助页,可以访问其他加载项:https://help.solidworks.com/2018/English/api/sldworksapiprogguide/Overview/Accessing_Add-ins.htm的API。
但是,我不知道在GetAddInObject上使用SolidWorks加载项之后该做什么。这个家伙似乎有一个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接口吗?
这里还提出了以下问题:https://forum.solidworks.com/thread/246718
-更新我无法添加他所指的dll,我得到以下错误:“无法添加。请确保该文件是可访问的,并且它是一个有效的程序集或COM组件。”不过,我添加了COM引用:SolidWorksCAM2021类型库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());
发布于 2021-02-03 09:56:04
首先,必须添加对以下DLL文件的引用才能访问intellisense:
SOLIDWORKS 2021\SOLIDWORKS CAM\camworksu.dll
然后,您可以像前面所做的那样获得加载项对象,但作为特定对象(MWAddin):
CAMWORKSADDINLib.MWAddin addinObject = swApp.GetAddInObject(@"{CCAC6208-0E19-6455-2017-2021CEB541FA}");
并访问接口API ( cwapiu.dll):
CAMWORKSLib.CWApp cwApp = addinObject.GetCWApp();
在这里,您将使用cwApp对象和CAMWORKSLib库的对象类型。
https://stackoverflow.com/questions/65992281
复制相似问题