基于ProE二次开发的端盖参数化模型的实现_第1页
基于ProE二次开发的端盖参数化模型的实现_第2页
基于ProE二次开发的端盖参数化模型的实现_第3页
基于ProE二次开发的端盖参数化模型的实现_第4页
基于ProE二次开发的端盖参数化模型的实现_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于Pro/E二次开发的端盖参数化模型【摘要】 : CAD技术在机械设计中发挥着越来越重要的作用。 3D实体模型比2D图形更直观、更全面地反映设计意图,在3D模型的基础上,可以进行零件装配、干涉检查、有限元分析、运动分析等高级计算机辅助设计工作。执行。三维设计广泛用于机械设计。目前,Pro/E在国内的应用越来越普及,二次开发严重滞后。因此,二次开发是非常必要的。由于某些原因,未上传完整的毕业设计(完整的应包括毕业设计说明书、相关图纸CAD/PROE、中英文文献及翻译等),本文档也略删了部分内容(目录及部分重点内容) 需要的朋友请联系我的敲键:2215891151介绍了其二次开发工具Pro/TO

2、OLKIT ,并以法兰端盖为例,详细讨论了Pro / Toolkit在开发菜单和对话框即UI对话框中的应用,以及如何在VC+环境下编译。 C语言程序激活和调用对话框界面,设计了更加友好透明的用户界面,方便快捷地实现端盖的参数化设计和修改,准确再现了新的实体模型。关键词: Pro/ENGINEER、Visual C+、 HYPERLINK javascript:GJCSearch(Pro/TOOLKIT); Pro/TOOLKIT 、 HYPERLINK javascript:GJCSearch(二次开发); 二次开发、端盖第一章绪论1.1三维CAD技术随着计算机的快速发展,设计和生产方法每天都

3、在发生巨大变化。许多以前只能手工完成的任务,通过计算机逐渐变得更加高效和精确。这种利用计算机实现高效率、高精度,实现设计、生产和分析计算的自动化的方法,称为CAD(Computer Aided Design,计算机辅助设计)。 CAD是指使用计算机硬件和软件的设计活动。从根本上改变了以往手工绘制、出图、组织生产全过程的技术管理方式,以统一的产品数据库为核心。交互式产品设计、分析、制造和维护过程。它的快速发展和广泛应用为工程设计制造行业带来了生机,对传统的产品设计方法和生产组织模式产生了深刻的改变。1.1.1CAD技术的发展CAD 技术始于 1950 年代后期。自计算机问世以来,人们不断地将计算

4、机技术引入机械设计和制造领域。因为它顺应了生产力的发展,所以出现后发展迅速。 CAD技术经历了四大飞跃:曲面造型系统、实体造型技术、参数化技术、变量化技术。(1) 曲面造型系统1970 年代是飞机和汽车工业的蓬勃发展时期。在此期间,飞机和汽车的制造中遇到了大量的自由曲面问题。这时,法国人提出了贝塞尔算法。法国达索飞机制造公司的开发者使用该算法,在二维绘图系统的基础上开发了该算法。开发了一种以曲面模型为特征的自由曲面建模方法,并介绍了三维曲面建模系统CATIA。(2) 实体造型技术曲面模型基本解决了CAM的问题,但由于曲面模型技术只能表达物体的曲面信息,难以准确表达零件的质量、重心、转动惯量等其

5、他特性上。在探索CAD集成技术发展的基础上,1979年,国家发展研究中心发布了世界上第一个完全基于实体造型技术的大型CAD软件I-DEAS。给设计带来极大的方便。(3) 参数化技术当实体建模技术在CAD系统中得到广泛应用时,出现了一种比无约束自由建模更好的算法参数化实体建模方法。其主要特点是:基于特征、全尺寸约束、全数据关联和尺寸驱动的设计修改。参数化技术彻底克服了自由和沉默的无约束状态,以尺寸决定实体造型的几何形状。尺寸驱动已成为当今造型系统的基本特征。如果要修改零件的形状,只需要修改size的值就可以改变形状。这个新想法首先在 PTC(参数技术公司)的软件 PRO/ENGINEER 中成为

6、现实。由于参数化技术的成功应用,它迅速成为CAD行业的标准,许多软件厂商都在追赶。(4) 可变技术变量建模技术保留了参数化技术基于特征、全数据关联、尺寸驱动设计修改的优点,但在约束的定义上做了一定的改变。变分建模技术将需要定义的尺寸“参数”进一步区分为形状约束和尺寸约束,而不是仅仅用尺寸约束整个几何。通常在新产品开发的概念设计阶段,设计师首先考虑设计思想和概念,并将其体现在一定的几何形状中。但这些几何形状严格的尺寸定位关系在设计初期并不能完全确定,因此希望在设计初期就内容存在欠维约束。事实上,参数化技术和可变技术已经成为当今主流CAD软件的两大流派。两种建模理论相互依存,共同发展。我国引进CA

