关于作者

姓名:

性别:其他

出生日期:--

地区:

联系电话:

QQ:--

婚否:保密
用户名:outhome
笔名:outhome
地区:
行业:其他

日历  

快速登录

+ 用户名:
+ 密 码:

在线留言



访问统计:
文章个数:5
评论个数:11
留言条数:1




Powered by BlogDriver 2.1

outhome的博客

 

欢迎访问outhome的博客

文章

Pro/E 二次开发中的若干问题
 Pro/E是美国参数技术公司(PTC)研制的CAD/CAM软件。Pro/TOOLKIT是PTC提供专门用于对Pro/E进行二次开发的软件包。Pro/TOOLKIT软件包提供了大量的C语言函数,使得我们利用C语言编程来增加Pro/E的功能。在Pro/E的二次开发过程中,有以下几个问题值得注意(以Pro/E2000i): 
1.可在Visual C++(4.0、5.0、6.0)环境下开发Pro/TOOLKIT应用程序 
此C应用程序包含Pro/TOOLKIT提供的函数,必须和Pro/TOOLKIT提供的头文件编译(compile)到一起。所以,必须在Visual C++的菜单tools→Options→Directories中添加如下内容: 
~\PROTOOLKIT\INCLUDES 
~\PROTOOLKIT\PROTK_APPLS\INCLUDES 
~\PRODEVELOP\INCLUDES 
~\PROTOOLKIT\PRODEV_APPLS\INCLUDES 
其中,~表示Pro/E的安装路径。 
2.编译(compile)通过的应用程序,还必须在命令提示符下编译、连接一遍(nmake),以生成可执行的.exe或.dll文件 
nmake命令是由第三方软件(micosoft Visual C++)提供的。要在命令提示符下使用这个命令,必须在安装Visual C++时注册环境变量(安装时会有对话框“设置环境变量”)提示,将“注册环境变量”选中),或者在Windows的“设置→控制变量→系统→高级→环境变量→用户变量”中,选取变量名path,在值中添加~:\Microsoft Visual Studio\VC98\bin,其中~表示Visual C++的安装路径(适用于Windows 2000).而且,命令提示符的默认路径为~:\protoolkit\i486_nt\obj,此路径下必须要有一个对应于C应用程序的make文件,命令全形为nmake-f*.*为对应的make文件名。make文件的样板在~proe 2000i\protoolkit\i486_nt\obj下。 
3.在Pro/E环境中要运行自己的应用程序,必须在Pro/E中对该程序进行注册 
注册分为手动注册和自动注册两种。手动注册就是在Pro/E界面上选取Utilities→Auxiliary Application 对话框加载该注册文件。自动注册有四种:一是将注册文件命名为protk.dat并放在Pro/E的启动目录下,并在启动目录下创建一个config.pro文件,其中设置一句:TOOLKIT_REGISTRY_FILE*就可,*就是要注册的注册文件名;三是将注册文件命名为protk.dat并放在路径//text/下,其中< LANGUAGE >是运行Pro/ ENGINEER就能自动加载该注册文件并运行指定的应用程序。注册文件protk.dat的样板在~proe 2000i\protoolkit下。 
4.Config.pro文件的设置 
 环境设置文件的内容是以文字模式将选项及参数值存在名为Config.pro的文件内,这些文件均可用一般的文本编辑软件编辑。Config.pro文件可设置系统的操作环境,如工具按钮位置、模型的显示方式、视角等。Config.pro文件应放在Pro/E的启动目录下,当启动Pro/E时,系统会自动加载环境设置文件Config.pro。若应用程序是一个大量组装零、部件的二次开发程序,下面的Config.pro将十分有用: 
BELL NO 
DISPLAY SHADE 
DATUM_DISPLAY NO 
DATUM_POINT_DISPLAY NO 
DISPLAY_COORDINATE_SYS NO 
AXIS_DISPLAY NO 
SPIN_CENTER_DISPLAY NO 
TOOLKIT_REGISTRY_FILE* 
5.在Pro/E的二次开发中,添加用户自定义菜单是最基本、最常用的技术 
可以在Pro/E界面上现有的菜单条添加用户自定义菜单,如在“文件”等菜单条菜单中添加;也可以在Pro/E界面上添加菜单条菜单,它和“文件”等等菜单条菜单处于同等地位。笔者建议在Pro/E界面上添加菜单条菜单,因为Pro/E是一个不断发展、不断更新的软件,某个版本下有的菜单在另一个版本下可能没有,因此,如果用户自定义菜单依赖某个菜单条菜单,很可能在另一个Pro/E的版本中不能正常使用。这样,只能修改应用程序来适应这种变化,软件的通用性较差。 
 下面这个程序详细讲述如何在Pro/E界面上添加用户自定义菜单条菜单UserMenu以及在菜单条菜单UserMenu中添加按钮A: 
