马上注册,结交更多同行朋友,交流,分享,学习。
您需要 登录 才可以下载或查看,没有帐号?注册
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控件,
如图2,选择“pview control”,“确定”后插入,再如如图3、图4添加控件变量m_pview。
添加m_pview变量后,在“解决方案资源管理器”中就自动生成名为pviewctrl1.h的头文件和pviewctrl1.cpp的源文件。
点击pview.ocx控件,在其属性栏中,有一栏“sourceUrl”,先手工输入模型的全路径,比如:“E:\\05_PBWork\\dragon\\template\\prt0001.prt”,运行结果如下:
成功显示零件模型。再要显示组件,将路径替换为:“E:\\05_PBWork\\dragon\\template\\asm0001.asm”,却不能自动显示,要将左侧树状结构根部的选择框选中才能显示,但这显然不是最终要提交给用户的二次开发程序界面中想要的结果,包括上部的菜单栏、左侧,以及底部的附属栏,在仅作预览功能的界面中好像是多余了。
另外,在二次开发的程序中,往往希望通过代码来动态显示指定的零件或组件模型。打开pviewctrl1.h,查看头文件中的一些函数原型,其中有一个SetsourceUrl函数,很容易想到其应该对应于pvactivex.ocx控件的setFileName函数。
其原型定义为:void SetsourceUrl(CString propVal)。
在对话窗口的OnShowWindow事件中写代码如下:
void CTestDlg::OnShowWindow(BOOL bShow, UINT nStatus)
CDialog::OnShowWindow(bShow, nStatus);
//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.ocx、productview、显示模型、控件等关键词,妄图搜到相关资料,但网上有的是Productview Express 9.1作为模型浏览工具的资料外,绝少pview.ocx插件的调用、配置说明。而在QQ的proe二次开发群里,多次的提问,这样的“菜鸟”级问题,也似乎没有人愿意搭理。
pview.ocx不能通过SetsourceUrl函数来显示模型?这问题从此困扰我许久……
昨日有幸得遇proe二次开发高手flea (QQ:47897600,上海的杨),通过远程设置,帮我解决了这个问题,这里再次感谢杨!
“会者不难”——确如杨所言!只需要在pview.ocx控件的属性表中的“renderatstartup”和“thumbnailView”两项填入“True”即可,如图7!(之前我也尝试在其中一项、或包括renderannotation等中全部输入True,不幸的是始终没能组合出来,并且我现在都仍有疑问,PTC公司为何不将“renderatstartup”和“thumbnailView”定为Boolean型,可以以combox方式选择True/False?),设置后,通过调用函数SetsourceUrl(path)即可成功自动地显示proe5.0创建的零件或组件了!如图8
想到如我一般的proe二次开发菜鸟,一定会有人遇到同样的问题。及时作文以记之,上传网络,以便有缘菜鸟参考。 |