7、D技术是从1960年代开始的,首先是从航空业开始的。近年来发展迅速,在机械、电子、建筑、汽车、服装等行业逐渐进入实用阶段。1.2项目背景及意义Pro/ENGINEER是美国PTC ( Parametric Technology Corporation)于1988年开发的参数化设计系统,是一套从设计到生产的机械自动化软件。参数化设计是用参数来描述零件尺寸的设计,在修改设计时通过修改参数的值来改变零件的形状。 Pro/ENGINEER与仅提供绘图工具的传统CAD系统有很大不同。提供一整套机械产品解决方案,包括机械设计、钣金设计、机械加工制造、机理分析、有限元分析等,大大提高了产品的设计效率,使产品

8、在前期更加灵活设计,并保证未来根据系统要求进行相应的更改和计算;在产品的生产阶段可以方便地与加工中心进行数据连接。Pro/ENGINEER如下: 3D实体模型、单一数据库、以特征为设计单元、参数化设计、数据管理(Data Management) 、装配管理(Assemble Management) 、工程数据库重用(Engineering Data Reuse) 、易用性(EaseofUse ) ) 、硬件独立(Hardware Independence ) 。由于Pro/ENGINEER功能强大且具有通用性,但是由于Pro/ENGINEER软件的通用性,不方便进行具体的产品设计。对于系列化产

9、品,可以通过提取关键参数值,根据设计规则计算尺寸值,并将其传递给下级零件和子组件来自动构建模型。为了使Pro/ENGINEER软件能够最大限度地发挥其潜力并在特定企业单元的特定产品设计中创造效益,需要重新开发Pro/ENGINEER 。也就是说,二次开发是为了进一步丰富Pro/ENGINEER。 ,完全的。由于以上原因,有必要使用Pro/TOOLKIT工具箱和VC +开发一个简单的端盖。1.3 应用开发工具系统程序模块的设计选择Visual C+6.0作为开发平台。 Visual C+6.0是运行在Windows上的交互式可视化集成开发环境,是美国微软Visual Studio的一部分。与其他

10、可视化开发环境一样,Visual C+ 6.0集程序代码编辑、编译、连接和调试于一体,为程序员提供了完整便捷的开发界面和众多有效的辅助开发工具。 VC+6.0的应用程序向导(App Wizard)可以为大部分类型的程序提供框架代码,用户不需要编写代码,只需几个按钮就可以生成一个完整的可以运行的程序。在Pro/TOOLKIT中, PTC为用户提供了大量的C语言函数库,函数采用面向对象的风格。通过调用这些底层函数,用户可以方便、安全地访问Pro/ENGINEER数据库和部门应用程序,进行二次开发,扩展一些特定的功能。本课题主要研究内容本课题的主要研究内容是端盖的开发与设计。用户选择不同的款式后,应

11、用程序可以在基本款上自动生成相应的端盖。具体工作包括:(1) Pro/TOOLKIT的基本特性和基本数据结构研究。分析Pro/TOOLKIT的基本数据结构、功能及用法;讨论 Pro/TOOLKIT 中一些基本的自定义对象。(2) 用户界面设计。研究菜单信息文件,制作端盖的菜单界面;研究对话框资源文件,创建主对话框,在主对话框中弹出自定义对话框;研究Pro/TOOLKIT与Visual C+6.0的接口技术;在 VC 中制作 Pro/TOOLKIT 用户界面。(3)参数化建模研究。 Pro/ENGINEER软件对每个模型都有一个主要的设计步骤和参数列表,所以需要先绘制3D模型,并确定参数列表;修

12、改端盖模型参数值,生成零件等功能。第二章Pro/TOOLKIT二次开发基础理论2.1 Pro/TOOLKIT的基础知识2.1.1 Pro/TOOLKIT简介Pro/TOOLKIT是PTC为Pro/ENGINEER 软件提供的定制开发工具箱。该工具箱为用户程序和第三方程序提供与 Pro/ENGINEER 的无缝连接。用户程序或第三方程序是用C语言编写的。 Pro/TOOLKIT提供C 语言的函数库,使用户或第三方应用程序能够以受控和安全的方式访问 Pro/ENGINEER 数据库和应用程序。用户或第三方可以通过C程序代码扩展Pro/ENGINEER系统的功能,开发基于Pro/ENGINEER系统

13、的应用模块,以满足用户的特殊要求。 Pro/TOOLKIT是以强大的面向对象的方式编写的。因此,用于在Pro/ENGINEER和应用程序之间传递信息的数据结构对应用程序是不可见的,而只能通过Pro/TOOLKIT中的函数访问。 Pro/Toolkit支持在windows2000NT/XP操作系统下使用C和C+语言设计程序,在Microsoft Visual C+ 6.0集成环境下完成程序设计、调试和编译。2.1.2 Pro/TOOLKIT的工作模式Pro/TOOLKIT有两种工作模式,即同步模式和异步模式。同步模式分为两种模式,一种是标准使用模式,即DLL模式。 Pro/TOOLKIT应用程序