int user _initialize( ) 
{ProFileName message _file; 
uiCmdCmdId cmd _id; 
ProStringToWstring(message_ file,”use_rmsg.txt”); 
ProMenubarMenuAdd(“UserMenu”,”UserMenu”,”Help”,PRO_B_TRUE,message_file);(添加用自定义菜单条菜单UserMenu并放在菜单条菜单“帮助”之后) 
ProCmdActionAdd(“A”, (uiCmdCmdActFn)Action,uiProe2ndImmediate, NULL, PRO_B_TRUE, PRO_B_TRUE, &cmd _id);(给按钮A设定动作Action) 
ProMenubarmenuPushbuttonAdd(“UserMenu”,“A”,“A”,“Non-mode-specific Pro/TOOLKIT test commands”,NULL,PRO_B_TRUE,cmd_id, message_file); (在菜单条菜单UserMenu添加按钮A) 
return(0);} 
其中user_msg.tst文件的内容为: 
UserMenu 
UserMenu 






user_msg.tst文件通放在~\text\usascii下,它的路径对应于protk.dat注册文件的TEXT_DIR项。 
6.结语Pro/E的第二次开发功能十分强大。本文主描述了Pro/E二次开发的整体过程(编写C程序→VC++下编译→命令提示符下编连→Pro/E中注册)以及所遇到的关键性问题,用户可在此基础上,在Pro/TOOLKIT二次开发程序中通过编写各种功能函数来实现其他具体要求。

- 作者: outhome 2006年04月4日, 星期二 03:19  回复(4) |  引用(0) 加入博采

Pro/E二次开发的关键技术

来源:中国论文下载中心    [ 06-03-31 11:23:00 ]    作者:李振南 孙延明 徐学    编辑:studa9ngns

 
摘要:  本文深入研究并实现了运用Pro/E的二次开发工具Pro/TOOLKIT进行程序自动特征建模技术,提出用动态链接库方式实现用微软基本类库(MFC)开发Pro/E对话框界面的通讯机制,并给出了实现方案和程序示例。 

关键字:  CAD 二次开发 特征建模 

  
The Key Technology About Application Development Of Pro/E 

  
Abstract: Based on the research of the application development in Pro/E, the paper presents a automatic feature modeling method by Pro/Toolkit. It describes the implement of information transformation mechanism in interfaces with DLL and basic class libraries, and shows the example of the system. 

Key words: CAD; Application Development; Feature Model
  
1         
引言 
自动建模指面对特定的产品,根据用户输入的参数或根据运用CAD系统进行设计产生的数据结果,系统应能动态地、自动地将模型建造出来,本文称这种技术为程序自动建模。Pro/E是一种采用了特征建模技术,基于统一数据库的参数化的通用CAD系统。利用它提供的二次开发工具Pro/TOOLKIT,在Pro/E的基础上进行二次开发,可以比较方便地实现面向特定产品的程序自动建模功能,并且可以把较为丰富的非几何特征如材料特征、精度特征加入所产生的模型中,所有信息存入统一的数据库,是实现CAD/CAE/CAM集成的关键技术之一。本文分别对几何特征和非几何特征的程序自动建模技术进行论述。 
CAD
系统要和其它系统集成往往需要通用数据库接口。然而直到20版的Pro/TOOLKIT仍没有提供数据库编程接口。另外,弹出式对话框是目前最先进最流行的一种人机交互界面,能向用户提供图形与文字共存的可视化环境,使操作更为自然、简便和快速,但Pro/TOOLKIT只提供下拉式菜单(包括菜单栏标题及其菜单项)的编程接口,而没有提供开发对话框的编程接口。本文研究并开发了Pro/TOOLKITMFC的接口,利用MFC强大的功能实现对话框的开发与数据库的访问。 
    
2  
几何特征的程序自动建模方法分析 
对于几何特征的程序自动建模,Pro/TOOLKIT提供了以下三种方法来实现: 
  
