基于Pro/E的直齿圆柱齿轮参数化设计
- 格式:pdf
- 大小:166.30 KB
- 文档页数:3
基于Pro/ENGINEER的变速器圆柱齿轮开发方案摘要:基于cad变速器直齿圆柱齿轮的二次开发,主要工作分为两部分。
第一部分是通过对齿轮变速器和cad技术研究的现状及发展趋势的分析,以及对多种三维参数化设计软件的分析比较后提出一种切实可行的基于pro/e的变速器直齿圆柱齿轮的三维参数化设计方法。
主要工作集中在渐开线直齿圆柱齿轮的三维参数化设计上。
通过对渐开线的几何分析分析,得出渐开线参数方程,然后通过然后通过参数化建模过程创建变速器直齿圆柱齿轮,再通过编辑program程序二次开发设计新齿轮。
第二部分是基于automation gateway的齿轮设计界面二次开发。
主要工作是在vb环境下,以automation gateway为基础,开展pro/e齿轮参数化设计界面的二次开发。
用vb建立一个参数输入程序界面,通过automation gateway就可以利用visual basic访问pro/e 底层数据库,该程序就能够接受我们在界面中所输入的参数数值,并传给pro/e系统中的参数,最后pro/e系统会根据所输入的参数零件再生(regenerate),便可以生成不同的齿轮。
关键词:变速器 cad 齿轮参数化二次开发现代cad系统的二次开发必须以软件为平台,使用正确的方法论,尽量减少和避免程序中的失误,提高使用者的工作效率。
本变速器圆柱齿轮cad系统的二次开发严格按照此进行。
1 pro/engineer二次开发基本原理pro/e是采用参数化设计的、基于特征的三维实体造型系统,其参数化特征造型在保证几何、拓扑关系不变的情况下,以单一全关联的数据库实现模型的快速再生;它的二次开发接口使用户可以在自己开发的程序中对零件进行各种操作和控制,从而实现程序化设计。
pro/program是pro/e软件本身自带的二次开发工具。
利用pro/engineer造型的同时,pro/program会自动产生特征的program 这个记录文件,由高级计算机语言basic构成,其中包括模型树(modeltree)中所有特征的详细信息:各个特征的建立过程、参数设置、尺寸以及关系式等,我们可以修改和添加特征的program 生成基本参数相同的一系列模型。
基于PRO/E的齿轮参数化设计系统的研究摘要在产品设计过程中,建立零件参数化设计系统是提高产品设计效率的有效途径。
本文论述了以Pro/E为平台,VC++为开发工具,通过加载Pro/TOOLKIT 应用程序,开发出与Pro/E系统集成的零件参数化设计系统,并以齿轮为例,详细阐述了零件参数化程序设计的关键技术和实现过程。
关键词Pro/E;Pro/TOOLKIT;二次开发;参数化设计0 引言齿轮参数化设计,由于其复杂性,一般设计者很难精确的造型。
随着塑料齿轮模具的广泛应用和快速成型及虚拟制造技术的迅速发展,用CAD软件对齿轮三维基体和齿面进行参数化造型设计已成为设计者的迫切需求。
文章采用二次开发工具Pro/Toolkit,在VC环境下,基于机械CAD软件Pro/Engineer开发了齿轮参数化造型设计系统,来解决齿轮三维实体参数化造型设计这一类难题。
1 参数化设计的系统结构参数化程序设计的基本原理是:采用三维模型与程序控制相结合的方式,用交互方式创建三维原始模型,并建立一组能控制三维模型形状和拓扑关系的设计参数,然后在SQL Server数据库中建立相应的表格。
通过VC++映射一个CRecordset 类对象用于交互,参数化程序通过对模型的设计参数编程,来实现设计参数的检索、修改以及三维模型的再生,框图如图1所示。
各模块及功能如下:1)系统界面模块:该模块的作用是定义齿轮实体造型所需要的参数变量;2)三维CAD软件接口模块:CAD软件的API函数以类的形式封装起来,在齿轮造型时通过这些函数驱动CAD软件生成实体;3)结构计算模块:根据界面模块的用户输入的参数计算齿轮的结构参数;4)齿形计算模块:该模块是整个系统的核心。
通过计算得到特定截面的齿廓参数,为齿形生成模块准备所需的数据;5)结构实体生成模块:该模块应用三维CAD软件的基本特征,如拉伸、旋转和圆周阵列等操作,按照结构类型计算模块输入的参数,生成齿轮的结构实体部分;6)齿形生成模块:该模块根据齿形计算的输出参数,利用三维软件的扫描和层叠拉伸功能在齿轮坯上生成一个齿形特性,然后应用圆形阵列生成所有齿形。
XINYU UNIVERSITY毕业设计(论文)( 2014 届)题目基于Pro /E齿轮参数化造型设计二级学院机械工程学院专业机械设计制造及其自动化班级10机制本三班学号1001210341学生姓名颜昱指导教师张香林老师摘要Pro /E乃是当今世界上比较流行的三维模型设计软件,使用这个渐开线方程或螺旋线方程启动生成渐开线或螺旋线。
它有更好的图形界面,和设计环境更加生动,快速的渲染功能,反映了更大的灵活性。
而且可以利用计算机预先举行动态剖析及装配干预检查工作,从而最大幅度地提升工作效率,降低设计本钱。
使用pro/e可以用到内部工具来设计齿轮,例如整列、拉伸等一些功能。
设计非常的快速和方便,方便大学生学习以及工作中的办公使用。
AbstractPro /E is a software of 3D model of today's more popular, the use of involutes equation or spiral line equations driven generation of involutes and helix. It has better graphics interface, and the design environment is more vivid, quick and rendering functions, reflects the more flexibility. And can use computer prior to dynamic analysis and assembly interference inspection work, thus greatly enhance and work efficiency, increase the cost of design. Pro/e can be used to design the gear used internal tools, such as column, stretching some function. The design are fast and convenient, convenient for college students study and work in the office。
摘要随着科技的发展,计算机辅助设计技术越来越广泛的应用在各个设计领域。
现在,它已经突破了二维图纸电子化的框架,转向以三维实体建模、动力学模拟仿真和有限元分析为主线的机械系统动态仿真技术。
其研究范围主要是机械系统运动学和动力学分析,核心是利用计算机辅助技术进行机械系统的运动学和动力学分析,以确定系统及其各构件在任意时刻的位置、速度和加速度,同时,通过求解代数方程组确定引起系统各构件运动所需的作用力和反作用力。
动态仿真技术一出现,就受到人们的普遍关注和重视,并且出现了许多基于动态方=仿真技术的商业软件,较有影响的有美国参数技术公司的PTC。
以Pro/MECHANICA为分析平台,运用有限元分析方法,对直齿轮、斜齿轮实际受力情况、边界条件和施加载荷进行研究。
运动分析模块可以进行机构的干涉分析,跟踪零件的运动轨迹,分析机构中零件的速度、加速度、作用力、反作用力和力矩等。
运动分析模块的分析结果可以指导修改零件的结构设计(加长或者缩短构件的力臂长度、修改凸轮型线、调整齿轮齿数比和中心距等)或者调整零件的材料(减轻或者加重或者增加硬度等)。
设计的更改可以直接反映在装配主模型的复制品分析方案(Scenario)中,再重新分析,一旦确定优化的设计方案,设计更改就可直接反映到装配主模型中。
将Pro/E三维实体造型与Pro/MECHANICA机构运动分析相结合,完成对连杆和凸轮机构的机构运动分析,及运动仿真。
加强对连杆和凸轮机构的认识与理解。
关键词: 直齿轮、斜齿轮; Pro/E 、Pro/MECHANICA; 运动仿真、有限元AbstractWith the development of technology, computer-aided design technology becomes more widely used in various design.Now, it has broken through the framework of two-dimensional drawings、 electronic、shift tothree-dimensional solid modeling, dynamic simulation and finite element analysis of the main line of the mechanical system dynamic simulation techniques.The major areas of its study kinematics and dynamics of mechanical systems, the core technology is the use of computer-aided kinematics and dynamics of mechanical systems analysis to determine the system and its components at any time of the position, velocity and acceleration at the same time,by solving algebraic equations determine the cause of the required system component moving action and reaction.Dynamic simulation appeared to be widespread concern and attention, and there were many parties = simulation based on dynamic business software, more influential technology companies of U.S. parameters PTC.To Pro / MECHANICA platform for analysis using the finite element method, on the spur gear, helical gear by the force of the actual situation, boundary conditions and applied load were studied.Motion analysis module analyzes institutional interference, tracking the trajectory of parts, parts of bodies in the speed, acceleration, force, reaction force and torque and so on.Motion analysis results of the analysis module to modify parts of the structure could guide design (longer or shorter moment arm length of the component, modify the cam, adjust the gear ratio and center distance, etc.) or adjust the parts of the material (to reduce or add to or increase the hardnessetc.).Design changes can be directly reflected in the assembly of copies of the master model program (Scenario), the re-analysis, Once optimized design, design changes can be directly reflected in the assembly of the main model.The Pro / E three-dimensional solid modeling and Pro / MECHANICA combined kinematic analysis, complete linkage and cam mechanism of the body motion analysis andmotion simulation.Connecting rod and cam mechanism to strengthen knowledge and understanding.Key words: spur gears, helical gears; Pro / E, Pro / MECHANICA; motion simulation, finite element摘要 (1)第一章绪论 (6)1.1、课题来源 (6)1.2、研究目的和意义 (6)1.3、国内外研究现状和发展趋势 (7)1.3.1 我国齿轮工业的概况 (8)1.3.2 中国齿轮工业的资本结构已成为三足鼎立的局面 (8)1.4、本课题的主要研究内容及拟采取的技术路线、试验方案 (8)1.4.1 预期达到的目标 (9)1.4.2 论文的结构 (9)第二章Pro/ENGINEER软件的应用和MECHNICA模块的应用 (10)2.1 PRO/MECHANICA简介 (10)2.1.1 PRO/MECHANICA模块介绍 (10)2.1.2 PRO/MECHANICA的工作模式 (11)2.1.3 使用PRO/MECHANICA的一般步骤 (11)第三章直齿轮与斜齿轮参数化设计造型 (12)3.1齿轮的基本参数、各部分的名称和尺寸关系 (12)3.1.1 直齿圆柱基本参数 (12)3.1.2 斜齿轮基本参数 (15)3.2 渐开线直齿轮参数化造型 (16)3.2.1 直齿轮参数化制作过程如下: (16)3.2.2 渐开线斜齿轮参数化造型 (18)第四章有限元优化设计 (22)4.1 有限元分析方法与原理 (24)4.1.1有限元分析 (24)4.1.2有限元的基本原理和特点 (25)4.1.3有限元网格生成技术 (26)4.1.3 网格划分举例 (27)第五章基于Pro/Mechanism直齿轮啮合、斜齿轮啮合过程中装配与运动仿真 (34)5.1 Pro/M的简介及其主要特性 (34)5.1.1 Pro/M的简介 (34)5.1.2 Pro/M的主要特性 (35)5.2 机构运动仿真的一般过程 (35)5.3 机械系统运动仿真的优越性 (37)5.4 Pro/E装配模块 (37)5.4.1 对于组装时,我们需要把握以下原则: (37)5.4.2 关于直齿轮机构的组装 (38)5.5 基于Pro/Mechanism直齿轮啮合、斜齿轮运动仿真 (40)5.5.1 运动定义及运动分析的一般步骤 (40)5.5.2 空间定轴轮系机构的运动分析 (43)5.5.3 定义齿轮从动连接结构 (43)5.5.4 添加驱动器 (44)5.5.5 运动分析 (44)5.5.6 图形结果分析 (44)第六章直齿轮、斜齿轮的静力学分析 (44)6.1 Pro/MECHANICA有限元分析的基本步骤: (44)6.2 Pro/MECHANICA STRUCTURE基本分析过程 (45)6.3 简单算例 (53)6.3.1 接触算例 (53)总结 (62)致谢 (63)阅读的主要文献、资料 (64)第一章绪论1.1、课题来源以往对于直齿、斜齿圆柱齿轮的三维造型建模很烦琐,但三维造型软件Pro/E突破性的解决了此问题。
基于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,绘制齿轮的基本圆。
基于Pro/E的圆柱直齿轮三维建模与范成模拟[摘要]本文在Pro/e建模平台下,利用参数化建模原理进行了齿轮建模。
介绍了圆柱直齿轮的设计原理,为工程实际中的传动系设计提供了参考。
应用mat lab进行了齿轮范成加工的动态模拟,可以清楚的看到圆柱直齿轮的加工过程。
【关键词】圆柱直齿轮;参数化建模;Pro/E;范成模拟在已有研究成果和经验的前提下,寻求在Pro/E平台下更方便和快捷地构建出任何刀具都能加工出来的齿轮模型的方法。
加以实例分析比较,进行创新,得出正确结论。
精确构建模型为后续的齿轮CAE和CAM等提供精确的三维实体,更好地为仿真、有限分析、虚拟装配和NC加工等打下了良好的基础,并为CAD/CAPP/CAM的集成研究提供可行的方法与经验[1]-[3]。
1、圆柱直齿轮参数化建模PROE 软件问世至今,一直是参数化建模领域的领先者,也是最早进入中国的三维设计软件,是中小企业CAD应用的最佳选择,目前PROE正在转型,向直接建模方向拓展,最新发布的软件名称改为CREO,兼有参数化建模和直接建模功能。
齿轮的渐开线是齿轮建模的关键部分。
能否合理建立齿轮的渐开线也是评价齿轮建模方法的标准。
渐开线的形成原理如下:如图1-1所示,直线tt在基圆上做纯滚动,直线上一定点K在运动的过程中所产生的轨迹就是齿轮的渐开线。
其中,过定点K做基圆的切线,就为齿轮的发生线,在图中表示为直线BK。
在运动的轨迹线上,连接定点K与圆心O,做直线OK的垂线AK, 垂线AK与发生线的夹角就为压力角。
1.1 圆柱直齿轮的参数输入(1)在主菜单上单击“工具”→“参数”,系统弹出“参数”对话框,输入的参数如下表1-1。
在上表可以看出,只有齿轮的齿数、模数、齿宽、压力角、齿顶高系数和顶隙系数为基本的输入变量,其他的参数均可以由这写参数计算获得。
(2)在主菜单上依次单击“工具”→“关系”,系统弹出“关系”对话框,在“关系”对话框内输入齿轮的分度圆直径关系、基圆直径关系、齿根圆直径关系和齿顶圆直径关系。
ProE渐开线标准直齿圆柱齿轮参数化设计摘要:本文阐述了用Pro/E参数关系式设计渐开线齿面的原理及操作过程,推导出了设计渐开线齿面的公式模板,并在此基础上结合标准渐开线齿轮的相关参数用Pro/E完成了整个渐开线标准直齿轮的设计,文中所述标准渐开线直齿轮设计方法简洁,操作过程简单高效,可资同行借鉴。
关键词:渐开线基圆关系式可变截面扫描镜像渐开线齿轮传动由于其定传动比、运动精度高、冲击振动较小等优点被广泛应用于机械传动中。
Pro/E可变截面扫描特征可加入描述渐开线生成规律的关系式,利用此关系式可绘制任一齿数模数的渐开线齿面;在Pro/E中采取恰当的方法很容易满足在分度圆上齿厚与齿槽宽相等这一设计要求,从而精确完整的完成标准渐开线直齿轮的三维模型设计。
1、渐开线的形成原理及其特性当一直线沿半径为的圆作纯滚动时(如图1所示),此直线上任意一点K 的轨迹AK 称为该圆的渐开线,该圆称为基圆,该直线称为发生线,渐开线所对应的中心角称为渐开线AK 段的展角。
渐开线齿面上的截面线到中心线的距离在图1中OK用表示,在图2中用表示,则,设为图1中的弧度值,则在发生线沿基圆作纯滚动形成渐开线齿面的过程中始终存在着如下的数量关系:2、Pro/E渐开线齿面生成原理作渐开线齿轮的关键在于作渐开线齿面,Pro/E用可变截面扫描特征作渐开线齿面。
首先绘制一个圆心角约15°的基圆,(见图5所示基圆,用于限制齿面的扫描的范围),然后选取此基圆弧作为产生渐开线齿面的原始轨迹线,在草绘界面绘制扫描截面线,截面线是平行于齿轮中心线的直线,(也就是图2中剖面初始位置与终止位置的夹角,剖面绕齿轮中心线旋转),在扫描过程度中,随着值逐渐加大,截面线离开中心的距离为(见图1、图2)将按关系式2不断加大,并且此截面线始终位于垂直于基圆的剖面内,部面的旋转角度由所作基圆的圆心角决定,一般15°即可,这样扫描的结果就得到了渐开线齿面。
基于Pro/engineer直齿锥齿轮参数化设计及其二次开发模型库的建立杨纬纬郑维明摘要:详细说明pro/e的CAD模块中,通过对直齿锥齿轮参数化建模的应用详细解读参数化建模的过程,应用族表技术在建立其参数化模型库,并介绍了基于Pro/Program的二次开发平台的直齿锥齿轮参数化模型库的建立。
关键词:Pro/e 参数化设计族表二次开发1引言Pro/E是美国PTC公司开发的CAD/CAE/CAM系统解决方案,其强大的三维处理功能、先进的设计理念和简单实用的操作受到许多设计者推崇。
其CAD辅助设计系统采用参数化设计、基于特征的实体模型化设计系统。
与传统的CAD所建立的几何图素简单堆叠的模型不同,Pro/E的CAD系统建立的模型可以深刻地体现设计者的思想,不但可以真实体验设计产品的可视化模型而且可以适应提高重复型、改进型设计效率以及参数化、信息全相关的要求。
2参数化建模原理及分析参数化设计方法使设计者构造模型时可以集中于概念设计和整体设计,充分发挥创造性,提高设计效率。
其主要思路如图1所示,通过对产品的建模特征的解析,从特征中抽象出特征参数,再对特征参数进行分析,得到参数模型。
根据模型信息建立参数间关联与约束并确定某些参数为设计变量,进而建立由设计变量驱动的零件族。
通过参数化的方法,建立零件,可以方便零件族的实现及其管理操作,可以实现设计中大量重复、改进型设计的效率提高。
参数化设计对于形状大致相似的一系列零部件,只需修改相关参数,便可生成新的零部件,从而大大提高设计效率。
零件族由一个模板和用来驱动模板的表格组成,模板含有生成零件族成员的全部特征,族表反映模板设计变量值、表达式关系及零件属性等的更改。
零件族成员是一系列结构相似的零件,对模板的修改将自动更新零件族的所有成员。
在Pro/E中建立的零件族实现方法主要有两种:(1)族表。
先建立一个通用零件为父零件,然后在其基础上对各参数(如尺寸,特征参数,组件等)加以控制,生成派生零件;(2)程序建模。
论述基于PRO/E的圆柱齿轮参数化设计1 设计基本方法直齿圆柱齿轮是一种较为复杂的机械零件,它的一些基本参数,如模数、齿数、压力角、齿顶高系数、顶隙系数,变位系数、齿宽等。
另外通过这些基本的参数也可以计算齿轮的其他参数,如齿顶圆、齿根圆、分度圆、基圆等。
而这些基本参数经常变化的参数也只有模数、齿数、齿宽和变位系数,其它参数压力角、齿顶高系数和顶隙系数一般是不变化的,所以我们这里将模数、齿数、齿宽和变位系数定义为关键参数。
设计齿轮的基本方法为:(1)建立关键参数和基本参数;(2)建立模型和定义关系;(3)验证关键参数;(4)调用齿轮。
2 具体创建过程2.1 建立关键参数和基本参数首先新建文件并在工具-程序中编辑设计中的INPUT和END INPUT加入如下语句:M number "输入直齿轮的模数M:"Z number "输入直齿轮的齿数Z:"X number "输入直齿轮的变位系数X:"B number "输入直齿轮的齿轮宽度B:"这样用程序的方式定义了四个关键参数,并保存文件,输入初始值,在参数对话框中创建好齿轮的一些基本参数:压力角、齿顶高系数、顶隙系数等,同时我们也可以看到四个关键参数,具体设计见表1。
2.2 建立模型和定义关系(1)创建齿轮的基本圆。
用草绘曲线的方法,选择“FRONT”面作为草绘平面,选取“RIGHT”面作为参考平面,参考方向为向“左”,从里到外创建齿轮的四个基本圆:齿根圆(SD0)、基圆(SD1)、分度圆(SD2)、齿顶圆(SD3),并且用设置好的参数在关系功能对话框中控制齿轮四个基本圆的大小关系。
SD3=M*Z+2*(HAX+X)*MSD2=M*ZSD1=M*Z*COS(ALPHA)SD0=M*Z-2*(HAX+CX-X)*M选择菜单“编辑-再生”,以当前值再生图形,并完成基本圆草图的建立。
基于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。