14、与Pro/ENGINEER的集成是通过 DLL 模式实现的。在 DLL 模式下,通过编译和链接Pro/TOOLKIT的 C 代码,生成一个目标文件,该文件在 Pro/ENGINEER启动时与 Pro集成。 /ENGINEER链接在一起,就像Pro/ENGINEER本身的程序一样; Pro/TOOLKIT应用程序和Pro/ENGINEER之间的信息交换是直接通过函数调用来实现的。另一种模式是多进程模式。异步模式分为简单异步模式和完全异步模式。通过菜单对话框向Pro/ENGINEER致消息,采用同步 DLL 模式。2.1.3 Pro/TOOLKIT对象和动作Pro/TOOLKIT采用面向对象的编程

15、方法。对象和动作是Pro/TOOLKIT 中最基本的概念。Pro /T OO LKIT本质上是一种结构类型的数据,结构中的成员描述了对象的属性。所有对象的命名约定为Pro+ ,其中对象名用英文单词表示,首字母大写,如ProFeature( feature object ) 。执行的特定操作称为动作,动作的执行是通过调用Pro/TOOLKIT函数库提供的C函数来实现的。与动作相关的Pro/TOOLKIT函数名称约定是:Pro+ 。需要特别注意Pro/TOOLKIT函数的参数规则,指定为:Pro Function (参数1,参数2 ,参数3) ,其中第一个参数用于标识对象(通常是ID值) , 输入

16、参数在输出参数之前。2.1.4对象句柄每个Pro/TOOLKIT对象对应一个结构,定义结构类型的特定结构变量称为对象句柄。根据对象句柄的定义和用法分为两种:Ohandle(OpaqueHandle ,非透明句柄)和DHandle(DatabaseHandle,数据结构句柄) 。句柄(OpaqueHandle)是使用Pro/ENGINEER数据结构的存储地址来引用Pro/ENGINEER对象,这是最简单的方法。使用非透明句柄的Pro/TOOLKIT应用程序只能获取对象的存储地址,而不能访问结构的特定成员。目的是防止PIDITOOLKIT应用程序访问结构的成员。它的特点是使用简单高效,缺点是它是可

17、变的,因为它是一个存储指针。数据结构句柄(DatabaseH andle)可以访问对象结构的特定成员。数据结构句柄是一个非常清晰的数据结构,它包含了足够多的信息包括类型、整数标识符和它所属模型的句柄。由于数据结构句柄包含至少一个整数标识符,因此具有稳定不变的优势。当使用Pro/TOOLKIT在Pro/ENGINEER中创建包含大量信息的对象时,必须先建立与该对象有关的所有相关信息,然后将该对象添加到Pro/ENGINEER数据库中,这一点非常重要。但是,使用面向对象技术的Pro/TOOLKIT不内容直接访问这些结构的内容。2.1.5 Pro/TOOLKIT函数返回值大多数Pro/TOOLKIT

18、函数是 ProError,用于指示调用函数的执行状态。最常用的返回值是PRO_TK_NO_ERROR,表示函数调用成功。在程序中,检查函数的返回值不仅在调试时容易发现错误,更重要的是可以避免执行过程中出现异常情况,提高程序的可靠性。2.2 创建Pro/TOOLKIT应用程序的基本方法创建基本方法;使用 Make 文件创建Pro/TOOLKIT应用程序;使用 VC 向导创建Pro/TOOLKIT应用程序。Pro/TOOLKIT应用程序采用Make文件方式,必须手动修改make文件,不方便设置和调试程序,也不能充分利用VC资源。所以本课题使用VC 向导来创建Pro/TOOLKIT应用程序。在 Vi

19、sual C+6.0 环境中新建一个 dll 项目。(1) 进入Visual C+6.0集成开发环境,选择“File/New. ”选项,启动“New ”对话框。在“新建”对话框中,选择“项目”选项卡并选择 MFC AppWizard (dll) 项。在“项目名称”中输入项目文件名,在“位置”输入框中输入路径。单击确定按钮。(2) 在“MFC AppWizard”对话框中,选择“Regular DLL using shared MFC DLL”单选框,使 Pro/TOOLKIT 应用程序使用共享 MFC。点击Finish按钮,进入New Project Information窗口后,点击OK按钮

20、,完成工程文件框架的建立。(3)选择FileView,打开VC应用程序向导,自动生成程序文件。VC 应用程序设计向导会自动在 FileView 中添加 ReadMe.txt、StdAfx.cpp 和以项目文件名为前缀的 cpp 资源文件、def 模块定义文件和 rc 资源文件。如下图2.1所示:图2.1 VC文件示意图2.3 Pro/TOOLKIT信息文件的创建信息文件是用于定义菜单项、菜单项提示等信息的ASCII码文件,可以用Word记事本、写字板等文字处理软件创建,也可以在VC的集成开发环境中创建,但必须是纯文本。格式和信息文件以四个为一组进行分组。它们的含义如下:Pro/ENGINEER

