找回密码 注册 QQ登录
开思网工业级高精度在线3D打印服务

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?在线3D打印服务,一键上传,自动报价 
查看: 28077|回复: 5
打印 上一主题 下一主题

[原创] Proe二次开发中模型预览用Productview控件(9.1版)的使用

[复制链接]
跳转到指定楼层
1
发表于 2011-3-27 14:33:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多同行朋友,交流,分享,学习。

您需要 登录 才可以下载或查看,没有帐号?注册

x
proe二次开发过程中,尤其在异步模式下,考虑到 UI界面的用户体验,往往有必要增加模型预览的功能。开发人员一般都是在界面中插入productview activex控件的方式加以实现,在Productview express最新版本9.1推出之前,pro/engineer wildfire 4.0中附带的Productview express版本下的activex控件,即pvactivex.ocx,能够方便地浏览显示proe 4.0(和之前版本)下创建的*.prt*.asm等文件。网上也有相关的文章:pro/E二次开发中文件预览功能介绍以及实例》(参见https://boolean99.blog.163.com/blog/static/4594486020098763115745/,其在MFC编程环境中的代码简述如下:
pva.setFileName(L"D:\\model\\a.prt.1");


不过proe 5.0下创建的模型文件却不能通过pvactivex.ocx正常显示,这一点对长期使用proe软件的开发人员和工程人员来说不难理解,正如proe 4.0不能直接打开proe 5.0下创建的模型文件一样(尽管可以通过往\proeWildfire 4.0\i486_nt\obj路径下拷入readnewermodels.dll文件来变通实现,但模型的很多信息会丢失,并且要手工另存为低版本模型文件)。因此,采用新版本的productview控件来显示proe 5创建的模型是顺理成章的事情。

下载安装productview express 9.1,我们看到,其安装路径下的pvactivex.ocx变成了pview.ocx


MFC编程环境中,按部就班地,创建基于对话框的应用程序,然后在对话框窗口中插入pview.ocx控件,
(1)
如图2,选择“pview control”,“确定”后插入,再如如图3、图4添加控件变量m_pview
(2)

(3)
(4)
添加m_pview变量后,在“解决方案资源管理器”中就自动生成名为pviewctrl1.h的头文件和pviewctrl1.cpp的源文件。




点击pview.ocx控件,在其属性栏中,有一栏“sourceUrl,先手工输入模型的全路径,比如:“E:\\05_PBWork\\dragon\\template\\prt0001.prt”,运行结果如下:

(5)
成功显示零件模型。再要显示组件,将路径替换为:“E:\\05_PBWork\\dragon\\template\\asm0001.asm”,却不能自动显示,要将左侧树状结构根部的选择框选中才能显示,但这显然不是最终要提交给用户的二次开发程序界面中想要的结果,包括上部的菜单栏、左侧,以及底部的附属栏,在仅作预览功能的界面中好像是多余了。
(6)

另外,在二次开发的程序中,往往希望通过代码来动态显示指定的零件或组件模型。打开pviewctrl1.h,查看头文件中的一些函数原型,其中有一个SetsourceUrl函数,很容易想到其应该对应于pvactivex.ocx控件的setFileName函数。

其原型定义为:
void SetsourceUrl(CString propVal)

在对话窗口的OnShowWindow事件中写代码如下:
void CTestDlg::OnShowWindow(BOOL bShow, UINT nStatus)
{


CDialog::OnShowWindow(bShow, nStatus);


CString path;


//path
=
"E:\\05_PBWork\\dragon\\template\\asm0001.asm";


path
=
"E:\\05_PBWork\\dragon\\template\\prt0001.prt";
m_activex.SetsourceUrl(path);
}

出乎意料的是,pview.ocx毫无反应。难道pvactivex.ocx不能简单通过SetsourceUrl函数来显示模型?应该不可能!


我不断地在google和baidu搜索栏中输入pview.ocxproductview、显示模型、控件等关键词,妄图搜到相关资料,但网上有的是Productview Express 9.1作为模型浏览工具的资料外,绝少pview.ocx插件的调用、配置说明。而在QQproe二次开发群里,多次的提问,这样的“菜鸟”级问题,也似乎没有人愿意搭理。


pview.ocx不能通过SetsourceUrl函数来显示模型?这问题从此困扰我许久……


昨日有幸得遇proe二次开发高手flea (QQ:47897600,上海的杨),通过远程设置,帮我解决了这个问题,这里再次感谢杨!


(7)

“会者不难”——确如杨所言!只需要在pview.ocx控件的属性表中的“renderatstartup”和“thumbnailView”两项填入“True”即可,如图7!(之前我也尝试在其中一项、或包括renderannotation等中全部输入True,不幸的是始终没能组合出来,并且我现在都仍有疑问,PTC公司为何不将“renderatstartup”和“thumbnailView”定为Boolean型,可以以combox方式选择True/False?),设置后,通过调用函数SetsourceUrl(path)即可成功自动地显示proe5.0创建的零件或组件了!如图8

(8)


想到如我一般的proe二次开发菜鸟,一定会有人遇到同样的问题。及时作文以记之,上传网络,以便有缘菜鸟参考。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 赞一下!赞一下!1
2
发表于 2014-4-19 15:37:33 | 只看该作者

马上注册,结交更多同行朋友,交流,分享,学习。

您需要 登录 才可以下载或查看,没有帐号?注册

x
3
发表于 2014-5-5 21:56:28 | 只看该作者

马上注册,结交更多同行朋友,交流,分享,学习。

您需要 登录 才可以下载或查看,没有帐号?注册

x
4
发表于 2015-6-30 10:34:58 | 只看该作者

马上注册,结交更多同行朋友,交流,分享,学习。

您需要 登录 才可以下载或查看,没有帐号?注册

x
5
发表于 2016-5-31 16:54:41 | 只看该作者

马上注册,结交更多同行朋友,交流,分享,学习。

您需要 登录 才可以下载或查看,没有帐号?注册

x
6
发表于 2016-5-31 16:56:55 | 只看该作者

马上注册,结交更多同行朋友,交流,分享,学习。

您需要 登录 才可以下载或查看,没有帐号?注册

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

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2024-9-21 17:30 , Processed in 0.030080 second(s), 13 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

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