周 昇
(南通职业大学 机械工程学院, 江苏 南通 226007)
当前,机械产品设计常用的主流三维设计软件有Creo、UG、solidworks 等,这些软件有较好的通用性,但在用于设计特定产品时,存在设计速度慢、设计效率低等不足。为此考虑在上述三维软件平台上,开发适用于企业特定产品设计的应用程序,以提高产品的设计效率和企业核心竞争力。
减速器是一种原动件与工作机之间的减速传动装置[1],在现代机械中应用极为广泛,每年的产销量极大,所以提高减速器产品的设计效率具有较高的经济效益和社会效益。本文以一级直齿圆柱齿轮减速器系统为例,使用Creo7.0 64 位简体中文版和 WINDOWS10(64 位),基于 Visual Studio 2019,按照其设计需求进行Creo 的二次开发,完成减速器系统参数化定制修改和功能扩展。
产品开发效率取决于零件设计模型的建立速度。产品开发初期,零件形状和尺寸还未精确设计,要通过性能需求分析、装配过程验证和数控编程设计之后才能最终确定[1]。因此,零件模型设计一般要求具有柔性,以便根据需要修改。参数化设计就是将模型中各定量参数通过函数关系设计成关联变量,对变量化参数赋予不同数值,就可得到相应大小和形状的零件模型,以此提升设计效率。同样,减速器系统零件虽然较多,但可设计为由几个关键变量(参数)驱动,通过给关键变量(参数)赋值,确定零件大小或形状,从而形成所需的减速器系统。
基于上述思路,对一级直齿圆柱齿轮减速器选定4 个基本参数,即模数M、高速轴齿轮齿数Z1、低速轴齿轮齿数Z2和齿宽B,建立减速器零件的基础参数化模型。4 个参数确定后,高低速直齿圆柱齿轮尺寸、相应的高低速轴尺寸、与之配套的轴承大小型号均可确定,承载这些零件的箱体尺寸也即确定。减速器系统零件设计的基本参数驱动模型可表示为:
通过改变4 个关键参数,即可生成新的减速器系统,自动形成图纸。不需要针对每次需求变更重新建模或手动逐个修改模型参数,省去了重新绘图的烦琐操作,节时省力,且不易遗漏和出错,可大大提高设计效率。
为了较为方便地修改和更新参数,在完成参数化设计后,还需基于Creo 平台开发一组用于减速器设计的菜单,通过菜单操作完成零件更新设计。根据目前软件和硬件的主流运用情况,拟选用WINDOWS10(64 位)操作系统、Creo7.0 64 位简体中文版Visual Studio 2019 开发平台,进行基于Creo 二次开发的减速器系统设计。
参数化设计是二次开发的关键。为了缩短产品开发周期,多数企业采用改进型设计,即对旧产品的模型参数稍加改进得到新产品。其参数选取原则是:参数独立可变且尽量以最少参数来确定零件的可变尺寸,并通过参数化尺寸实现对设计结果的修改[2-4]。因此,设计时首先要分析零件,提取其关键尺寸作为驱动参数。参数化设计最大的难点在于保证参数变化时,三维模型会得到更新而不至于崩溃。因此,要特别注意模型的架构和特征参数的“父子关系”。
如图1,减速器箱体由上盖和基座组成。遵循“先整体后局部”的设计理念,先完成减速器箱体的整体建模,再采用“实体化”工具将箱体分成上盖和基座分别进行建模。
图1 箱体建模
点击“工具”“参数”设置4 个基本参数:模数M,高速轴齿轮齿数Z1(20 图2 设置箱体参数 减速器箱体轮廓尺寸关系示意如图3,根据其性能要求和制造工艺建立减速器箱体零部件尺寸关系如表1。 图3 箱体轮廓尺寸关系示意 表1 减速器箱体零部件尺寸关系 箱座高度H 通常按结构需要确定。为避免传动件转动时将油池底部污物搅起,大齿轮齿顶圆距油池底应大于30 mm,一般为30~50 mm[1],故表 1 中 H= Φ2/2+40。H、R1、R2的取值关乎箱体的轮廓尺寸,应采用取整函数ceil()取整为5 的倍数。 如图4,箱体的2 个轴孔内径(应和轴承外径配合,其尺寸关系如表2。 图4 轴孔尺寸关系示意 表2 轴孔内径与轴承孔外径的关系 如图5,高速轴轴承是标准件,其尺寸是一个序列,可根据高速齿轮的分度圆直径大小用Creo中自带的判断语句“if……else……endif”来判断轴承序列尺寸的取舍,其尺寸关系如表3。 图5 高速轴轴承的尺寸示意 关系式 说明If M*Z1>40 && M*Z1 ≤60 40<分度圆直径≤60 D=47 高速轴轴承外径d=25 高速轴轴承内径W=12 高速轴轴承宽度endif 继续条件语句If M*Z1>60 && M*Z1 ≤80 60<分度圆直径≤80 D=55 高速轴轴承外径d=30 高速轴轴承内径W=13 高速轴轴承厚度…… …… 高速轴闷盖模型尺寸显然可由箱体和轴承的相关尺寸获取,其余零件的尺寸关系受篇幅所限,不做赘述。 开发环境配置路径一定要正确,包含头文件和库文件的配置: E:ptcCreo 7.0Common Filesprotoolkitincludes E:ptcCreo 7.0Common Filesprotoolkitx86e_win64obj[5-7] 在D 盘上建一个名为“Reducer design”的文件夹,在此文件夹下再建立8 个子文件夹,如图6所示。 在“Reducer design”文件夹中新建一记事本文件,文件名为prokt,保存后将扩展名改为.dat,也就是prokt.dat。在记事本内写入以下内容: NAME Reducer design EXEC_FILE D:/Reducer design/Reducer.dll TEXT_DIR D:/Reducer design/text STARTUP dll ALLOW_STOP TRUE DELAY_START FALSE REVISION Creo7.0 unicode_encoding FALSE END 在如图6 的“text”文件夹内新建记事本,名为“Message”,内容为: MainMenu 减速器设计系统# submenu1 一级圆柱齿轮减速器# Active submenu1 menu 输入一级圆柱齿轮减速器参数 submenu2 二级圆柱齿轮减速器# Active submenu2 menu 输入二级圆柱齿轮减速器参数 submenu3 蜗轮蜗杆减速器# Active submenu3 menu 输入蜗轮蜗杆减速器参数 submenu4 行星齿轮减速器# Active submenu4 menu 输入行星齿轮减速器参数 submenu5 摆线针轮减速器# Active submenu5 menu 输入摆线针轮减速器参数 Submenu6 关于减速器设计系统# Active submenu6 menu 版本信息和版权 主程序“Reducer design.cpp”是程序中最重要的部分,程序的主要框架均在主程序中建立,所有的菜单也在主程序中建立。 // 头文件 #include "stdafx.h" #include "Reducer.h" #include "dhk1.h" #include "about.h" #include #include "ProMenubar.h" #include "ProMenu.h" #include "ProUtil.h" #include "ProWindows.h"[8] //添加主菜单 status=ProMenubarMenuAdd("MainMenu", "MainMenu", "Utilities ", PRO_B_TRUE, MsgFile); //添加子菜单 ProCmdActionAdd("ShowTest1",(uiCmdCmdActFn)submenu1,uiCmdPrioDefault,AccessDefault,PRO_B_TRUE,PRO_B_TRUE, &cmd_id1); //添加菜单响应动作 ProMenubarmenuPushbuttonAdd ("Main-Menu", "submenu1", "submenu1", "Active sub -menu1 menu", NULL,PRO_B_TRUE, cmd_id1,ProStringToWstring(message_file,"Message.txt")); //设置菜单图标 ProCmdIconSet(cmd_id1, "d: //Reducer design//图标//减速器 1.jif"); //启动对话框 int submenu1() {AFX_MANAGE_STATE(AfxGetStaticModuleState()); dhk1 *dhk = new dhk1; dhk->Create(IDD_DIALOG1); dhk->ShowWindow(SW_SHOW); return(0);} 点击菜单会弹出对话框,点击对话框按钮实现人机交互,包括模型的获取和显示、参数修改更新及模型再建。 对话框可用Pro/TOOLKIT 编写,但程序由纯手工编写,不能直观检验。Visual Studio 2019 提供了很多对话框模板,利用图形化界面可很方便地修改这些模版而获得如图7 的对话框。“输出三维总装图”程序设计如下: 图7 对话框 void Dialogbox1::OnBnClickedButton1() {//将所有零件更新并显示 //将箱体底座更新并显示ProMdlRetrieve(L"d://Reducer design//一级圆柱齿轮减速器//箱体底座.prt",PRO_MDL_PART, &part); redsmdl(); //将箱体上盖更新并显示ProMdlRetrieve(L"d://Reducer design//一级圆柱齿轮减速器//箱体上盖.prt",PRO_MDL_PART, &part); redsmdl(); //将高速轴透盖更新并显示 ProMdlRetrieve(L"d://Reducer design//一级圆柱齿轮减速器//高速轴透盖.prt",PRO_MDL_PART, &part); redsmdl(); //将高速轴闷盖更新并显示 ProMdlRetrieve(L"d://Reducer design//一级圆柱齿轮减速器//高速轴闷盖.prt",PRO_MDL_PART, &part); redsmdl(); ………… //显示更新后的减速器总装三维图 //将三维总装图调入内存 ProMdlRetrieve(L"d://Reducer design//一级圆柱齿轮减速器//总装三维图.asm",PRO_MDL_ASSEMBLY, &part); redsmdl(); //组件自动重新生成asmregenerate(); } 模型更新子程序: void Dialogbox1::redsmdl() {//获取零件ID int i; ProMdlIdGet(part, &i); //初始化零件特征 ProModelitemInit(part, i, PRO_PART,&feature); //初始化各参数(Z1、Z2 为齿数, M 为模数,B 为齿宽) ProParameterInit(&feature,L"Z1",¶m1); ProParameterInit(&feature,L"Z2",¶m2); ProParameterInit(&feature, L"M", ¶m3); ProParameterInit(&feature, L"B", ¶m4); //更新对话框输入的变量 UpdateData(true); //变量赋值 value1.type = PRO_PARAM_INTEGER; value1.value.i_val = Z1; value2.type = PRO_PARAM_INTEGER; value2.value.i_val = Z2; value3.type = PRO_PARAM_INTEGER; value3.value.i_val = M; value4.type = PRO_PARAM_INTEGER; value4.value.i_val = B; //设置参数值 ProParameterValueSet(¶m1, &value1); ProParameterValueSet(¶m2, &value2); ProParameterValueSet(¶m3, &value3); ProParameterValueSet(¶m4,&value4);[9-10] //显示零件 ProMdlDisplay(part); //激活当前窗口 ProMdlWindowGet(part, &window); ProWindowActivate(window); partregenerate( ); / /程序停顿 0.5 s Sleep(500); (1)打开 CREO7.0,点击“实用工具”→“辅助应用程序”。 (2)点击“辅助应用程序”→“注册”,选中D:Reducer designprotk.dat 文件,点击“启动”。 (3)点击“工具”→“减速器设计系统”,进入减速器系统设计二次开发菜单界面,如图8 所示。 图8 减速器设计二次开发菜单 (4)点击“一级圆柱齿轮减速器”,打开对话框,在对话框里输入如图7 所示的数据, 点击“输出三维总装图”,绘图区域显示图9 所示的三维总装图。 图9 减速器系统三维总装图 (5)点击“输出二维总装图”,绘图区域即显示二维总装图。 (6)点击“关于减速器设计系统”,可得到版本说明。 本文以一级直齿圆柱齿轮减速器系统为例,基于Creo 二次程序开发,进行参数化设计,完成了定制修改和功能的扩展。功能测试和实际运用表明:该二次开发程序运行可靠,新产品开发时间只需原来的1/3 左右,可明显提高设计效率,缩短产品开发周期,同时也减少了设计错误,取得较好的经济效益。Creo 二次开发需参数化建模、二次开发模块 (Creo/TOOLKIT)、Windows API、MFC、Visual Studio 2019 等方面知识的融会贯通,有一定难度。目前,二次开发的专门指导书籍和教材也很少,借助Visual Studio 2019 平台进行二次开发非常方便快捷,但软件在智能化设计和计算机模拟验证方面,还有进一步上升的空间,值得进一步探索。2.2 轴承的参数化选用
2.3 高速轴闷盖的参数化建模
3 基于Creo 的二次开发过程
3.1 开发环境的配置
3.2 文件布局
3.3 创建注册文件
3.4 创建菜单文件
3.5 菜单程序(主程序)
3.6 对话框程序
4 二次开发程序使用步骤
5 结束语