21、系统可以识别的关键字,关键字必须与信息文件函数中的相关字符串一致。第二行:菜单项或菜单项提示上显示的英文文本。第三行:翻译成另一种语言或为空。第四行:当前Pro/ENGINEER版本为空。其中,第二行和第四行的语言显示取决于系统环境变量lang的设置。同时,信息文件必须位于 text 或 text 文件夹中。 为chinese-cn时,信息为中文,如果为usascii,信息为英文。因此,可以通过系统的环境变量来控制显示的语言,而无需修改程序。2.4 编译和链接设置设置包含文件路径,添加“PROTOOLKITINCLUDES”;设置库文件路径,添加“PROTOOLKITI486_NTOBJ”;设

22、置连接所需的库文件,添加“mpr.lib protk_dll.lib”两个库文件;在菜单“Project/Settings”的“Link”选项页面设置强制文件输出,即选择“Force file output”选项。2.5 编译注册文件并运行应用程序2.5.1 准备注册文件运行Pro/TOOLKIT应用程序,您必须先注册它。注册文件的作用是将应用程序信息传输到Pro/ENGINEER 系统。一般只能选择 Name EXEC_FILE TEXT_DIR STARTUP ALLOW_STOP REVISION 和 END。保存注册文件时,使用扩展名 .dat。建立端盖的注册文件如图2.2所示:图 2

23、.2 端盖注册文件示意图2.5.2 运行应用程序1 注册操作分为自动注册和手动注册。端盖采用自动注册,注册文件名为“Protk.dat”。该文件位于由Pro/ENGINEER 的起始位置设置的目录中。它的注册文件将 DELAY_START 的值设置为 FALSE,并且应用程序自动运行。2卸载应用程序。将注册文件中的 ALLOW_STOP 设置为 TRUE 以手动终止操作。如果应用程序启动失败,您可以选择信息按钮以显示有关应用程序注册的信息,以便您找出错误原因。第三章用户界面设计Pro/ENGINEER可以利用Pro/TOOLKIT提供的菜单UI对话框和VC的可视化界面技术,设计出方便实用的人机

24、交互界面,从而大大提高系统的效率。在设计人机界面时,尽量使操作自然、简单、快捷。3.1 菜单设计菜单是Pro/ENGINEER 的主要用户界面。 Pro/TOOLKIT提供了一系列菜单操作功能,内容应用程序创建和管理菜单。在使用Pro/TOOLKIT 开发Pro/ENGINEER 的过程中,添加自定义菜单是最常用的技术。 Pro/ENGINEER界面上菜单的生成代表动态库加载成功,是后续工作的基础。3.1.1 向菜单栏添加菜单栏Pro/ENGINEER是一个不断开发和更新的软件。一个版本中的某些菜单在另一个版本中可能不可用。因此,如果用户自定义的菜单依赖于某个菜单栏,则很有可能在其他版本中无法

