C# 在SolidWorks中获取加载项实例句柄(SetAddinCallbackInfo2)
我正在使用.NET(C#)为SolidWorks编写一个外接程序,在解读SolidWorks API文档时遇到了困难 在外接程序模板中,有一个对ISldWorks.SetAddinCallbackInfo2的调用,该调用从以下签名设置库的回调信息:C# 在SolidWorks中获取加载项实例句柄(SetAddinCallbackInfo2),c#,.net,solidworks,C#,.net,Solidworks,我正在使用.NET(C#)为SolidWorks编写一个外接程序,在解读SolidWorks API文档时遇到了困难 在外接程序模板中,有一个对ISldWorks.SetAddinCallbackInfo2的调用,该调用从以下签名设置库的回调信息: System.bool SetAddinCallbackInfo2( System.long ModuleHandle, System.object AddinCallbacks, System.int Cookie ) ISw
System.bool SetAddinCallbackInfo2(
System.long ModuleHandle,
System.object AddinCallbacks,
System.int Cookie
)
ISwAddin
实现需要两个函数来连接SolidWorks实例bool ConnectToSW(object ThisSW,int cookie)
和bool DisconnectFromSW()
函数中调用SetAddinCallbackInfo2的地方。SolidWorks提供的C#模板如下所示:
public bool ConnectToSW(object ThisSW, int cookie)
{
addinID = cookie;
iSwApp = (ISldWorks)ThisSW;
// Setup callbacks
iSwApp.SetAddinCallbackInfo2(0, this, addinID);
// Setup the command manager
CmdMgr = iSwApp.GetCommandManager(addinID);
AddCommandMgr();
SwEventPtr = (SolidWorks.Interop.sldworks.SldWorks)iSwApp;
openDocs = new Hashtable();
AttachEventHandlers();
return true;
}
在我的加载项中,我希望对代码进行结构化,以便回调位于“树”的更下方的类中,这意味着我将有两个类,需要调用SetAddinCallbackInfo2
,以便能够在这些类中设置回调。在上面的示例中,它们只是为模块handle
传递0
,如果在ConnectToSW
函数中调用了SetAddinCallbackInfo2
,而在其他类中调用时则不起作用,这似乎是可行的
我没有处理COM互操作的大量经验,
ModuleHandle
应该是调用SetAddinCallbackInfo2
的当前类实例的句柄,还是包含ConnectToSW
函数的入口类?如何获得模块句柄
?我建议创建一个类来处理所有与solidworksapi相关的东西。
其目的是隔离所有与SolidWorksAPI相关的代码,并使代码库的其余部分专注于手头的任务
然后它将具有如下公共功能:
public void SetAddinCallbackInfo(int id){
iSwApp.SetAddinCallbackInfo2(0, this, id);
}
我还建议您在应用程序和SwDocument类之间执行一些类,例如Assembly、Part等