2.1 
特征描述 
每一个特征由不同的特征元素树(feature element tree)来定义。在程序中对每个特征元素树的全部变量赋值一次,就可以产生一个特征,多个特征的积累就形成产品模型。特征元素树包含的信息分为四类[1]  
1  特征本身的所有选项和属性。如特征类型名称、隆起或切槽特征等的深度计量方式、孔的放置方式等。 
2       特征与已存在的几何实体的参考关系。 
3       用于构造特征的平面图形的起始位置。 
4       所有的尺寸值。 
目前这种方法还不成熟,因为它有以下三个缺点: 
1   要由程序产生模型,程序必须包含产品模型的所有信息,从底层起由程序构建模型,编程量十分大。 
2   因为每种特征由不同的特征元素树来描述,所以编程难度大而且所编程序非常难于理解。 
3   并不是所有的特征都可以用这种方法产生[1] 
                                         
2.2 
族表 
这种方法的步骤是:预先手工构建产品模型,把它作为族表的类属件(generic part,然后在族表中定义各个控制参数来控制模型的形状大小,这样就可在程序中通过改变各个参数的值来得到所需要的衍生件。这个衍生件的产生是独立存在的,不需要为它定义参考基准。 
  
2.3
用户定义特征 
与族表法相同之处是同样要预先手工构建产品模型。模型创建后定义要包含的几何特征、参考基准、可变尺寸以及可变尺寸的记号(symbol),然后将这些信息存为一个后缀为gph的文件。这样就可以在程序中通过这个文件来改变可变尺寸,产生所需的衍生件。与族表法不同的是,这种方法所编的程序过程与手工建模过程比较相似,因而易于理解且编程较易,因而在本文着重探讨运用这种方法的技巧。 
  
3        
非几何特征的附加  
    
运用Pro/TOOLKIT提供的库函数,可以十分方便地将一些非几何特征包括材料特征以及精度特征附加到已建模型中。     
要由程序自动地设置材料特征,较为方便直观的办法是先在pro/e界面上手工编辑多个材料文件,输入它所要求的各种参数值(例如密度、泊松率等),并存为后缀为mat的文件。所输入参数的格式不限,因为存盘后pro/e会自动将参数格式转化为它规定的格式。定义好材料文件后,就可以在程序中将多种材料特征赋给产品模型,并设定其中一种材料为模型的当前使用材料。材料特征信息与产品模型的其它特征信息存于同一数据库中,而模型的当前使用材料的各种参数将在该产品的分析计算中自动被使用[1]。精度特征的附加不需要先产生辅助文件,只需用Pro/TOOLKIT提供的库函数(如ProGtolCreate()等)即可实现。

4.    自动特征建模实例  

    在这个实例中,将利用用户定义特征的方法,用C语言编程,产生一个以缺省座标平面为参考基准的冲头模型,并加入精度特征和材料特征。事实上,只需修改此程序的可变尺寸赋值语句、用户定义特征文件名和材料文件名的给定语句,就能成为其它模型的自动建模函数。

(1)按上面所说的方法先手工构建一任意尺寸的长方体并在头部倒圆角形成冲头模型,按上述方法制作用户定义特征文件(文件名为 “punch.gph”)。冲头模型所包含的几何特征为隆起和圆角,参考基准为缺省座标平面,将长、宽、高和圆角半径定义为可变尺寸,它们的记号分别定为 “length”、“width”、“height”和“rp”。

(2)以下为冲头模型的程序自动建模函数,这个程序可以动态地根据不同的长、宽、高和圆角的输入值,动态地、自动地构造出冲头模型,并在Pro/E窗口中显示出来。

int  three_dim_construct(h , l , w, rp) //lwhrp为长、宽、高、冲头圆角尺寸

double h , l , w , rp ;

{ProMdlCurrentGet(&p_model);  / /用户定义特征文件名的给定

ProStringToWstring (data.name, “punch.gph”); / /可变尺寸的赋值

data.n_var_dims = 4;

data.var_dims=(Pro_udf_var_dim*)calloc(4, izeof(Pro_udf_var_dim));

ProStringToWstring (data.var_dims[0].name, "length");

data.var_dims[0].type = PROUDFVAR_DIM;

data.var_dims[0].value = l ;

… …//依次对长、宽、高、冲头圆角尺寸(即lwhrp)进行赋值

data.n_references=3;

data.references=(Pro_udf_reference*)calloc(3, sizeof(Pro_udf_reference));

data.references[0].ref_ptr = NULL;

… … //指明参考基准为三个缺省座标平面

data.references[0].ref_id = 1;

… …//缺省座标平面的标识为135

data.n_orientations=2;

data.orientations=(Pro_udf_ref_orient*)calloc(2, sizeof(Pro_udf_ref_orient));

data.orientations[0]=PROUDF_REF_NO_FLIP;

… …//接受缺省的建模方向

data.n_quadrants=0;

data.dependency=PROUDFDEP_INDEPENDENT;//所建模型相互独立

data.scale_type=PROUDFSCALE_SAME_SIZE; //单位不同时以等量尺寸构造模型

data.dim_display=PROUDFDIM_BLANK; //隐藏不可变尺寸

prodb_create_group(p_model,&data,NULL,NULL,0); //根据上面所赋信息构建模型

ProMdlCurrentGet(&p_model1);//获得所建模型的句柄(Handle

prodb_set_tol_value(p_model,PRO_LINEAR_TOLERANCE,1,0.15); //附加精度特征,可使用变量赋值

ProStringToWstring(material_name, "Fe.mat");

ProMaterialfileRead(p_model1, material_name); //附加材料特征,可使用变量赋值

   ProWindowRepaint(PRO_VALUE_UNUSED); //刷新屏幕使所建模型显示出来

      Return 0 ;

}

 

5. Pro/E与MFC的接口开发

从本质上说,Pro/E与MFC的接口就是Pro/E系统调用MFC应用程序的途径。本文研究并开发一个Pro/TOOLKIT应用程序来实现该接口。Pro/E系统、Pro/TOOLKIT应用程序与MFC应用程序的通信方式是接口实现的关键之一。本文提出采用动态链接库(DLL)方式实现三者之间的通信。因为通信是通过直接的函数调用实现的,所以有执行速度快的优点。接口方案如图1所示。

Pro/E系统

 

Pro/TOOLKIT程序

A. dll)

 