25、使用。正常使用。这样,只能修改应用程序以适应这种变化,其软件的通用性较差。因此,决定在Pro/ENGINEER界面中添加一个新的菜单栏。Pro/ENGINEER 菜单系统的顶级菜单。它是通过直接调用 ProMenubarMenuAdd() 函数将所需菜单添加到 Pro/ENGINEER 来创建的。要实现该功能的功能,必须将按钮和命令捆绑在 Pro/ENGINEER 中。一起。该命令调用一个函数来实现按钮功能。在Pro/TOOLKIT中,完成命令添加的函数是 ProCmdAction(),函数调用成功返回 PRO_TK_NO_ERROR(0),否则返回 PRO_TK_GENERAL_ERROR(

26、-1)。3.1.2 向菜单栏添加子菜单端盖分为嵌入式盖、嵌入式通盖、法兰盖和法兰通盖,不可能为每个创建一个菜单栏。因此,必须增加子菜单,以达到建立自然便捷界面的目的。调用ProMenubarmenuMenuAdd ()函数,在该菜单下添加菜单项。3.1.3端盖菜单设计插入一个菜单栏( UserMenu ),并在其下添加一个子菜单( SubMenu )“End Cap”。在子菜单下创建四个菜单按钮: PushButton1嵌入封面, PushButton2嵌入透明封面, PushButton3 有翻边封面, PushButton4 有翻边透明封面。创建的程序列表如下:/*= = =*功能:用户初

27、始化()*= = =*/extern C int user_initialize()ProError 状态;ProFileName MsgFile;uiCmdCmdIdPushButton_cmd_id1,PushButton_cmd_id2,PushButton_cmd_id3,PushButton_cmd_id4;ProStringToWstring(MsgFile, Message.txt);/设置菜单消息文件名/*= = =*添加菜单栏*= = =*/status=ProMenubarMenuAdd (UserMenuBar, UserMenu,“实用程序”,PRO_B_TRUE,Ms

28、gFile);/*= = =*菜单栏的子菜单设置*= = =*/添加子菜单项ProMenubarmenuMenuAdd(UserMenuBar, SubMenu, SubMenu,NULL,PRO_B_TRUE,MsgFile);/设置菜单按钮的动作功能ProCmdActionAdd(PushButtonAct1,(uiCmdCmdActFn)Duangai1Fn,uiCmdPrioDefault,AccessAvailable,PRO_B_TRUE,PRO_B_TRUE,&PushButton_cmd_id1);/添加菜单按钮ProMenubarmenuPushbuttonAdd(SubMe

29、nu, PushButton1, PushButton1,向 ProE 菜单栏添加按钮, NULL,PRO_B_TRUE, PushButton_cmd_id1, MsgFile);/设置菜单按钮的动作功能ProCmdActionAdd(PushButtonAct2,(uiCmdCmdActFn)Duangai2Fn,uiCmdPrioDefault,AccessAvailable,PRO_B_TRUE,PRO_B_TRUE,&PushButton_cmd_id2);/添加菜单按钮ProMenubarmenuPushbuttonAdd(SubMenu,PushButton2,PushButto

30、n2,向 ProE 菜单栏添加另一个按钮,NULL,PRO_B_TRUE, PushButton_cmd_id2, MsgFile);/设置菜单按钮的动作功能ProCmdActionAdd(PushButtonAct3,(uiCmdCmdActFn)Duangai3Fn,uiCmdPrioDefault,AccessAvailable,PRO_B_TRUE,PRO_B_TRUE,&PushButton_cmd_id3);/添加菜单按钮ProMenubarmenuPushbuttonAdd(SubMenu,PushButton3,PushButton3,将第三个按钮添加到 ProE 菜单栏,NU

31、LL,PRO_B_TRUE, PushButton_cmd_id3, MsgFile);/设置菜单按钮的动作功能ProCmdActionAdd(PushButtonAct4,(uiCmdCmdActFn)Duangai4Fn,uiCmdPrioDefault,AccessAvailable,PRO_B_TRUE,PRO_B_TRUE,&PushButton_cmd_id4);/添加菜单按钮ProMenubarmenuPushbuttonAdd(SubMenu,PushButton4, PushButton4,将第四个按钮添加到 ProE 菜单栏, NULL,PRO_B_TRUE, PushBu

32、tton_cmd_id4, MsgFile);返回状态;/*= = =*功能:用户终止()*= = =*/外部“C”无效用户终止()AFX_MANAGE_STATE(AfxGetStaticModuleState();/*= = =*FUNCTION:AccessAvailable(菜单项的访问权限设置:可选)*= = =*/静态 uiCmdAccessState AccessAvailable (uiCmdAccessMode access_mode)返回(ACCESS_AVAILABLE);建立端盖的菜单信息文件(中文版)如下:子菜单子菜单端盖#按钮1按钮1嵌入式盖板#向 ProE 菜单栏

33、添加按钮向 ProE 菜单栏添加按钮嵌合封口#按钮2按钮2插图透明度#向 ProE 菜单栏添加另一个按钮向 ProE 菜单栏添加另一个按钮插图透明度#按钮3按钮3凸边#将第三个按钮添加到 ProE 菜单栏将第三个按钮添加到 ProE 菜单栏凸边#按钮4按钮4凸边#将第四个按钮添加到 ProE 菜单栏将第四个按钮添加到 ProE 菜单栏法兰通过盖#创建如图 3.1 所示的端盖菜单:图 3.1 模型菜单图3.2 对话框的设计弹出对话框是目前最先进、最流行的人机交互方式。它可以提供图文并存的视觉环境,使操作更自然、更快捷。在设计Pro/TOOLKIT程序时,创建对话框有两种方式,一种是通过VC提供的

34、MFC可视化对话框设计技术,另一种是通过Pro/TOOLKIT提供的User Interface Dialog Boxes。 ,称为 UI 对话框)。3.2.1 MFC 对话框MFC是VC+程序的重要软件资源,为Windows应用程序的开发提供了强有力的支持。使用MFC可以实现程序界面的可视化设计。 MFC对话框作为一种窗口,具有窗口的所有功能。与UI对话框相比,MFC对话框界面布局更易于使用,更易于设计和调试。但它建立的对话框与Pro/ENGINEER的风格不同,不利于用户的操作。3.2.2 用户界面对话框利用UI对话框技术,可以在Pro/TOOLKIT应用程序中设计出与Pro/ENGINE

35、ER系统中对话框风格相似的人机交互界面。控制程序用C或C+语言编写,用于在Pro/ENGINEER环境中加载对话框资源、显示对话框、设置动作和退出对话框。 UI对话框的设计主要涉及两个方面:一是根据界面布局编写资源文件;另一种是为UI对话框的功能编写相应的控制程序。1.资源文件资源文件是定义和描述 UI 对话框的外观和属性的文本文件。主要包括UI对话框(组件)或控件的组件,各个组件的属性定义和组件的布局。编写资源文件时,应注意以下几点:(1)区分大小写; (2) 括号必须成对; (3) 对话框名称应与资源文件名相同; (4)“! ”后面的内容是注释部分,对对话框的定义没有影响; (5) 资源文

