【摘 要】本文介绍了以C,C++语言为工具,在Pro/ENGINEER上利用Pro/TOOLKIT进行药筒快速建模二次开发的方法,并给出了药筒快速建模快速设计应用实例。
【关键词】 注册文件 药筒 特征 快速建模
1 引言
传统的药筒设计是一个相当烦琐过程,设计人员被动地往返于公式和手册之间,借助计算器一点一点地计算。这当中有任何失误都必须从头再来,即使计算过程中没有任何失误,当计算结果不合适时,一切也必须从头再来。一个熟练的设计人员,在药筒设计过程中,简单的计算一遍就需要一个星期以上时间。如何使这一,计过程变的简单、直观,对设计人员来说十分迫切。针对这一问题,本文给出了基于Pro/ENGINEER快速建模并结合炮用发射药筒理论设计的约束条件,给出了快速设计的方法及实例。
2 炮用发射药筒结构分析及建模的约束方程
药筒的设计与火炮、弹丸及装药设计,切相关。本文以配制式火炮为例。药筒的设计主要受药室形状及弹丸结构限制[1]。
图 1 火炮药室结构示意图
主要结构尺寸计算公式如下:
f1 : Dk=Dd-2U0k f2 : Lk=(0.20 ~ 0.30)d f3 : d k=Dk-2tk
f4 : Dy=Dj f7 : Dj=Da-2U0j f8 : Ly=La
f9 : td=(0.06 ~ 0.15)Dj f10 : ty=Sp-x0
式中:
Dk—筒口部外径; U0k—口部初始间隙;
dk—口部内径; la —接际部初始间隙;
Dj—接际部直径; Lk—口部长度
U0j—接际部初始间隙; Ly—筒体外部长度
td—底部厚度; ty.—底缘厚度;
Sp—炮栓镜面至药室尾端面距离; x0—药筒地平面与栓体镜面的初始间隙;
这些方程中共有12个已知参数(Dd、U0k、d、Dj、U0x、lb、la、Da 、U0j 、La、Sp、x0)和8个未知参数(Dk、dk、Dy、Dj、Ly、td、ty、Lk),已知参数由设计者给定。当改变了已知参数时未知参数也随之改变。
可以通过约束图利用图解法解出未知变量[2]。药筒的结构尺寸示意图如图3所示。
图2 方程约束网络图
图3 药筒的结构尺寸示意图
3 快速建模实现方法
快速建模就是通过输入参数,由Pro/ENGINEER系统快速产生模型的过程,模型的相关属性也可自动给出。Pro/ENGINEER提供了强大的用户二次开发程序包Pro/Toolkit,通过它可以直接对Pro/ENGINEER的数据库进行操作。本文即以Pro/Toolkit为开发工具,实现了药筒的快速设计与建模。Pro/ENGINEER的快速建模二次开发包括以下几部分[3]。
3.1 用户接口
用户接口是人机交互的界面,它包括菜单及菜单文件两部分。菜单文件扩展名为*.mnu或*.aux。*.mnu菜单完全独立于已有菜单,*.aux则附加于已有菜单。菜单文件有固定格式,每组数据分三行,每一个菜单按钮对应一组数据。菜单文件为纯文本文件。
3.2 信息文件
信息文件包括了类型无关菜单以及数据输入提示等所有文本信息,它和菜单文件一样,也是使用表单的形式,每四行为一组。使用表结构的好处是当需要改动程序显示时,可以只改动信息文件,而不必改动原程序。
3.3 程序接口
在Pro/Toolkit中,其函数结构一般如下:
User_Appone() { } 用户功能函数
User_Apptwo() { }
......
User_initialize() { ...... } 程序入口
User_terminate() { ...... } 程序出口
其中,入口函数和出口函数是必须的,其他函数则是用户定义函数,用以实现一定的功能。
3.4 注册文件
注册文件用以指明程序运行模式、资源位置以及程序运行版本等。其中,运行方式包括多线程和动态连接库两种。第一种方法的好处是调试比较容易。第二种方法的优点是运行速度较快生成的文件比较小。
3.5 编译平台
程序的编译需要第三方编译平台,如TC、Mircosoft C等。选用了Mircosoft公司的Visual C++ 6.0作为编译平台。利用Visual C++ 6.0的强大功能使得数据管理方便,调试轻松直观[4]。
4 药筒的快速建模
(1)在参数输入方面,使用了菜单结合对话框的方式,参数输入方便直观。菜单结构如图4所示。Yaotong Design是在Pro/ENGINEER的Part菜单上添加的系统菜单,这样既可以实现用户特定功能,又可以利用Pro/ENGINEER平台的强大功能,方便用户设计。在模型的实现方面,采用了>于UDF的二次开发技术,可以显著地降低开发的工作量,提高开发灵活性。
图4 药筒设计菜单系统
(2)模型的接口程序和实现>序。以下为药筒快速建模程序入口和出口,它注册了菜单文件以及响应函数。
user_initialize()
{int menu_id ,err;
ProMenuFileRegister("PART","part. mnu",&menu_id);
ProMenuAuxfileRegister("PART","part.aux",&menu_id);
err=ProMenubuttonActionSet("part","_YaotongDesign",(ProMenubuttonAction)UserYaotongSystem,NULL,0);
return(0); }
void user_terminate(){} ;
以下为药筒建模实现程序,它定义了UDF文件及驱动参数等。
UserYaotongCreate(){ ......
ProStringToWstring(data.name,"yaotongudf.gph"); 指定UDF文件
data.n_var_dims=15;
data.var_dims=(Pro_udf_var_dim*)calloc(15,sizeof(Pro_udf_var_dim));
ProStringToWstring(data.var_dims[0].name,"YTJ_zg");变量赋值
data.var_dims[0].type=PROUDFVAR_DIM;
data.var_dims[0].value=_YTJ_zg;
......
data.n_references=0; 指定参考基准
data.dependency=PROUDFDEP_INDEPENDENT;指定模型独立性
prodb_create_group(p_model,&data,NULL,NULL,0);创建模型
ProWindowRepaint(PRO_VALUE_UNUSED);显示模型
free(data.var_dims);
return(0); }
通过以上方法产生的模型如图5所示。
图5 药筒实体模型
图6 药筒几何参数输入界面
在药筒模型生成以后,可以通过以下两种方法修改编辑药筒的尺寸:(1)可以直接用鼠标双击需要修改的特征,选中需要修改的尺寸即可进行交互式尺寸修改/编辑。修改后的效果可以迅速从模型上反映出来。(2)通过几何参数输入对话框输入要修改结构的尺寸数值来完成对尺寸的修改。参数输入对话框如图6所示,直接输入需要修改参数的新数值即可。
5 结束语
利用快速建模技术,可以大幅度提高设计效率,减轻设计/员的劳动强度,缩短产品设计周期,可使产品的设计变的直观、轻松,可在产品设计的初期易于发现设计缺陷。产品可以方便地通过PDM系统进行管理。