MFC应用程序(B. dll)

 

DLL方式

 

DLL方式

 

 


图1 接口实现方案

具体实现的方法如下(编译器使用VC++6.0):

(1)使用CWinApp类来生成第一个DLL工程(简称A. dll),工程类型选用共享MFC的常规DLL(Regular DLL using shared MFC DLL)选项。然后在此工程中加入Pro/TOOLKIT程序,主要是函数user_initialize()的代码。  

(2) 使用同样的方法与选项生成第二个DLL工程(简称B. dll),并在此工程中用类向导(ClassWizard)和资源编辑器(Resource Edit)生成所需要的MFC类(如对话框类、数据库类等),并定义一个函数完成该类的初始化。

(3) 使A. dll中的Pro/TOOLKIT程序调用B. dll的导出函数(如图2中的loaddlg()函数),

这是接口实现的关键。

(4) 加入Pro/TOOLKIT程序所用到的库(如protk_dll.lib、protoolkit.lib、prodev_dll.lib、B\Debug\B.lib、pt_asynchronous.lib等等),并指出其路径,且设为强制输出(即使用/force选项),使用MFC的编译选项对这两个工程进行编译。生成新的 A.dll与B.dll。

5)在 Pro/E中用DLL方式加载Pro/TOOLKIT程序(即A. dll),再通过Pro/TOOLKIT程序调用MFC应用程序(即B. dll)。

A. dll

int user_initialize()

{    CSCW_Init();

… …

}

… …

extern "C" int CSCW_Init()

{

     return loaddlg ();

}

 

B. dll

… …

__declspec( dllexport ) int loaddlg ()

{

     AFX_MANAGE_STATE(AfxGetStaticModuleState());

     CDLG  DLG;

     DLG..DoModal();

     return 0;

}

2  Pro/E与MFC的接口程序的关键

 

6  结论

1)运用Pro/E提供的二次开发工具Pro/TOOLKIT可以比较容易地实现由程序动态地、自动地进行特征建模的功能,并且所建模型能由程序自动加入较为丰富的非几何特征,并存入模型统一的数据库、特征库中,为CAD/CAM/CAE/CAPP系统的集成打下良好基础。

2)由于用户定义特征的方法适用于所有的模型的程序自动建模,所以本文的实例所用的方法和程序对于其它所有的产品模型有很大的借鉴意义。

3)本文研究并开发的Pro/E与MFC的接口,突破了Pro/TOOLKIT的局限,克服了在Pro/E上进行二次开发的技术难题。