36、件可以用任何支持纯文本格式的文字处理软件,如Word、写字板或记事本,也可以用VC应用程序编程向导编写。无论使用哪种方法,都必须以纯文本格式保存,扩展名为 .res。将其保存在工作目录中创建的 VC 程序的 Release/text/resource 子目录中。其中 取决于当前使用的语言(chinese_cn 或 usascii)。资源文件的结构如下:(对话(组件.)(资源.)Dialog是顶层语句,下面主要由两部分组成。组件部分(Components)声明了对话框的所有组件,资源部分(Resource)分为定义每个组件的属性和布局。资源文件只是 UI 对话框的描述,它必须由 Pro/TOOL

37、KIT 应用程序加载、显示和控制。它分为两部分:创建和终止。创建对话框的过程如下:(1)调用ProUIDialogCreate()函数加载资源文件;(2)调用对话框部分的动作函数,设置指定组件的动作函数;(3)调用ProUIDialogActivate()函数显示并激活对话框;(4)调用ProUIDialogDestroy()函数清除对话框资源。这四个步骤是创建 UI 对话框的最基本步骤。第二步可以实现数据调用。其动作设置功能与元素类型有关。其主要目的是设置用户在对话框界面上操作某个元素时调用的动作函数。完成这四个步骤后,可以通过调用 ProUIDialogExit() 函数来终止 UI 对话

38、框。3.3 端盖对话框设计3.3.1 构想1. 在主对话框中添加以下组件。(1)Label1和Label1.1标签用于提示图形。 Lable1的图形显示部分图形,直接从3D模型中获取。 Label1.1 显示了设计参数与尺寸的对应关系。图形直接从3D模型中获得。在图形软件中添加尺寸线和参数名称后,转换为UI对话框支持的GIF格式(保存在资源子目录中)。 Label1 的图形命名为 Duangai3.gif,Label1.1 的图形命名为 Duangai3_1.gif。(2)Label2标签,用于显示参数名称,命名规则为:设计参数名称_标签。(3) 分隔分隔符(4) PushButton1 按钮

39、,用于生成模型。(5) PushButton2 按钮,用于退出对话框。(6) 自定义对话框设计的 PushButton3 按钮。(7) InputPanel输入框,用来表示参数值,命名规则为:设计参数名_Value。其中两个按钮通过分隔线与其他按钮分开。2. 在自定义对话框中添加以下组件。(1)Label1.1与主对话框的设置相同。(2)Label2标签,用于显示参数名称,命名规则为:设计参数名称_标签。(3) 分隔分隔符(4) PushButton1 按钮,用于生成模型。(5) PushButton2 按钮,用于退出对话框。(6) InputPanel输入框用于表示参数值。命名规则为:设计参

40、数名称_Value。3.3.2 创建方法创建方法是:编写一个资源文件,文件扩展名为.res,以纯文本格式保存在注册文件中TEXT_DIR字段指定的目录下的子目录resource中。调用ProUIDialogCreate ()函数将资源文件加载到存储中;调用ProUIPushbuttonActivateActionSet ()函数设置按钮动作;调用ProUIDialogActivate () 函数显示和激活对话框;调用ProUIDialogDestroy () 函数从存储中清除对话资源;调用ParamsList()显示模型的设计参数;调用ParamGetAndShow()从零件模型中获取参数值并

41、显示在相应的输入框中;调用 ParamUpdate() 来更新参数值。创建一个函数原型为:ProError ProUIDialogCreate (char*dialog_namechar*资源)ProErrorProUIDialogActivate (char*dialog_name诠释*状态)ProErrorProUIDialogDestroy (char* dialog_name )3 End Cap 资源文件以法兰盖为例,主框架资源文件如下:!资源文件:Duangai3.res(对话 Duangai3(组件!对话框组件声明(标签图像1)(标签图像2)(子布局布局1)(分隔符分隔符 1)(

42、按钮更新 3)(按钮取消))(资源!对话框资源(属性定义)(Image1.Bitmap Duangai3.1.gif) !零件尺寸与参数对应图(Image1.TopOffset10)(Image1.LeftOffset4)(Image1.RightOffset2)(Image2.Bitmap Duangai3.gif) ! 3D 零件图(Image2.TopOffset 4)(Image2.BottomOffset 8)(Image2.LeftOffset 4)(Image2.RightOffset 4)(Update3.Label &Generate Model)!生成模型按钮(Update

43、3.Bitmap cl_ok)(Update3.TopOffset 4)(Update3.BottomOffset 8)(Update3.LeftOffset 4)(Update3.RightOffset 4)!取消按钮属性定义(Cancel.Label &Exit)(Cancel.Bitmap cl_cancel)(Cancel.TopOffset 4)(Cancel.BottomOffset 8)(取消。LeftOffset 4)(Cancel.RightOffset 4)(Separator1.TopOffset 4)(Separator1.BottomOffset 4)(.Label

44、End Cap Parametric Design) !对话框标题(.StartLocation 5)(.Resizeable 0)(.Layout!阵列元件的布局(网格(行 1 1 1)(列 1)(网格(行 1)(列 1 1)图片1(网格(行 1 1)(列 1)布局1图片2)分隔符1(网格(行 1)(列 1 1)更新3取消)(布局布局1(成分(标签D_标签)(OptionMenuD_Value)(标签DA_标签)(OptionMenuDA_Value)(标签DB_标签)(OptionMenuDB_Value)(LabelDC_Label)(OptionMenuDC_Value)(标签SD_标

45、签)(OptionMenuSD_Value)(标签SB_标签)(OptionMenuSB_Value)(标签R_标签)(OptionMenuR_Value)(标签B_标签)(OptionMenuB_Value)(标签用户定义3_值)(按钮用户定义3))(资源(Userdefined3.Label 自定义)(Userdefined3.TopOffset 4)(Userdefined3.BottomOffset 8)(Userdefined3.LeftOffset 4)(Userdefined3.RightOffset 4)(D_Label.AttachLeft 真)(D_Label.LeftOf

46、fset 4)(D_Label.标签“D”)(DA_Label.AttachLeft 真)(DA_Label.LeftOffset 4)(DA_Label.标签“DA”)(DB_Label.AttachLeft 真)(DB_Label.LeftOffset 4)(DB_Label.标签“DB”)(DC_Label.AttachLeft 真)(DC_Label.LeftOffset 4)(DC_Label.标签“DC”)(SD_Label.AttachLeft 真)(SD_Label.LeftOffset 4)(SD_Label.标签“SD”)(SB_Label.AttachLeft 真)(SB

47、_Label.LeftOffset 4)(SB_Label.标签“SB”)(R_Label.AttachLeft 真)(R_Label.LeftOffset 4)(R_Label.标签“R”)(Userdefined3_Value.Label 自定义参数)(D_Value.AttachLeftTrue)(D_Value.TopOffset4)(D_Value.BottomOffset4)(D_Value.LeftOffset2)(D_Value.RightOffset4)(D_Value.Columns4)(D_Value.Namesn1“n2”“n3”“n4”“n5”“n6”“n7”“n8”

48、“n9”“n10”)(D_Value.Labels 72 ! 列表框的输入值“80”“85”“90”“100”“110”“120”“125”“130”“140”)(DA_Value.AttachLeftTrue)(DA_Value.TopOffset4)(DA_Value.BottomOffset4)(DA_Value.LeftOffset2)(DA_Value.RightOffset4)(DA_Value.Columns4)(DA_Value.Names “n11”“n12”“n13”“n14”“n15”“n16”“n17”“n18”“n19”“n20”)(DA_Value.Labels 1

49、00 ! 列表框的输入值“110”“115”“120”“125”“145”“150”“155”“160”“185”)(DB_Value.AttachLeftTrue)(DB_Value.TopOffset4)(DB_Value.BottomOffset4)(DB_Value.LeftOffset2)(DB_Value.RightOffset4)(DB_Value.Columns4)(DB_Value.Names n21 ! 列表框的输入值“n22”“n23”“n24”“n25”“n26”“n27”“n28”“n29”“n30”)(DB_Value.Labels 120 ! 列表框的输入值“13

50、0”“135”“145”“150”“170”“175”“180”“185”“220”)(DC_Value.AttachLeftTrue)(DC_Value.TopOffset4)(DC_Value.BottomOffset4)(DC_Value.LeftOffset2)(DC_Value.RightOffset4)(DC_Value.Columns4)(DC_Value.Names n31“n32”“n33”“n34”“n35”“n36”“n37”“n38”“n39”“n40”)(DC_Value.Labels 60 ! 列表框的输入值“65”“70”“75”“85”“95”“105”“110

51、”“115”“120”)(SD_Value.AttachLeftTrue)(SD_Value.TopOffset4)(SD_Value.BottomOffset4)(SD_Value.LeftOffset2)(SD_Value.RightOffset4)(SD_Value.Columns4)(SD_Value.Names “n41”“n42”“n43”)(SD_Value.Labels 11 ! 列表框的输入值“12”“13”)(SB_Value.AttachLeft -真)(SB_Value.TopOffset4)(SB_Value.BottomOffset4)(SB_Value.LeftO

52、ffset2)(SB_Value.RightOffset4)(SB_Value.Columns4)(SB_Value.Names “n44”“n45”)(SB_Value.Labels 6 ! 列表框的输入值“7”)(R_Value.AttachLeftTrue)(R_Value.TopOffset 4)(R_Value.BottomOffset4)(R_Value.LeftOffset2)(R_Value.RightOffset4)(R_Value.Columns4)(R_Value.Names n46“n47”)(R_Value.Labels 5 !列表框的输入值4)(B_Value.At

53、tachLeftTrue)(B_Value.TopOffset4)(B_Value.BottomOffset4)(B_Value.LeftOffset 2)(B_Value.RightOffset4)(B_Value.Columns4)(B_Value.Names n56“n57”)(B_Value.Labels 15 ! 列表框的输入值“25”)(.装饰真)(.Label“设计参数”)(.TopOffset 4)(.BottomOffset 2)(.LeftOffset 4)(.RightOffset 4)(.Layout ! 列表框的布局格式(网格(行 1 1 1 1)(列 1)(网格(行

54、 1)(列 1 1 1 1)D_标签D_ValueDA_标签DA_Value)(网格(行 1)(列 1 1 1 1)DB_标签DB_ValueDC_标签DC_Value)(网格(行 1)(列 1 1 1 1)SD_标签SD_ValueSB_标签SB_Value)(网格(行 1)(列 1 1 1 1)R_标签R_Value用户定义 3_Value用户定义3)创建的法兰盖对话框如下图 3.3 所示:图 3.3 (a) 主对话框图 3.3 (b) 自定义对话框第 4 章端盖的开发4.1 总体规划为了方便用户使用,建议在Pro/ENGINEER的主菜单上增加一个菜单栏,然后根据零件的形式添加子菜单,在

55、子菜单中分别添加菜单按钮。点击菜单按钮,弹出相应的用户界面,输入主要参数,生成所需零件。具体结构如图所示。采用三维模型与程序控制相结合。 3D 模型不是按程序创建的,而是以交互方式生成的。在创建的零件3D模型的基础上,根据零件的设计要求,建立一套可以完全控制3D模型形状和尺寸的设计参数。参数化程序对零件的设计参数进行编程,实现对设计参数的检索和修改以及根据新的参数值生成新的3D模型的功能。流程如图4.1所示:图 4.1 基于 3D 模型的参数化设计实现流程4.2 基于3D模型的参数化规划分析对于端盖的二次开发,只需对同类产品的3D模型进行参数化修改,即可导出新的3D模型。基本原理是三维模型与程

56、序控制相结合。 3D 模型不是按程序创建的,而是以交互方式生成的。在创建的零件 3D 模型的基础上,根据零件的设计要求,进一步建立足以完全控制 3D 模型的形状和尺寸的设计参数。根据零件的设计参数编写参数化程序,实现对设计参数的检索和修改,根据新的参数值生成新模型的功能。即先建立参数化模型,然后通过调整其参数来改变几何形状,从而实现产品的精确建模。基于3D模型的参数化规划方法主要包括3D模型的创建、设计参数的确定和参数化规划。为了区别于总则3D模型,参数化模型被设计成需要作为3D模型模板的模型。实现过程如图 4.2 所示。图 4.2 基于 3D 模型的参数化设计实现流程4.2.1 端盖3D模型

57、的建立在Pro/ENGINEER环境下,通过人机交互的方式建立端盖的3D模型模板。在端盖模板的特征建模中,二维截面轮廓通过标注尺寸和应用对称性完全受限于几何形状。创建或修改特征时,需要输入一个值,直接输入参数名称。例如,在草图中标注或修改尺寸值时,使用参数名称而不是特定值。下面以法兰盖为例,具体介绍和说明端盖的参数化设计过程。1 打开Pro/ENGINEER软件,新建一个零件,命名为“ Duangai3.prt ” ,不要使用默认模板,选择“mmns_part_solid”,进入零件设计环境。2 选择主菜单中的【工具】【参数】命令,弹出“参数”对话框,如图 4.3 所示,点击“+”添加四个参数

58、 D、DA、DB、DC、SD、 SB、SBA、R、B。它们分别代表什么,如图所示。并预设各参数值。如D=62、DA=85、DB=110、DC=50、SD=11、SBA=10、R=5、B=15。单击“确定”按钮。图 4.3 法兰盖模型参数图3 选择主菜单 插入 旋转 命令。将出现创建实体旋转特征的对话框。依次选择【Position】Sketch【Define】,弹出Sketch【Place】对话框。4 选择TOP平面作为草图平面,取默认草图方向,反向;默认草图参考平面,RIGHT;参考方向,对。进入草绘环境后,绘制如图 4.4 所示的图形。确认后,生成的图形如图4.4所示:图 4.4 法兰盖模型

59、旋转特征示意图5选择主菜单插入孔命令。出现实体孔特征创建对话框,选择位置,然后选择参考。创建与对称轴和 DA/2 对称中心成 35 度角的四个均匀间隔的直孔。6 选择主菜单Insert Chamfer 命令。出现创建实体倒角特征对话框,选择【设置】,将倒角半径设置为5,按住Ctrl键依次选择要倒角的边。根据图 4.3 生成的图形如图 4.5 所示:图 4.5 法兰盖模型旋转特征生成的 3D 图7选择【工具】【关系】命令,弹出“关系”对话框。输入如图 4 所示的关系。检查一下。8 最终完成的法兰盖零件图如图4.6所示:4.6 法兰盖模型模板以上就是法兰盖的参数化建模过程。用户只需输入参数值并重新

60、生成,即可生成所需的端盖模型,无需重复步骤1-8。4.2.2 端盖的参数化编程打开Visual C+6.0,参考2.2节设置和创建工程文件。设置好后,将程序写入“.cpp ”文件。程序内容包括自定义菜单程序、对话程序、调用参数。然后调试-修改-调试,直到出现31个错误和19个警告。1 源程序流程图这个程序的出发点是为同一系列的零件建立一个实体模型,然后用不同的参数值来驱动改变的尺寸。该程序实现最终目标的工作流程如图 4 所示。2编写源程序#include “stdafx.h”/*- -*Pro/TOOLKIT 包括*- -*/#include #include ProUtil.h#includ

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论