Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在SolidWorks中获取加载项实例句柄(SetAddinCallbackInfo2)_C#_.net_Solidworks - Fatal编程技术网

C# 在SolidWorks中获取加载项实例句柄(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

我正在使用.NET(C#)为SolidWorks编写一个外接程序,在解读SolidWorks API文档时遇到了困难

在外接程序模板中,有一个对ISldWorks.SetAddinCallbackInfo2的调用,该调用从以下签名设置库的回调信息:

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等