proe参数化设计实例
- 格式:doc
- 大小:217.00 KB
- 文档页数:4
参数化锥齿轮设计1.新建并命名零件的模型zhui_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创建如图20所示的基准面DTM2,参照步骤5创建上一步基准平面旋转角度关系式D9=90/z。
11.以基准面DTM2镜像步骤6延伸后形成的曲面。
如图21所示:图18 图19图20 图21 12.以基圆为轮廓线拉伸曲面并在关系中设置其拉伸长度为b。
如图23所示:图22 图23 13.合并曲面。
如图24、25所示:图24 图25 14.创建如图24所示的基准点和基准轴。
图24 图2515.以齿顶圆为轮廓线拉伸曲面并在关系中设置其拉伸长度为b。
如图26所示:图26 图2716.创建旋转复制特征,使其旋转角大小等于long,如图27所示:17.草绘基准曲线,如图28所示:图28 图29 18.创建旋转特征。
如图29、30所示:图30 图3119.创建扫描混合切削特征。
如图32所示:图32 图33 20.创建旋转切削特征,如图33所示:21.创建旋转切削特征,如图34所示:图34 图35 22.移动复制齿特征。
蜗轮蜗杆的创建蜗杆的创建:在PRO/E 中使用参数化创建蜗杆,具体操作步骤如下:1.创建新的零件文件:File/New →【输入零件名称:wogan,取消Use default template 的选中记号,然后单击OK 按钮】→【选择公制单位mmns_part_solid后单击OK按钮】→【基准坐标系PRT_CSYS_DEF及基准面RIGHT、TOP、FRONT显示在画面上】Tools/Program…/Edit Design→【打开记事本,在INPUT和END INPUT 之间以及RELATION和END RELATION 之间添加输入参数如下,然后存盘,并退出记事本】INPUTM NUMBER ;模数Z1 NUMBER ;蜗杆头数Z2 NUMBER ;蜗轮齿数DIA1 NUMBER ;蜗杆分度圆直径(标准系列值)LEFT YES_NO ;旋向,YES表示左旋,否则为右旋END INPUTRELATIONSDIA2=M*Z2 ;蜗轮分度圆直径L=(11+0.06*Z2)*M ;蜗杆有效螺旋线长度END RELATIONS→【信息窗口出现“Do you want to incorporate your changes into the model:【YES】”,选择YES,以便输入参数值】→【Enter→Select All,根据信息窗口提示,各参数赋初值如下】Z1 = 1Z2 = 30DIA1 = 28旋向暂不输入,后期处理。
各参数的建立和赋值结束。
→【出现“螺旋扫描”对话框,接受属性子菜单中各默认选项,包括Constant(等导程)、ThruAxis(截面通过旋转轴线)、Right Handed(右旋) →Done】→【进入扫描廓型创建画面,绘制图7-2所示直线(尺寸如图),并绘制回转轴线】→【Tools/Relations→显示参数符号如图7-3所示,并出现Relationship对话框】→【在对话框内输入:sd3=L;sd4=L/2;sd1=DIA1/2→OK】→【单击图标,进入导程设定→在导程设定窗口输入导程值M*PI*Z1→点击图标】→【进入截面绘制画面,绘制图7-4所示截面图形(尺寸如图)】→【Tools/Relations→显示参数符号如图7-5所示,并出现Relations对话框】→【在对话框内输入:sd61=1.25*M;sd62=M;sd63=M*PI/2-2*M*tan(20) →OK】→【单击图标→OK,生成螺旋体如图所示,】上述造型过程中,各参数除导程外均已实现参数化,下面对导程实施参数化。
proe参数化建模简介(1)本教程分两部分,第一部分主要介绍参数化建模的相关概念和方法,包括参数的概念、参数的设置、关系的概念、关系的类型、如何添加关系以及如何使用关系创建简单的参数化零件(以齿轮为例)。
第二部分介绍参数化建模的其他方法:如族表的应用、如何使用UDF(用户自定义特征)、如何使用Pro/Program创建参数化零件。
(后一部分要等一段时间了,呵呵)参数化设计是proe重点强调的设计理念。
参数是参数化设计的核心概念,在一个模型中,参数是通过“尺寸”的形式来体现的。
参数化设计的突出有点在于可以通过变更参数的方法来方便的修改设计意图,从而修改设计意图。
关系式是参数化设计中的另外一项重要内容,它体现了参数之间相互制约的“父子”关系。
所以,首先要了解proe中参数和关系的相关理论。
一、什么是参数?参数有两个含义:●一是提供设计对象的附加信息,是参数化设计的重要要素之一。
参数和模型一起存储,参数可以标明不同模型的属性。
例如在一个“族表”中创建参数“成本”后,对于该族表的不同实例可以设置不同的值,以示区别。
●二是配合关系的使用来创建参数化模型,通过变更参数的数值来变更模型的形状和大小。
二、如何设置参数在零件模式下,单击菜单“工具”——参数,即可打开参数对话框,使用该对话框可添加或编辑一些参数。
1.参数的组成(1)名称:参数的名称和标识,用于区分不同的参数,是引用参数的依据。
注意:用于关系的参数必须以字母开头,不区分大小写,参数名不能包含如下非法字符:!、”、@和#等。
(2)类型:指定参数的类型∙a)整数:整型数据∙b)实数:实数型数据∙c)字符型:字符型数据∙d)是否:布尔型数据。
(3)数值:为参数设置一个初始值,该值可以在随后的设计中修改(4)指定:选中该复选框可以使参数在PDM(Product Data Management,产品数据管理)系统中可见(5)访问:为参数设置访问权限。
∙a)完全:无限制的访问权,用户可以随意访问参数∙b)限制:具有限制权限的参数∙c)锁定:锁定的参数,这些参数不能随意更改,通常由关系式确定。
齿轮参数化设计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/ENGINEER软件是美国PTC公司开发的CAD/CAE/CAM系统解决方案,其强大的三维处理功能、先进的设计理念和简单实用的操作受到许多设计者推崇。
其CAD辅助设计系统采用参数化设计、基于特征的实体模型化设计系统,与传统的CAD系统所建立的几何图素简单堆叠的模型不同,Pro/ENGINEER的CAD系统建立的模型可以深刻地体现设计者的思想,不但可以真实体验设计产品的可视化模型,而且可以适应提高重复型、改进型设计效率以及参数化、信息全相关的要求。
一、参数化建模原理及分析参数化设计方法使设计者构造模型时可以集中于概念设计和整体设计,充分发挥创造性,提高设计效率。
其主要思路如图1所示,通过对产品建模特征的解析,从特征中抽象出特征参数,再对特征参数进行分析,得到参数模型。
根据模型信息建立参数间关联与约束,并确定某些参数为设计变量,进而建立由设计变量驱动的零件族。
通过参数化的方法建立零件,可以方便零件族的实现及其管理操作,可以实现设计中大量重复、改进型设计效率的提高。
参数化设计对于形状大致相似的一系列零部件,只需修改相关参数,便可生成新的零部件,从而大大提高设计效率。
零件族由一个模板和用来驱动模板的表格组成,模板含有生成零件族成员的全部特征,族表反映模板设计变量值、表达式关系及零件属性等的更改。
零件族成员是一系列结构相似的零件,对模板的修改将自动更新零件族的所有成员。
在Pro/ENGINEER中建立的零件族实现方法主要有两种:(1)族表。
先建立一个通用零件为父零件,然后在其基础上对各参数(如尺寸,特征参数,组件等)加以控制,生成派生零件;(2)程序建模。
Pro/ENGINEER具有开放的体系结构和优秀的二次开发工具,允许开发者根据客户的特殊需要来进行扩充和修改。
利用Pro/ENGINEER建模时,Pro/Program会产生特征程序,它记录着模型树(model tree)中包括各个特征的建立方法、参数设置、尺寸以及关系式约束等在内的每个特征的详细信息,可以通过修改和添加特征的program来生成基本参数相同的模型库。
另外还有2辊式V形托辊组、反V形托辊组,对防止下胶带跑偏有一定效果。
具有纠偏作用的有V形前倾托辊和下调心托辊,通常的配置有:(1)平行下托辊与V形前倾托辊比例为7:3,即每隔7组平行下托辊设3组V形前倾托辊。
(2)平行下托辊与下调心托辊比例为9:1,即每lo组平行下托辊中设l组调心托辊。
(3)平行下托辊、V形托辊与下调心托辊比例为10:2:1,即每13组下托辊中设10组平行下托辊、2组V形托辊、1组下调心托辊,安装时通常采用5:2:5:1方式。
2配置时需要考虑的影响因素2.1外部因素外在因素主要考虑设备的安装、制造质量及设备基础的地质条件等,对制造、安装误差较大、地质条件不太稳定的带式输送机,设计时应尽量增大调心托辊的配置比例,反之应尽量减小。
2.2内在因素内在因素主要是在整机的基本参数的设计上,如带速、运距、受料点的数量、受料方式等。
通常带速越高、运距越长应尽量减少调心托辊的配置比例,受料点越多、受料搭接角度越大,应尽量增多调心托辊的配置。
3常见配置的应用以煤矿用户为例,配置(1)多用于安装质量较高、运行环境较好、跑偏可能性较小的带式输送机,如地面煤楼上的带式输送机;配置(2)多用于安装质量中等、运行环境一般、有跑偏可能性的带式输送机,如煤矿运输大巷的带式输送机;配置(3)多用于安装质量较差、运行环境较恶劣、跑偏可能性较大的带式输送机,如煤矿采区的带式输送机。
4结论在带式输送机设计中,应综合考虑用户单位、制造厂家、安装单位等有关信息,以确保调心托辊的配置合理、经济、实用,避免盲目。
作者:胡志超地址:河南平顶山市矿工路东段平煤东联机械制造有限责任公司技术中心邮编:467021收稿日期:2007—01—30基于Pro/E3.0的链轮参数化设计莱芜职业技术学院李世班吴修彬摘要:在Pm/E3.0环境下,利用其开发工具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 系统开发反面都具有较大的应用价值。
基于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参数化设计实验
一、程序参数化设计实验
1、实验步骤
(1)建立实验模型见图1,具体包括拉伸、打孔及阵列操作。
图1
(2)设置参数。
在工具D=300、大圆高度H=100、边孔直径DL=50、阵列个数N=6、中孔直径DZ=100、中孔高度DH=100,见图2。
图2
(3)建立参数和图形尺寸的联系。
在工具关系,建立如下关系:D1=D、D0=H、D10=DL、NUM=N、D3=DZ、D2=DH。
其中NUM是图形中阵列个数的名称改变后得到的。
(4)建立程序设计。
在工具程序,建立程序如下:
INPUT
DZ NUMBER
"输入中孔直径值=="
DH NUMBER
"输入中孔高度值=="
H NUMBER
"输入大圆高度值=="
D NUMBER
"输入大圆直径值=="
N NUMBER
"输入阵列数目=="
DL NUMBER
"输入边孔直径值=="
END INPUT
将此程序保存后,在提示栏中输入所定义的各个参数的值:大圆直径D=500、大圆高度H=20、边孔直径DL=20、阵列个数N=8、中孔直径DZ=150、中孔高度DH=200。
(5)最后生成新的图形见图3
图3
2、实验分析
本实验通过程序的参数化设计,改变了大圆直径、大圆高度、边孔直径、阵列个数、中孔直径、中孔高度的值,得到了我们预想要的结果。
二、族表的参数化设计
1、实验步骤
(1)建立半圆键模型。
见图1
图1
(2)建立族表。
通过工具族表,单击“在所选行处插入新实例”按钮,建立四个子零件名,再单击“添加/删除表列”按钮,建立所需要改变的尺寸(主要的标准尺寸h、b、d1)。
见图2
图2
(3)校验族的实例和字零件的生成。
单击按钮“校验族的实例”,校验成功后,
我们即可以得到新的族所生成的子零件见图3和图4。
图3
图4
2、实验分析
本实验通过对半圆键的族表建立,设定了我们需要的规范尺寸,产生出我们需要的部分标准子零件,通过以上实验步骤的设计,我们很好的达到了预期的结果。