|
二次开发中的零件预览问题困扰我很久了,暑期从放假到现在一直在琢磨,看了好多论坛的帖子什么的实验了很多遍都没啥效果,昨天在一位高人指点下终于把最后关键问题给解决了,就急着写个教程共享给大家,贡献点点力量丰富知识库吧……
首先大体介绍一下,预览功能的实现一般来讲有三种实现途径:
一、ProBarewindowCreate函数:
这个函数可以生成一个没有菜单的窗口,相当与打开了一个新的窗口,参数可以加入模型,在这个窗口里可以实时旋转,感觉就像预览一样。
函数原型:
ProBarewindowCreate
(
ProName object_name // The name of the object to be retrieved
ProType object_type // The type of the object (PRO_PART, PRO_ASSEMBLY, and so on)
int* p_window_id // The window identifier in which the object was retrieved
)
使用方法:
ProName name1;
char* name=L"D:\\a.prt.1";
int window_id;
ProStringToWstring( name1, name);
ProBarewindowCreate( name1,PRO_PART,&window_id);
我试验的过程中,使用这种方法函数测试成功,打开了新的窗口,文件也打开了,但是却看不到图像,暂时还没找出原因,有待进一步研究!
此函数是弹出窗口方式,无法嵌入对话框之中,打开的是独立的对话框,方式不算理想。
二、利用web控件实现预览:
安装了ProductView Express之后的电脑都可以以网页的形式打开proe文件,在网页中做可以旋转放大等等操作,因此在对话框中添加web控件以实现预览功能,这种方式不受控件版本的限制,不失为一种好的浏览方式。
ProductView Express安装文件是位于“~\proeWildfire\i486_nt\obj”文件夹下的“pvx_install.exe”,如下图
【原创】pro/E <wbr>二次开发中 <wbr>文件预览功能介绍以及实例
使用方式:
1、添加web控件:(接“proe二次开发教程——手把手教你如何二次开发”中的例子)
如下图,右击窗口,插入activeX控件:
【原创】pro/E <wbr>二次开发中 <wbr>文件预览功能介绍以及实例
选择Microsoft Web Browser,插入控件之后右击控件,在快捷菜单下选“添加变量”,弹出添加成员变量向导,添加变量名为exp:
【原创】pro/E <wbr>二次开发中 <wbr>文件预览功能介绍以及实例
【原创】pro/E <wbr>二次开发中 <wbr>文件预览功能介绍以及实例
光标停留在dlg.h中的变量声明出,对应的属性栏中会出现再生符号,点击之,在下拉菜单中选择OnInitDialog,进入程序编辑窗口:
【原创】pro/E <wbr>二次开发中 <wbr>文件预览功能介绍以及实例
添加如下代码:
//web控件显示零件
VARIANT vInfo;
vInfo.vt=VT_EMPTY;
exp.Navigate(L"d:\\a.prt.1",&vInfo,&vInfo,&vInfo,&vInfo);
exp.put_Visible(TRUE);
编译,成功后打开proe运行查看(右侧的那个):
【原创】pro/E <wbr>二次开发中 <wbr>文件预览功能介绍以及实例
这种方式实现的预览功能窗口中有很多附加的菜单占了大量的界面控件却无法消除,如上面的ProductView Express图标,下面的版本,都占有很大空间,这是他的弊端。
三、使用pvactivex.ocx控件实现预览:
使用pvactivex.ocx控件,该控件来源于proe自带的浏览程序ProductView Express,使用前需要安装一下ProductView Express,此控件可以像一般控件一样插入到对话框之中。
如上图所示添加activeX控件,选择ProductView Express,然后添加变量pva,在初始化窗口中添加函数:
pva.setFileName(L"D:\\a.prt.1");
程序运行后即可显示零件,如上图左:
这种方式可以在控件的属性窗口中设置控件上的各种标签的显示与否,可以去掉不必要的成分以简介的方式显示零件,是最为理想的选择方式,但是pvactivex.ocx控件是在VS环境下开发的,因此不适用与VC++6.0!
下图为去掉上下标签栏后的控件运行结果:
【原创】pro/E <wbr>二次开发中 <wbr>文件预览功能介绍以及实例
比较以上三种预览方式之后不难发现,pvactivex.ocx控件显示是最为理想的显示方式,但对于C++ 6.0却无法使用,因此可退而求其次采用网页的方式实现预览,第一种ProBarewindowCreate函数的形式是三种方法中最不理想的方式了!
转载
|
|