1. 引言
蜗杆传动由于传动比大,运动平稳得到了广泛使用。虽然蜗杆传动在机械制图中不用画实际的齿廓曲线,但是用软件做蜗杆传动的运动和动力分析时,需要绘制齿廓曲线,但是蜗轮和蜗杆的齿形比较复杂,绘制时比较繁琐 [1] 。本文利用Pro/ENGINEER的二次开发功能进行蜗杆传动的程序化设计,使得蜗杆三维造型变得省时又简单。
2. 系统的开发
2.1. 系统开发环境
Pro/ENGINEER安装盘所自带的Pro/TOOLKIT工具包主要提供了开发创建用户应用程序所需的各类文件,如函数库文件、头文件、用户指南等,还对各类文件的使用提供了部分示例程序。其中头文件和库文件是用Visual C++开发Pro/ENGINEER应用程序必不可少的支持文件。蜗杆传动程序化设计系统在Windows XP为平台上,在Visual C++开发环境下,采用C语言编程,以Pro/TOOLKIT接口,完成Pro/ENGINEER的二次开发。
2.2. 系统开发策略
Pro/TOOLKIT应用程序有两种工作模式:同步模式和异步模式 [2] [3] 。
在同步模式下,Pro/ENGINEER根据注册文件的信息启动应用程序,Pro/TOOLKIT应用程序和Pro/ENGINEER主程序分别产生不能并行工作的两个各自的进程。
而在异步模式下,包含主函数的应用程序能够独立启动并能与正在进行的Pro/ENGINEER进程连接,或者先启动应用程序后再启动Pro/ENGINEER,Pro/TOOLKIT应用程序和Pro/ENGINEER能够并行工作,换句话说就,Pro/TOOLKIT应用程序和Pro/ENGINEER主程序能够同时进行各自的工作,互不影响,本文采用了此异步模式开发蜗杆设计的程序化应用程序。
虽然Pro/TOOLKIT能通过调用几何特征创建函数完成三维模型自动建立的方法,但在零件的三维设计中,由于三维模型比较复杂,特征较多,创建时必然会涉及各类特征:如绘制草图用的点、线、面等基准;曲线、曲面和实体等,很难直接利用程序生成三维模型,即使可以也会使程序代码变得复杂,容易出错,最终使参数化程序的设计十分繁琐和复杂,满足不了简化设计者工作的初衷。因此,本文的蜗杆程序化设计系统采用了相对简单的基于三维模型的参数化程序设计方法 [3] 。该方法的基本原理就是采用在Pro/ENGINEER主程序中以交互方式创建蜗杆的三维模型,再利用Pro/ENGINEER的参数功能建立相应的设计参数,然后由Pro/TOOLKIT应用程序检索出蜗杆模型的设计参数,并提供这些设计参数的编辑功能,最后根据用户输入的新的设计参数生成三维模型。图1所示流程图表明了其三维模型参数化的设计过程。图2是二次开发的应用程序执行过程。
Figure 1. Parametric design process based on 3D model
图1. 基于三维模型的参数化设计过程
Figure 2. The application development process of the two development
图2. 二次开发的应用程序执行过程
3. 系统关键技术
3.1. 建立三维模型
在Pro/ENGINEER环境中,用曲面,用户自定义特征、program、layout等高级功能建立模型,用“工具”→“参数”命令,添加蜗杆传动参数,中间平面的压力角,模数、蜗杆齿数,蜗轮齿数,蜗杆螺杆部分长度。这些参数名称分别为rf、m、z1、z2、b1分别赋初值,即20˚、4、4、41、65。
使用“工具”→“关系”命令将建立的蜗杆蜗轮的参数与蜗杆蜗轮的特征做链接,完成三维模型样板的建立。
3.2. 定义对话框中编辑框的变量
在Visual C++ 6.0环境下的点选ClassWizard窗口中的Member Variables选项卡,并在列表框中设置double类型的控件IDC_EDIT1、IDC_EDIT2、IDC_EDIT3、IDC_EDIT4、IDC_EDIT5,变量名依次为m_rf、m_ms、m_z1、m_z2、m_ b1,单击OK按钮,这些变量就被定义到Cchiddlg类中 [4] 。
3.3. 添加OK按钮的动作函数
参数输入对话框中的OK按钮需要添加动作函数OnOK(),添加如下代码:
void CChilddlg:: OnOK ()
{
// TODO: Add extra validation here
UpdateData(true);
Doublerf,m,z1, z2,b1;
…………….…………….
rf =m_rf;
m = m_ms;
z1= m_z1
z2= m_z2
b1= m_b1
ProMdl part;
//将模型worm调入内存
ProMdlRetrieve(LD:\\wear.prt.1, PRO_MDL_PART, &part);
//显示worm模型
ProMdlDisplay(part);
//获得当前worm模型标识
ProMdlIdGet(part,&i);
//初始化worm模型
ProModelitemInit(part,i,PRO_PART,&feature);
//初始化worm模型参数
Initialize model parameters
ProParameterInit(&feature,L rf , ¶m1);
ProParameterInit(&feature,L m ,¶m2);
ProParameterInit(&feature,Lz1 ,¶m3);
ProParameterInit(&feature,Lz2,¶m4);
ProParameterInit(&feature,Lb1 , ¶m5);
//变量赋值
value1.type=PRO_PARAM_DOUBLE;
value1.value.i_val= rf;
value2.type=PRO_PARAM_DOUBLE;
value2.value.i_val= m;
value3.type=PRO_PARAM_DOUBLE;
value3.value.d_val= z1;
value4.type=PRO_PARAM_ DOUBLE;
value4.value.d_val= z2;
value5.type=PRO_PARAM_CHAR;
value5.value.c_val= b1;
//设置模型参数的数值
ProParameterValueSet(¶m1, &value1);
ProParameterValueSet(¶m2, &value2);
ProParameterValueSet(¶m3, &value3);
ProParameterValueSet(¶m4, &value4);
ProParameterValueSet(¶m5, &value5);
ProParameterValueSet(¶m6, &value6);
ProParameterValueSet(¶m7, &value7);
//模型再生
ProSolidRegenerate((ProSolid)part, PRO_B_TRUE);
UpdateData(false);
CDialog::OnOK();
}
应用这段程序,可以将预先创建的蜗杆样本零件模型调入内存并显示,然后根据编辑框中的用户输入的蜗杆的新参数改变样板模型的参数,最后再生成新参数下的新的蜗杆模型。
3.4. 设置Project/Settings选项
首先在Project/Settings对话框的Link选项卡中,添加下列库文件:protoolkit.lib wsock32.lib protkmd.lib pt_asynchronous.lib mpr.lib;其次在Project/Settings中的Customize中选中Force files output选项,使工程输出状态为强制输出;最后选择Use MFC将工程的基类设置为静态库类。
4. 程序编译连接及系统运行
执行VC主菜单命令Build|Build main program.exe生成可执行文件main program.exe。由于系统所采用的是Pro/TOOLKIT异步模式,所以首先设置环境变量。
变量名:PRO_COMM_MSG_EXE
变量值:C:\Program Files\proeWildfire 4.0\i486_nt\obj\pro_comm_msg.exe
双击可执行文件文件main program.exe,图3所示的主对话框窗口便可打开。在主对话框中单击“启动Pro/E”按钮,则 Pro/ENGINEER系统启动。单击“蜗杆设计”按钮,则会弹出蜗杆创建对话框,在图4所示对话框中输入各参数值。然后单击“输出蜗杆”按钮,系统会根据参数的输入生成相应的蜗杆模型,其中一组参数生成的蜗杆模型如图5所示。蜗杆轴的其他部分结构按照普通的轴类设计很方便就能完成,由于篇幅所限,不再赘述。
5. 结语
本文利用Pro/ENGINEER软件中的高级功能创建了便携式小型旋耕机蜗杆减速器中蜗杆的三维模型;并使用Pro/ENGINEER软件的二次开发工具Pro/TOOLKIT在Visual C++ 6.0集成开发的环境下,采用异步模式开发了蜗杆自动化设计系统。该设计系统可以仅通过输入蜗杆传动的几何参数快速创建蜗杆三维模型,设计系统的用户操作界面简单、直观,通用性强,能提高设计人员的工作效率,缩短蜗杆传动的设计周期,可以取得良好的经济效益。
基金项目
哈尔滨理工大学大学生创新创业训练项目:便携式小型旋耕机的设计。