4)运用以上两种技术在Pro/E上进行二次开发,开发出的模具CAD软件既有Pro/E强大的特征建模功能,又能使用MFC制作出图文并茂的用户界面以及实现多种数据库访问功能。

 

参考文献

[1]  Pro/TOOLKIT User's Guide. USA:PTC公司出版 1998

[2]  David等著 Visual C++ 6.0 技术内幕 北京希望电子出版社 1998

 

- 作者: outhome 2006年04月3日, 星期一 16:02  回复(1) |  引用(0) 加入博采

最伤心的愚人节

      今天是愚人节,不知道为什么我特别的想她,我想告诉他。于是我发短信给她:说我真的很想她,她说真的不知道怎么回答我。我知,意思很明显了。但是确实又能怎么样呢,各有各的生活。只不过,我想,这句,是我最后对她说的真心话了。因为,我真的很伤心,觉得很失败。

     就像我以前喜欢她没有什么理由,现在,将来,一样,我还会那么爱她,依然,不会有所改变。

    

- 作者: outhome 2006年04月2日, 星期日 05:52  回复(1) |  引用(0) 加入博采

我真的爱你

我不知道我对她是不是爱。我会关注她的每一件事,注意她的小细节,喜欢她的声音,如果看不到她,我会觉得像少了什么。

我不知道我喜欢她的什么,没有什么原因,只有感觉。第一眼见到她,就好像似曾相识。好像注定我要去关心她。

但是,始终,我没有表白。也许是懦弱。

这种感觉,每当回忆起来,仍是这个感觉,这种青涩的感觉。这种感觉,对其他人,也许我不会再有了。有的人一生也许只会爱一个人,对其他人他就不会再有感觉。也许我就是这种人吧。

但是,他爱的却是另一个花季男孩。

我知道,我没有资格。我更怕让她加重心理压力

我在我的日记里写道:飘来的是云,飘去的也是云。

她飘来了,却永远留在了我心里。

这么些年过去,对她的感觉还是一样的。

也许她是我的梦,一个美丽的梦,不管多少年,我都希望,这个梦不要破碎。

- 作者: outhome 2006年03月30日, 星期四 21:01  回复(1) |  引用(0) 加入博采

qq jilu


下一站@jane  (2004-01-02 05:08:17)
 
★邻星天涯★  (2005-12-11 21:08:50)
 
 
★邻星天涯★  (2005-12-11 21:06:40)
呵呵,拜拜,下次聊
 
★邻星天涯★  (2005-12-11 21:06:08)

 
下一站@jane  (2004-01-02 05:04:26)
加油哦,以后事业感情大丰收!我走了。再聊了,下次!希望早点看见你。
呵呵,你想打听//她发很多E-MAIL给我,我不告诉你,我不会出卖她的,我下了。
★邻星天涯★  (2005-12-11 21:03:52)
真的她自己说的吗,你要是问她她也不好意思说的
 
★邻星天涯★  (2005-12-11 21:03:20)
呵呵
 
下一站@jane  (2004-01-02 05:02:07)
我知道啦,我不闹了,我听哥哥的话哦。 
下一站@jane  (2004-01-02 05:01:29)
哼哼哼!!!!!!!!!!!!!
★邻星天涯★  (2005-12-11 21:01:48)
就是吗,还哼呢,
 
下一站@jane  (2004-01-02 05:00:39)
以后不问了,我啊,哼,不捣乱了
 
★邻星天涯★  (2005-12-11 21:01:20)
好不好啊
 
★邻星天涯★  (2005-12-11 21:01:01)
人家是有很爱他的男朋友的。你就不要捣乱了
 
下一站@jane  (2004-01-02 05:00:00)
我不会出卖你,我只是关心她
★邻星天涯★  (2005-12-11 21:00:18)
作好朋友比较好啊,你老是打听这个,以后怎么说话啊
 
下一站@jane  (2004-01-02 04:59:13)
和她也是
下一站@jane  (2004-01-02 04:59:05)
有什么啊,我和你是好朋友
★邻星天涯★  (2005-12-11 20:59:28)
很不好意思的,
 
下一站@jane  (2004-01-02 04:58:28)
我大概明白
下一站@jane  (2004-01-02 04:58:20)
怎么样嘛?


 

- 作者: outhome 2005年12月11日, 星期日 21:20  回复(3) |  引用(0) 加入博采