楼上理解应该是对的,不打开怎么算是激活的呢 建议楼主利用录制宏来了解代码 |
不知道我理解的对不对。 用GetActiveDoc()的时候只有SolidWorks中有打开并激活的文件才能得到指针,否则为空。他的字面意思就是“得到激活的文档”。 |
你设置断点调试试一下,看看是哪句出了问题; 是到哪里出了问题; |
我现在遇到的问题是,以exe形式的应用程序,无法连接到SolidWorks。无法获得SolidWorks当前的活动文档。如,我用GetActiveDoc()可以获得一个指针,再把指针付给其他对象时就无法完成。如用pModelDoc.AttachDispach(指针),就会出现死掉的情况。 然而用通过应用程序的对话框打开一个SolidWorks 文件在应用此方法是就不会有任何问题 代码如下: ISldWorks m_SldWorks ; //////定义SolidWorks对象 IModelDoc pModelDoc;//////定义ModelDoc对象 CFileDialog filedlg(TRUE,NULL, NULL, NULL, NULL, NULL );///文件选择对话框 if(filedlg.DoModal()==IDOK) { pos=filedlg.GetStartPosition( ); while(pos!=NULL) { path=filedlg.GetNextPathName(pos); //所选择文件的路径 } } BOOL panduan=m_SldWorks.CreateDispatch("SldWorks.Application",NULL); ///运行SolidWorks if(panduan==TRUE) { m_SldWorks.SetVisible(FALSE); //设置SolidWorks为不可见 } else { AfxMessageBox("不能运行SldWorks,请检查是否安装了SldWorks"); ///如果运行SolidWorks出错则提示并返回 return; } LPDISPATCH modDisp=m_SldWorks.OpenDoc(path,type);///获得所打开文档的DISPATCH指针 pModelDoc.AttachDispatch(modDisp);///将DISPATCH指针赋值给ModelDoc对象。 这样就不会有问题,请问大神用vb.net时是怎样连接SolidWorks的,用c++做插件是不会有问题, |
晕了晕了 帮顶!!! 我也学习学习 |
我不是高手,俺也是初学者,不过做这个程序很小菜。我用的vb.net,不过应该大体都差不多吧。vb.net中F8是单步执行,C++也差不多吧,单步执行,找到问题代码,然后再修改 |
还望高手指点啊 |
声明:本网言论纯属发表者个人意见,与本网立场无关。
如涉版权,可发邮件:
admin@swbbsc.com