首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取SolidWorks中的加载项实例句柄(SetAddinCallbackInfo2)

获取SolidWorks中的加载项实例句柄(SetAddinCallbackInfo2)
EN

Stack Overflow用户
提问于 2020-05-23 16:07:20
回答 1查看 146关注 0票数 0

我正在使用.NET(C#)为SolidWorks编写一个插件,我在解密SolidWorks应用程序接口文档时遇到了麻烦。

在add - In模板中,有一个为库设置回调信息的ISldWorks.SetAddinCallbackInfo2调用,来自API documentation的签名是:

代码语言:javascript
复制
System.bool SetAddinCallbackInfo2( 
   System.long ModuleHandle,
   System.object AddinCallbacks,
   System.int Cookie
)

ISwAddin实现需要两个函数来连接到SolidWorks实例bool ConnectToSW(object ThisSW, int cookie)ConnectToSW函数中的bool DisconnectFromSW()是调用SetAddinCallbackInfo2的地方。SolidWorks提供的C#模板如下所示:

代码语言:javascript
复制
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才能在这些类中设置回调。在上面的示例中,它们只是为ModuleHandle传递了一个0,如果SetAddinCallbackInfo2ConnectToSW函数中调用,但在其他类中调用时却不起作用,这似乎是可行的。

我没有处理COM Interop的丰富经验,ModuleHandle应该是调用SetAddinCallbackInfo2的当前类实例的句柄,还是包含ConnectToSW函数的entry类的句柄?如何获取ModuleHandle

EN

回答 1

Stack Overflow用户

发布于 2020-05-23 21:17:34

我建议创建一个类来处理所有与Solidworks Api相关的东西。目的是隔离所有与Solidworks Api相关的代码,并将剩余的代码库集中在手头的任务上。

然后它将具有如下的公共函数:

代码语言:javascript
复制
public void SetAddinCallbackInfo(int id){
   iSwApp.SetAddinCallbackInfo2(0, this, id);
} 

我也推荐做一些在你的应用程序和SwDocument类之间工作的类,比如组装,部件等。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61969179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档