SolidWorks机械工程师网——最大的SolidWorks学习平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

好品数字
好品数字
查看: 802|回复: 7
打印 上一主题 下一主题

C++开发sw异步模式问题exe

[复制链接]

15

主题

204

帖子

49

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
271
QQ
跳转到指定楼层
楼主
发表于 2013-3-24 15:51:13 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
我想开发一个exe形式的小程序。想实现点击一个按钮就可以输出SolidWorks文档路径。先代码如下:
void CExternDlg::OnButton1()
{
// TODO: Add your control notification handler code here

ISldWorks m_SldWorks ; //////定义SolidWorks对象
IModelDoc pModelDoc=NULL;//////定义ModelDoc对象
CString title;
CString path;
LPDISPATCH pActive=NULL;
pActive=m_SldWorks.GetActiveDoc();
pModelDoc.AttachDispatch(pActive);
path=pModelDoc.GetPathName();
//HRESULT hre=m_SldWorks->get_IActiveDoc(&pModelDoc);
title=pModelDoc.GetTitle();
}
一运行就死掉请问是什么原因?
2013-3-24 15:50:53 上传
下载次数: 0
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 转播转播 分享教程|习题|模型|技巧 点赞点赞6095 拍砖拍砖3963
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复

使用道具 举报

9

主题

235

帖子

17

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
252
沙发
发表于 2013-3-24 15:52:13 | 只看该作者
还望高手指点啊
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复 支持 反对

使用道具 举报

9

主题

234

帖子

23

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
263
QQ
板凳
发表于 2013-3-24 15:52:16 | 只看该作者
我不是高手,俺也是初学者,不过做这个程序很小菜。我用的vb.net,不过应该大体都差不多吧。vb.net中F8是单步执行,C++也差不多吧,单步执行,找到问题代码,然后再修改
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

9

主题

198

帖子

18

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
235
QQ
地板
发表于 2013-3-24 15:56:25 | 只看该作者
晕了晕了    帮顶!!!  我也学习学习
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

9

主题

220

帖子

26

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
256
QQ
5#
发表于 2013-3-24 16:00:36 | 只看该作者

   经典案例图书

我现在遇到的问题是,以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++做插件是不会有问题,
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

96

主题

290

帖子

184

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
474
6#
发表于 2013-3-24 16:02:15 | 只看该作者
你设置断点调试试一下,看看是哪句出了问题;
是到哪里出了问题;
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

12

主题

218

帖子

35

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
267
QQ
7#
发表于 2013-3-24 16:11:29 | 只看该作者

   经典案例图书

不知道我理解的对不对。
用GetActiveDoc()的时候只有SolidWorks中有打开并激活的文件才能得到指针,否则为空。他的字面意思就是“得到激活的文档”。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

8

主题

214

帖子

23

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
247
QQ
8#
发表于 2013-3-24 16:13:22 | 只看该作者
楼上理解应该是对的,不打开怎么算是激活的呢
建议楼主利用录制来了解代码
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭 卷起
关闭 卷起

手机版|小黑屋| GMT+8, 2024-4-30 05:31 , Processed in 0.244717 second(s), 40 queries .

SolidWorks机械工程师网 ( 鲁ICP备14025122号-2 ) 鲁公网安备 37028502190335号

声明:本网言论纯属发表者个人意见,与本网立场无关。
如涉版权,可发邮件: admin@swbbsc.com

快速回复 返回顶部 返回列表