|
经典案例图书
我现在遇到的问题是,以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++做插件是不会有问题, |
|