iCAx开思网

标题: Proe二次开发中模型预览用Productview控件(9.1版)的使用 [打印本页]

作者: vincentao    时间: 2011-3-27 14:33
标题: Proe二次开发中模型预览用Productview控件(9.1版)的使用
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二次开发菜鸟,一定会有人遇到同样的问题。及时作文以记之,上传网络,以便有缘菜鸟参考。

作者: 简·爱    时间: 2014-4-19 15:37
请问在动态链接库的对话框里怎么总做不出来模型预览呢

作者: /love闻    时间: 2014-5-5 21:56
图怎么显示不了呢,急~

作者: 1183416067    时间: 2015-6-30 10:34
请问楼主,该方法是否可以旋转和放大缩小?
作者: mathasis4    时间: 2016-5-31 16:54
xiang shishi

作者: mathasis4    时间: 2016-5-31 16:56
mei tu





欢迎光临 iCAx开思网 (https://www.icax.org/) Powered by Discuz! X3.3