齿轮轴的ProE优化设计
- 格式:rtf
- 大小:478.26 KB
- 文档页数:3
基于PRO/E的直齿圆柱齿轮参数化设计[摘要] 基于pro/e的cad模式下,详述了直齿轮的参数化设计,用户可方便地根据需要对程序进行修改,重新运行程序并更改齿轮各个参数从而得到新的零件。
以期对提高零件的设计效率和设计质量有一定的帮助。
[关键词] pro/e 直齿圆柱齿轮参数化设计 cad1 前言随着cad技术的发展,产品设计越来越广泛地采用三维建模的方法,pro/e具有强大的三维建模功能,被广泛应用。
利用pro/e的二次开发工具模块program,就可以方便地实现产品设计的参数化,大大提高设计效率。
当用户在pro/e中对产品进行三维建模时,program以程序的形式记录了产品的主要设计步骤和尺寸参数列表,用户可以根据需要对程序进行修改,使不熟悉三维建模技巧的设计人员也可使用现有的三维产品模型进行更新设计,减少繁琐复杂的重复劳动。
2 齿轮的参数化设计齿轮是一种参数化的零件,一个齿轮的形状,可以由它的模数、齿数、压力角、齿顶高系数、顶隙系数以及齿宽完全确定,设计时只要修改这些参数的数值,便可改变齿轮的形状,具体步骤如下。
步骤1,创建新文件。
单击“文件”工具栏中的按钮,在“新建”对话框中输入文件名“gear_1”,取消“使用缺省模板”选择框,单击【确定】;在“新文件选项”对话框中的“模板”列表中选择“mmns_part_solid”选项,单击【确定】,系统自动进入零件环境。
步骤2,设置齿轮参数。
单击【工具】→【参数】后,在“参数”对话框中单击按钮,依次将齿轮的参数添加至“参数”列表框中,单击【确定】,齿轮的各个参数如表1所示。
表1齿轮参数参数名称类型数值说明m 实数 4.5 模数z 整数76 齿数alpha 实数20 压力角hax 实数 1 齿顶高系数cx 实数0.25 齿隙系数b 实数60 齿厚ha 实数齿顶高hf 实数齿根高x 实数变位系数da 实数齿顶圆直径df 实数齿根圆直径db 实数基圆直径d 实数分度圆直径步骤3,绘制齿轮的基本圆。
齿轮参数化设计PROE
1.新建文件夹chilui
2.设置参数工具/参数单击
3.草绘基准曲线单击先FRONT平面为草绘平面绘制四条圆曲线,尺寸任意
4.设置关系工具/关系单击3中产生草绘曲线,消失符号尺寸关系中输入关系式确定后按再生按钮
5.创建渐开线单击选取[从方程]/[完成]选项取默认坐标系,选取[笛卡尔]选项
选坐标系
打开点保存
所得曲线
1/ 3
6.创建拉伸曲面拉伸/选曲面/TRONT为草绘平面/
曲面高度任意给定
创建参数化
7.延长曲面(1)选曲面的边,[编辑]/[延长] (2)单击选项/切线
选此边
(3)建立d5=d0/2 (4)单击再生按钮
8.创建基准轴单击打开基准对话框,选TOP/RIGHT平面,创建A-1 按CTRAL
9.创建基准点单击选分度圆曲线和拉伸曲面,创建PNT0
按CTRAL
2/ 3
10.创建基准平面单击平面选A1和PNT0,创建DTM1平面3/ 3。
基于Pro/E的齿轮参数化设计一、齿轮设计实现文件// chilunsheji.cpp : 定义DLL 的初始化例程。
#include "stdafx.h"#include "chilunsheji.h"#include "LoadDlg.h"#include "ProMenu.h"#include "ProUtil.h"#include "ProMenubar.h"#include <ProMessage.h>///////////////Functions declarationint GearDesign1MenuActFn();static uiCmdAccessState AccessAvailable(uiCmdAccessMode);#ifdef _DEBUG#define new DEBUG_NEW#endifint GearDesign1();int GearDesign2();// CchilunshejiAppBEGIN_MESSAGE_MAP(CchilunshejiApp, CWinApp)END_MESSAGE_MAP()// CchilunshejiApp 构造CchilunshejiApp::CchilunshejiApp()// 唯一的一个CchilunshejiApp 对象CchilunshejiApp theApp;// CchilunshejiApp 初始化///////////////FUNCTION: user_initialize()extern "C" int user_initialize(){ProError status;ProFileName MsgFile;uiCmdCmdId PushButton_cmd_id;ProStringToWstring(MsgFile,"Message1.txt");//设置菜单信息文件名//status=ProMenubarMenuAdd ("GearDesign", "GearDesign","Utilities", PRO_B_TRUE, MsgFile);ProCmdActionAdd("PushButtonAct",(uiCmdCmdActFn) GearDesign1MenuActFn, uiCmdPrioDefault,AccessAvailable,PRO_B_TRUE,PRO_B_TRUE,&PushButton_cmd_id); ProMenubarmenuPushbuttonAdd("GearDesign","GearDesign1","GearDesign1","GearDesign 1", NULL, PRO_B_TRUE, PushButton_cmd_id, MsgFile);return status;ProMenubarmenuPushbuttonAdd("GearDesign","GearDesign2","GearDesign2","GearDesign2", NULL, PRO_B_TRUE, PushButton_cmd_id, MsgFile);66return status;}/////////////////////FUNCTION: user_terminate()extern "C" void user_terminate(){AFX_MANAGE_STA TE(AfxGetStaticModuleState());}BOOL CchilunshejiApp::InitInstance(){CWinApp::InitInstance();return TRUE;}static uiCmdAccessState AccessAvailable(uiCmdAccessMode access_mode) {return (ACCESS_A V AILABLE);}二、齿轮设计对话框实现文件#include "stdafx.h"#include "chilunsheji.h"#include "LoadDlg.h"#include "LoadDlg2.h"#include "LoadDlg3.h"#include "LoadDlg4.h"#include <ProSolid.h>#include <math.h>#include "ProUtil.h"#include <ProWindows.h>#include <ProParameter.h>#include <ProParamval.h>IMPLEMENT_DYNAMIC(CLoadDlg, CDialog) CLoadDlg::CLoadDlg(CWnd* pParent /*=NULL*/): CDialog(CLoadDlg::IDD, pParent){}CLoadDlg::~CLoadDlg(){}void CLoadDlg::DoDataExchange(CDataExchange* pDX) {CDialog::DoDataExchange(pDX);}BEGIN_MESSAGE_MAP(CLoadDlg, CDialog)67return status;}/////////////////FUNCTION: user_terminate()extern "C" void user_terminate(){AFX_MANAGE_STA TE(AfxGetStaticModuleState()); }BOOL CchilunshejiApp::InitInstance(){CWinApp::InitInstance();return TRUE;}static uiCmdAccessState AccessAvailable(uiCmdAccessMode access_mode) {return (ACCESS_A V AILABLE);}二、齿轮设计对话框实现文件#include "stdafx.h"#include "chilunsheji.h"#include "LoadDlg.h"#include "LoadDlg2.h"#include "LoadDlg3.h"#include "LoadDlg4.h"#include <ProSolid.h>#include <math.h>#include "ProUtil.h"#include <ProWindows.h>#include <ProParameter.h>#include <ProParamval.h>IMPLEMENT_DYNAMIC(CLoadDlg, CDialog)CLoadDlg::CLoadDlg(CWnd* pParent /*=NULL*/): CDialog(CLoadDlg::IDD, pParent){}CLoadDlg::~CLoadDlg(){}void CLoadDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);}BEGIN_MESSAGE_MAP(CLoadDlg, CDialog)67ON_BN_CLICKED(IDC_BUTTON1, &CLoadDlg::OnBnClickedButton1) ON_BN_CLICKED(IDC_BUTTON2, &CLoadDlg::OnBnClickedButton2) ON_BN_CLICKED(IDC_BUTTON3, &CLoadDlg::OnBnClickedButton3) END_MESSAGE_MAP()void CLoadDlg::OnBnClickedButton1(){AFX_MANAGE_STATE(AfxGetStaticModuleState());int status;CLoadDlg2 LoadDlg;status=LoadDlg.DoModal();}void CLoadDlg::OnBnClickedButton2(){AFX_MANAGE_STATE(AfxGetStaticModuleState());int status;CLoadDlg3 LoadDlg;status=LoadDlg.DoModal();}void CLoadDlg::OnBnClickedButton3(){AFX_MANAGE_STATE(AfxGetStaticModuleState());int status;CLoadDlg4 LoadDlg;status=LoadDlg.DoModal();}三、直齿圆柱齿轮对话框实现文件// LoadDlg2.cpp : 实现文件#include "stdafx.h"#include "chilunsheji.h"#include "LoadDlg2.h"#include <ProSolid.h>#include <math.h>#include "ProUtil.h"#include <ProWindows.h>#include <ProParameter.h>#include <ProParamval.h>IMPLEMENT_DYNAMIC(CLoadDlg2, CDialog)CLoadDlg2::CLoadDlg2(CWnd* pParent /*=NULL*/): CDialog(CLoadDlg2::IDD, pParent){M_Z=17;M_ANGLE=20;68M_C=0.25;M_M=10;M_HA=1;M_B=100;M_D=0;M_DB=0;M_DA=0;M_TIP_RAD=0;M_DF=0;}CLoadDlg2::~CLoadDlg2(){}BEGIN_MESSAGE_MAP(CLoadDlg2, CDialog)ON_BN_CLICKED(IDOK, &CLoadDlg2::OnBnClickedOk)ON_BN_CLICKED(IDCANCLE, &CLoadDlg2::OnBnClickedCancle)ON_BN_CLICKED(IDC_mokuaichongsheng,&CLoadDlg2::OnBnClickedmokuaichongsheng)END_MESSAGE_MAP()void CLoadDlg2::OnBnClickedOk(){OnOK();ProMdl model;ProModelitem modelitem;ProNameParamName1,ParamName2,ParamName3,ParamName4,ParamName5,ParamName6;//wchar_t *ParamName;ProParameter param1,param2,param3,param4,param5,param6;ProParamvalue value1,value2,value3,value4,value5,value6;ProError status;UpdateData(true);status=ProMdlCurrentGet(&model);if (status!=PRO_TK_NO_ERROR)return ;ProMdlToModelitem(model, &modelitem);ProStringToWstring(ParamName1,"Z");ProStringToWstring(ParamName2,"ANGLE");ProStringToWstring(ParamName3,"C");ProStringToWstring(ParamName4,"M"); ProStringToWstring(ParamName5,"HA"); ProStringToWstring(ParamName6,"B");status=ProParameterInit(&modelitem,ParamName1,¶m1); status=ProParameterInit(&modelitem,ParamName2,¶m2); status=ProParameterInit(&modelitem,ParamName3,¶m3);69 status=ProParameterInit(&modelitem,ParamName4,¶m4); status=ProParameterInit(&modelitem,ParamName5,¶m5); status=ProParameterInit(&modelitem,ParamName6,¶m6); if (status==PRO_TK_NO_ERROR){ProParameterValueGet(¶m1, &value1);value1.value.d_val=M_Z;ProParameterValueSet(¶m1, &value1);//ZProParameterValueGet(¶m2, &value2);value2.value.d_val=M_ANGLE;ProParameterValueSet(¶m2, &value2);//ANGLEProParameterValueGet(¶m3, &value3);value3.value.d_val=M_C;ProParameterValueSet(¶m3, &value3);//CProParameterValueGet(¶m4, &value4);value4.value.d_val=M_M;ProParameterValueSet(¶m4, &value4);//M//获得参数值(HA)ProParameterValueGet(¶m5, &value5);value5.value.d_val=M_HA;ProParameterValueSet(¶m5, &value5);//HAProParameterValueGet(¶m6, &value6);value6.value.d_val=M_B;ProParameterValueSet(¶m6, &value6);//BProSolidRegenerate ((ProSolid)model,PRO_B_TRUE);ProWindowRepaint(PRO_V ALUE_UNUSED);UpdateData(false);}}void CLoadDlg2::OnBnClickedCancle(){OnCancel();}void CLoadDlg2::OnBnClickedmokuaichongsheng(){{ProMdl model;ProModelitem modelitem;ProNameParamName1,ParamName2,ParamName3,ParamName4,ParamName5,ParamName6;//wchar_t *ParamName;ProParameter param1,param2,param3,param4,param5,param6;ProParamvalue value1,value2,value3,value4,value5,value6;70ProError status;UpdateData(true);status=ProMdlCurrentGet(&model);if (status!=PRO_TK_NO_ERROR)return ;ProMdlToModelitem(model, &modelitem);ProStringToWstring(ParamName1,"Z");ProStringToWstring(ParamName2,"ANGLE");ProStringToWstring(ParamName3,"C");ProStringToWstring(ParamName4,"M");ProStringToWstring(ParamName5,"HA");ProStringToWstring(ParamName6,"B");status=ProParameterInit(&modelitem,ParamName1,¶m1);status=ProParameterInit(&modelitem,ParamName2,¶m2);status=ProParameterInit(&modelitem,ParamName3,¶m3);status=ProParameterInit(&modelitem,ParamName4,¶m4); status=ProParameterInit(&modelitem,ParamName5,¶m5); status=ProParameterInit(&modelitem,ParamName6,¶m6); if (status==PRO_TK_NO_ERROR){ProParameterValueGet(¶m1, &value1);value1.value.d_val=M_Z;ProParameterValueSet(¶m1, &value1);//ZProParameterValueGet(¶m2, &value2);value2.value.d_val=M_ANGLE;ProParameterValueSet(¶m2, &value2);//ANGLEProParameterValueGet(¶m3, &value3);value3.value.d_val=M_C;ProParameterValueSet(¶m3, &value3);//CProParameterValueGet(¶m4, &value4);value4.value.d_val=M_M;ProParameterValueSet(¶m4, &value4);//MProParameterValueGet(¶m5, &value5);value5.value.d_val=M_HA;ProParameterValueSet(¶m5, &value5);//HAProParameterValueGet(¶m6, &value6);value6.value.d_val=M_B;ProParameterValueSet(¶m6, &value6);//BM_D=M_Z*M_M;//DM_DB=M_D*cos(M_ANGLE);//DBM_DA=M_D+2*M_M*M_HA;//DAM_TIP_RAD=3.1415*M_M/8;//TIP_RADM_DF=M_D-2*M_M*(M_HA+M_C);//DF71ProSolidRegenerate ((ProSolid)model,PRO_B_TRUE);ProWindowRepaint(PRO_V ALUE_UNUSED);UpdateData(false);}}}BOOL CLoadDlg2::OnInitDialog(){CDialog::OnInitDialog();ProMdl model;ProModelitem modelitem;ProNameParamName1,ParamName2,ParamName3,ParamName4,ParamName5,ParamName6;//wchar_t *ParamName;ProParameter param1,param2,param3,param4,param5,param6;ProParamvalue value1,value2,value3,value4,value5,value6; ProError status;status=ProMdlCurrentGet(&model);if (status!=PRO_TK_NO_ERROR){ProMdlToModelitem(model, &modelitem); ProStringToWstring(ParamName1,"Z"); ProStringToWstring(ParamName2,"ANGLE"); ProStringToWstring(ParamName3,"C"); ProStringToWstring(ParamName4,"M"); ProStringToWstring(ParamName5,"HA");ProStringToWstring(ParamName6,"B");status=ProParameterInit(&modelitem,ParamName1,¶m1); status=ProParameterInit(&modelitem,ParamName2,¶m2); status=ProParameterInit(&modelitem,ParamName3,¶m3);status=ProParameterInit(&modelitem,ParamName4,¶m4);status=ProParameterInit(&modelitem,ParamName5,¶m5);status=ProParameterInit(&modelitem,ParamName6,¶m6);if (status==PRO_TK_NO_ERROR){ProParameterValueGet(¶m1, &value1);M_Z=value1.value.d_val;ProParameterValueSet(¶m1, &value1);//ZProParameterValueGet(¶m2, &value2);M_ANGLE=value2.value.d_val;ProParameterValueSet(¶m2, &value2);//ANGLEProParameterValueGet(¶m3, &value3);M_C=value3.value.d_val;72ProParameterValueSet(¶m3, &value3);//CProParameterValueGet(¶m4, &value4);M_M=value4.value.d_val;ProParameterValueSet(¶m4, &value4);//MProParameterValueGet(¶m5, &value5);M_HA=value5.value.d_val;ProParameterValueSet(¶m5, &value5);//HAProParameterValueGet(¶m6, &value6);M_B=value6.value.d_val;ProParameterValueSet(¶m6, &value6);//B}}return TRUE; // return TRUE unless you set the focus to a control }void CLoadDlg2::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);DDX_Text(pDX, IDC_EDIT1, M_Z);DDX_Text(pDX, IDC_EDIT2, M_ANGLE);DDX_Text(pDX, IDC_EDIT3, M_C);DDX_Text(pDX, IDC_EDIT4, M_M);DDX_Text(pDX, IDC_EDIT5, M_HA);DDX_Text(pDX, IDC_EDIT6, M_B);DDX_Text(pDX, IDC_EDIT7, M_D);DDX_Text(pDX, IDC_EDIT8, M_DB);DDX_Text(pDX, IDC_EDIT9, M_DA);DDX_Text(pDX, IDC_EDIT10, M_TIP_RAD);DDX_Text(pDX, IDC_EDIT11, M_DF);}四、直齿圆锥齿轮对话框实现文件// LoadDlg3.cpp : 实现文件#include "stdafx.h"#include "chilunsheji.h"#include "LoadDlg3.h"#include <ProSolid.h>#include <math.h>#include "ProUtil.h"#include <ProWindows.h>#include <ProParameter.h>#include <ProParamval.h>IMPLEMENT_DYNAMIC(CLoadDlg3, CDialog)CLoadDlg3::CLoadDlg3(CWnd* pParent /*=NULL*/)73DDX_Text(pDX, IDC_EDIT7, M_BETA);DDX_Text(pDX, IDC_EDIT8, M_S);DDX_Text(pDX, IDC_EDIT9, M_GAMMA);}六、响应文件//响应函数#include"stdafx.h"#include"LoadDlg.h"#include"chilunsheji.h"#include "LoadDlg.h"int GearDesign1MenuActFn(){AfxMessageBox(_T("齿轮"));AFX_MANAGE_STATE(AfxGetStaticModuleState());int status;CLoadDlg LoadDlg;status=LoadDlg.DoModal();if(status==0){AfxMessageBox(_T("对话框创建失败"));}return status;}七、直齿圆柱齿轮对话框头文件#pragma once#include"resource.h"class CLoadDlg2 : public CDialog{DECLARE_DYNAMIC(CLoadDlg2)public:CLoadDlg2(CWnd* pParent = NULL); // 标准构造函数virtual ~CLoadDlg2();enum { IDD = IDD_DIALOG2 };protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持DECLARE_MESSAGE_MAP()public:afx_msg void OnEnChangeRichedit26();double M_Z;double M_ANGLE;double M_C;85double M_M;double M_HA;double M_B;double M_D;double M_DB;double M_DA;double M_TIP_RAD;double M_DF;public:afx_msg void OnBnClickedOk();public:afx_msg void OnBnClickedCancle();public:afx_msg void OnBnClickedmokuaichongsheng();public:afx_msg void OnEnChangeEdit1();public:afx_msg void OnEnChangeEdit2();public:afx_msg void OnEnChangeEdit3(); public:afx_msg void OnEnChangeEdit4(); public:afx_msg void OnEnChangeEdit5(); public:afx_msg void OnEnChangeEdit6(); public:afx_msg void OnEnChangeEdit7(); public:afx_msg void OnEnChangeEdit8(); public:afx_msg void OnEnChangeEdit9(); public:afx_msg void OnEnChangeEdit10(); public:afx_msg void OnEnChangeEdit11(); public:virtual BOOL OnInitDialog();};86。
PROE做齿轮运动仿真机构的详细过程齿轮运动仿真机构是一种用于实现齿轮系统运动仿真的装置,能够模拟齿轮和传动件在运动过程中的相对运动关系,用于预测和分析齿轮系统在不同工况下的运动性能和传动特性。
下面将详细介绍PROE(即现在多数被称为PTC Creo)软件制作齿轮运动仿真机构的过程。
第一步:建立齿轮模型1.打开PROE软件,选择“新建”新建一个零件。
2.根据实际齿轮的参数,使用绘图工具绘制齿轮的几何图形,包括齿数、齿轮直径、法向压力角等参数。
3.随后,利用特征操作命令,例如旋转、修剪、倒角等,对齿轮模型进行修整,使其符合实际需求。
第二步:建立约束1.在齿轮模型上选择一个轴线,作为齿轮运动的旋转轴。
2.新建一个“约束组”来管理后续创建的约束。
3.使用“旋转关节”命令将齿轮相对于旋转轴固定。
4.在约束组中继续创建其他约束,例如平行、垂直、距离等,以限制齿轮运动。
第三步:建立运动关系1.打开“运动关系”界面,选择“新建”创建一个新的运动关系。
2.根据需要,选择合适的运动类型,例如旋转、滑动等。
3.选择齿轮和其他关联几何体,建立相应的运动关系。
4.设定齿轮的运动参数,例如角速度、角加速度等。
第四步:修改齿轮模型参数1.在齿轮模型中修改各种参数,例如齿数、齿宽、模数等。
2.运用“更新”功能可以实时更新齿轮模型的几何形状及尺寸。
第五步:运行仿真1.进入“运动仿真”界面,点击“运行”按钮开始仿真。
2.根据所建立的运动关系和约束,仿真系统会模拟齿轮的运动过程。
3.可以观察到齿轮与齿轮之间的相对运动、接触点位置等。
4.在仿真过程中可以调整参数,观察不同参数对齿轮运动的影响。
第六步:分析仿真结果1.在仿真过程中会生成大量的仿真数据,可以用于分析齿轮系统的运动性能。
2.可以查看齿轮之间的接触应力、摩擦力、扭矩等数据。
3.根据仿真结果评估齿轮系统的传动效率、功耗、噪声等特性。
第七步:优化设计1.根据分析结果,对齿轮系统进行优化设计。
基于Pro/E二次开发齿轮参数化模型库本文介绍了Pro/Engineer参数化设计的基本原理和基于Pro/Program二次开发实现参数化建库的方法,并以渐开线齿轮为例,详细阐述了基于Pro/Program二次开发参数化程序设计的实现过程。
传统的CAD系统所构造的产品模型都是几何图素(如点、线、圆等)的简单堆叠,仅仅描述了设计产品的可视化形状,而不包含设计者的设计思想,因此难以对产品模型进行改动,并生成新的产品实例。
目前很多企业为缩短产品开发周期,大部分产品的设计都是改进型设计,大约70%的新产品的设计都要重新利用原来的产品模型,于是参数化设计的概念在这样的背景下应运而生。
Pro/Engineer是采用参数化设计的、基于特征的三维实体造型系统,其参数化特征造型在保证几何、拓扑关系不变的情况下,以单一全关联的数据库实现模型的快速再生;它的二次开发接口使用户可以在自己开发的程序中对零件进行各种操作和控制,从而实现程序化设计。
一、Pro/Engineer二次开发参数化设计的基本原理Pro/Program是Pro/Engineer软件提供的一种程序化的二次开发工具。
利用Pro/Engineer造型的同时,Pro/Program会产生特征的program,它是一个记录文件,由类似BASIC的高级语言构成,记录着模型树(modeltree)中每个特征的详细信息,包括各个特征的建立过程、参数设置、尺寸以及关系式等,我们可以通过修改和添加特征的program来生成基本参数相同的一系列模型。
利用Pro/Program对Pro/Engineer软件进行二次开发时不需要重新撰写设计步骤,只需加入几个相关的语法指令就可以让整个零件或组件变得弹性化与多样化,其主要思想是利用Pro/Program模块的功能来接收、换算和传递用户输入的有关参数,通过改变特征的尺寸及特征之间的关系来达到参数化设计的目的。
这里需要注意的是,开发工作的关键在于确定独立可变参数,应尽量以最少的参数来确定整个零件的可变尺寸,并通过参数化尺寸驱动实现对设计结果的修改。
基于Pro /E的齿轮参数化设计摘要摘要Pro /E乃是当今世界上比较流行的三维模型设计软件,使用软件中的渐开线方程启动生成渐开线。
Pro /E有更好的图形界面,和设计环境更加生动,快速的渲染功能,反映了更大的灵活性。
而且可以利用计算机预先举行动态剖析及装配干预检查工作,从而最大幅度地提升工作效率。
本设计即利用该软件进行齿轮的参数化设计。
关键词:Pro /E;齿轮;参数化设计目录摘要 (Ⅰ)1绪论 (1)1.1研究背景 (1)1.2国内外研究现状与趋势 (1)2.PRO/E软件简介 (2)3.渐开线直齿轮的参数化造型 (2)3.1参数化技术 (2)3.2参数化模型 (2)4渐开线齿轮数学模型 (3)4.1齿轮的参数赋值 (3)4.2渐开线成型原理 (3)5P r o/E齿轮的参数化设计 (4)结论 (20)参考文献 (20)1.绪论1.1研究背景20 世纪80年代以来,以计算机辅助设计技巧为代表的新技术席卷全世界,该技术不仅促进了计算机本身性能的提高和推陈出新,而且深刻影响到全部的工业技术领域。
CAD技术经历了曲面造型,实体建模技术和参数化技术的跨越式发展,给工业技术领域带来极大的进步与发展。
渐开线齿轮作为各类机械传动配置中的紧要装配,具有传动比大、效率高、寿命长等优点,普遍应用于机器、船舶、航空、电力范畴。
随着三维CAD 软件纷繁涌现,一般机器零件的三维计划对平凡工程师来讲不再是艰苦的事情。
但对于渐开线齿形而言,由于确定其准确的模型非常困难,在传统圆柱齿轮设计中,对于齿轮的强度校核过程和设计过程主要是通过人工设计完成,计算繁琐,容易出现设计误差和错误,设计周期长且难以实现优化设计,进而粗糙的模型会影响到下面的齿轮加工操作。
对这个问题的解决过程中出现了CAD参数化设计的概念,。
参数化设计的出现大大提高了模型的生成和修改的速度,在产品的系列设计、相似设计及专用CAD 系统开发反面都具有较大的应用价值。
proe画齿轮的两种经典方法在工程领域中,齿轮是非常重要的元件之一,广泛应用于各种机械设备中。
齿轮的作用是传递运动和力量,可将旋转运动转化为线性运动或改变旋转方向和转矩。
在齿轮的设计和制造过程中,有两种经典方法供工程师选择:齿轮副的分度圆法和正轴和斜轴的绘制法。
第一种方法是基于齿轮副的分度圆法。
在这种方法中,首先确定齿轮的最小齿轮副的分度圆直径。
分度圆是齿轮齿数的比值乘以模数的圆,也可以说是两个相邻齿的齿顶与齿根的中点圆。
然后绘制一条与分度圆相切的正方向射线,该射线相交中心点而无扩散。
从齿根开始,将一半的分度圆切割成等分数,然后将相应的点投影到齿顶上。
重复此过程,直到绘制完整的齿形轮廓。
通过这种方法,可以绘制出齿轮的完整轮廓,并确保齿轮的齿数和模数的正确匹配。
第二种方法是基于正轴和斜轴的绘制法。
在这种方法中,根据需求选择齿轮的正轴角度或斜轴角度。
正轴是指一对齿轮的轴线之间的夹角为90度的情况,而斜轴是指轴线之间的夹角不等于90度的情况。
首先,确定齿轮的正轴或斜轴角度。
然后,在绘制齿轮时,将齿轮的基圆绘制为一个与轴线平行的圆。
在这个圆上,以齿轮的模数为半径,绘制齿点作为齿根和齿顶之间的交点。
然后,通过绘制一系列斜线和弧线将齿形轮廓连接起来。
通过这种方法,可以绘制出具有正确角度和齿形的齿轮。
这两种经典方法都具有各自的优点和适用范围。
齿轮副的分度圆法更加简单直观,适用于直线齿轮和小模数齿轮的设计。
而正轴和斜轴的绘制法则更适用于斜齿轮和大模数齿轮的设计。
两种方法都需要工程师熟练的绘图技巧和对齿轮设计原理的深入理解。
除了这两种经典方法,现代技术和计算机辅助设计已经提供了更多高效精确的齿轮设计方法。
例如,通过使用CAD软件和专业的齿轮设计工具,可以精确计算齿轮的尺寸、齿形和齿数比。
这大大简化了齿轮设计的过程,并提高了齿轮的质量和性能。
总之,齿轮的设计是工程领域中的重要任务之一、通过齿轮副的分度圆法和正轴和斜轴的绘制法,工程师可以绘制出满足需要的齿轮轮廓,并确保其准确匹配。
proE 直齿圆柱齿轮的画法本作者是在一家非标设计院工作,经常需要用到标准件的调用。
如需详细内容,请参考下文:1 使用front 平面草绘4 个任意半径的同心圆,确定,按“√”退出草绘。
2 点击“工具—>参数”弹出参数设置框,点击“+”增加参数行,在“名称”列输入直齿圆柱齿轮的参数符号,在“值”列输入需要指定的参数值。
其中:m(模数)、z(齿数)、Prsangle(齿形角)ha(齿高)、c(齿隙系数)、3 点击“工具—>关系”弹出“关系”框,对齿轮的参数建立参数关系式。
3.1 将鼠标移到至同心圆上,4 个同心圆同时加亮,点击,显示同心圆的尺寸符号。
3.2 在“关系”栏中输入如下关系式,点击“确定”关闭窗口。
d=m*zdb=d*(cos(prsangle))da=d+2*m*hadf=d-2*(ha+c)*mD0=dD1=dbD2=daD3=df4 执行“编辑—>再生”,图形中通过关系式赋值的4 个同心圆的直径确定,即d、db、da、df 的值,再次打开参数栏可以看到这4 个参数已经被赋值。
5 绘制齿轮的渐开线点击窗口“创建基准曲线”按钮,选取“从方程”,确定,选取模型树中的坐标系,类型为圆柱坐标系后弹出程序运行框和记事本,在记事本中输入渐开线方程如下:x=t*sqrt((da/db)^2-1)y=180/pir=0.5*db*sqrt(1+x^2)theta=x*y-atan(x)z=0若为笛卡尔坐标系,则方程为r=db/2theta=t*60x=r*cos(theta)+r*(theta*pi/180)*sin(theta)y=r*sin(theta)-r*(theta*pi/180)*cos(theta)z=0点击记事本“文件—>保存”后关闭记事本,在“曲线:从方程”的右下角点击“预览”或直接确定,渐开线绘制成功。
6 创建渐开线与分度圆的交点为基准点。
执行“基准点创建”工具,选取渐开线后,按下“ctrl”选取分度圆,“确定”,基准点PNT0 创建成功。
参数化圆柱齿轮设计1.新建并命名零件的模型chi_lun,取消使用缺省模板,选取mmns_part_solid,单击“确定”进入零件设计窗口。
图1 图2图32.从“工具”—“参数”,设置齿轮参数。
如下图所是:图43.在Front平面草绘齿顶圆,分度圆,基圆,齿根圆,并在关系中设置四个圆的参数。
图5 图64.绘制渐开线。
单击,从方程,选取坐标系,迪卡尔,单击“确定”。
进入记事本编辑器,输入渐开线参数如下:图7保存并退出记事本,查看预览渐开线,如下图所示,单击“确定”,完成渐开线的绘制。
图85.以渐开线为草绘线拉伸曲面,并在“关系”中定义拉伸长度。
并单击重生成试图。
图9 图10 图11图12 图136.延伸曲面如下图所示:“编辑”—“延伸”,在“关系”中定义延伸长度为d0/2。
图14 图157.创建如图16所示的基准轴A_1:图16 图178.创建如图17所示的基准点PNT0:9.过基准轴A_1和基准点PNT0创建如图18所示的基准面DTM1:10.过基准轴A_1和基准面DTM1创建如图19所示的基准面DTM2,参照步骤5创建上一步基准平面旋转角度关系式D9=90/z。
11.以基准面DTM2镜像步骤6延伸后形成的曲面。
如图20所示:12.合并曲面,如图21和图22所示:图18 图19图20 图21图22 图2313.以基圆为轮廓线拉伸曲面并在关系中设置其拉伸长度为b。
如图23所示:14.创建如图24所示旋转复制曲面。
旋转角度关系式D13=360/z。
图24 图2515.阵列步骤14的旋转特征,并在关系式中设置阵列个数为P15=z-1,完成关系定义后,单击再生图标,再生模型,如图25所示:16.合并曲面,先合并第一组曲面,接着合并移动的那组曲面,然后单击阵列图标,完成全部合并特征,如图下图所示:图26 图27图28 图29 17.倒圆角,先倒1、2两处,接着倒3、4两处,然后单击阵列图标,完成全部倒圆角特征,如图下图所示:图30 图3118.以齿顶圆为轮廓线拉伸实体并在关系中设置其拉伸厚度为b。
齿轮轴的ProE优化设计
2011-02-08 20:32:47 作者:来源:智造网—助力中国制造业创新—
分享到
在Pro/ENGINEER中,优化设计工具通过一系列设计分析迭代来逼近目标,同时满足定义的任一设计限制,它也可以用来测试某一设计对特定约束或者限制的可行性。
在可行性分析中,无需定义目标。
本文介绍了齿轮轴的ProE优化设计相关内容。
利用FEA做结构和热力分析,提供了一种在给定工作条件和材料的情况下评估模型应力、应变和热分布的方法。
使用这些分析工具和其他Pro/ENGINEER内置的函数,可以对用户定义的目标进行测量。
通常这一目标和许多设计尺寸直接相联系。
改变这些尺寸的值或者设计变量,自定义的目标也相应改变。
优化设计就是对于用户自定义的设计目标,自动搜寻这些变量的最佳值。
在大多数应用中,规定了一系列的设计约束来指定所允许的设计变量的边界。
一、概述
在Pro/ENGINEER中,优化设计工具通过一系列设计分析迭代来逼近目标,同时满足定义的任一设计限制,它也可以用来测试某一设计对特定约束或者限制的可行性。
在可行性分析中,无需定义目标。
在这个案例中,笔者用齿轮和齿轮轴的例子来阐述优化设计的方法,如图1所示。
为了简化问题,笔者假定齿轮轴是一个钢制作的实体,考虑最小质量为设计目标,选择齿轮宽度d4作为设计变量。
其他已知参数如表所示。
◎材料为钢;
◎尺寸:d0、d1、d6、d7、d3、d11、d12和整个零件长度不变;
◎零件承受应力不超过:7x108(lbm/s2in2)
◎零件两端固定;
◎载荷
(磅),作用在齿轮圆柱体外表面。
优化设计获得尺寸d4的最佳值并使部件的重量最小。
二、模型创建
创建几何模型并添加机械性能。
1.创建齿轮——轴的实体模型
在Pro/ENGINEER中,创建模型,因为需要保证轴的长度,同时要调整纬度d4,因此笔者添加一个纬度关系:d7=l1-d4。
2.启动Pro/ENGINEER Mechanica
开始结构设计,在Pro/ENGINEER中,选择“Application”→“Mechanica”,按照Pro/ENGINEER 结构分析指南,指派材料,施加约束,施加载荷,并对模型网格化。
为了定位载荷,不要忘记插入平面区域。
最后完成的零件如图2所示。
这时候模型就可准备做最优化设计分析了。
/uploadfile/article/uploadfile/201102/20110208081230985.jpg
三、灵敏度分析
在机械设计中,各种设计参数与设计目标相互关联的方式不一。
为了探明这些设计变量以何种方式影响设计目标,用灵敏度分析或者灵敏度研究来确定关键参数,以便更好地实施设计最优化问题。
在Pro/ENGINEER中,灵敏度分析包括全局灵敏度分析和局部灵敏度分析。
全局灵敏度分析研究设计参数在其整个可能的取值范围内对设计模型的影响。
局部灵敏度分析着重于一个特定参数的值,分析该参数变化趋势也就是曲线斜率对性能的影响。
1.全局灵敏度分析
全局灵敏度分析按下列步骤进行:依次选择“Mechanica”→“Analysis”→“Mechanica Analysis/Studies”。
在“Design Study Definition”对话框中,点击“File”→“New Sensitivity Design Study”,选择分析类型“Global Sensitivity”,打开如图3所示对话框。
键入设计说明(可选),取新的设计分析为“Gear_global”,缺省类型是 Global Sensitivity。
从列表中选择分析项目。
这里选择分析“gear_static”。
在Variables选项卡的右边,点击Select Dimension 按钮。
从模型中选择齿轮宽度d4,当前值是3。
设置Start值为0.5,End值为4,在窗口底端,接受默认步长数值为10。
点击“OK”。