人人文库网 > 图纸下载 > 毕业设计 > 基于UG二次开发技术的麻花钻、扩孔钻、铰刀设计系统研究 刘斌[含CAD高清图纸和说明书]
基于ug二次开发技术的麻花钻、扩孔钻、铰刀设计系统研究麻花钻答辩ppt.ppt
基于UG二次开发技术的麻花钻、扩孔钻、铰刀设计系统研究 刘斌[含CAD高清图纸和说明书]
收藏
资源目录
压缩包内文档预览:
编号:22779116
类型:共享资源
大小:8.60MB
格式:ZIP
上传时间:2019-10-31
上传人:QQ24****1780
认证信息
个人认证
王**(实名认证)
浙江
IP属地:浙江
45
积分
- 关 键 词:
-
含CAD高清图纸和说明书
基于UG二次开发技术的麻花钻、扩孔钻、铰刀设计系统研究
刘斌[含CAD高清图纸和说明书]
基于
UG
二次开发
技术
麻花
扩孔
铰刀
设计
系统
研究
刘斌
CAD
图纸
说明书
- 资源描述:
-
基于UG二次开发技术的麻花钻、扩孔钻、铰刀设计系统研究 刘斌[含CAD高清图纸和说明书],含CAD高清图纸和说明书,基于UG二次开发技术的麻花钻、扩孔钻、铰刀设计系统研究,刘斌[含CAD高清图纸和说明书],基于,UG,二次开发,技术,麻花,扩孔,铰刀,设计,系统,研究,刘斌,CAD,图纸,说明书
- 内容简介:
-
I目目录录摘要Abstract 第1章 绪论.311课题的研究背景 .312课题的研究内容和解决方法.4第2章 UG二次开发的研究 .621 UG软件概述.6211 UG软件的功能介绍 .6212 UG功能模块 .62.2 UG二次开发相关工具概述 .72.2.1 UG/Open GRIP.72.2.2 UG/Open API.82.2.3 UG/Open Menu Script.92.2.4 UG/Open UI Styler.102.2.5 User Tools工具.10第3章 二次开发方案的选择 .1231可行方案.1232 方案选择.1333利用二次开发工具制作系统菜单.143.3.1 设置系统环境变量 .143.3.2制作菜单 .15第4章以麻花钻为例介绍 实体 设计.184.1钻刃曲线的参数方程 .184.2刀具螺旋槽截面和螺旋线的绘制.194.3刀具螺旋体的生成 .204.4刀具圆锥面后刀面的形成 .20第5章 程序设计 .245.1 总体方案设计 .245.2 对话框设计 .255.3程序设计.30结论 与展望.38参考文献.39II致谢.40附录1锥柄麻花钻程序 .41附录2外文翻译.48附录3全部程序见光盘 .561基于基于 UG 二次开发技术的麻花钻、扩孔钻、二次开发技术的麻花钻、扩孔钻、铰刀设计系统研究铰刀设计系统研究摘要摘要:在机械加工中 ,孔加工占机械加工的比例在30%以上 ,特别是在汽车与航空等行业中的应用极为广泛,由于长期以来 ,麻花钻、扩孔钻 、铰刀的设计大多是靠工程师的经验来进行,在设计过程中 ,难免会出现重复性的工作,从而降低了设计效率。同时通常的设计都是在二维图纸上进行设计,不能得到可视化的麻花钻、扩孔钻、铰刀三维造型,这就阻碍了麻花钻、扩孔钻、铰刀的数控刃磨加工及利用一些分析软件对麻花钻、扩孔钻、铰刀的钻削过程进行分析。在 UG中利用麻花钻、扩孔钻、铰刀参数表达式绘制实体模型,实现麻花钻、扩孔钻、铰刀在UG的设计。从而实现产品的快速设计。UG/Open二次开发模块是 UG软件的二次开发工具集,利用该模块可对UG系统进行用户化开发,可满足用户进行各种二次开发的需求。学习了UG二次开发的各种工具,了解了各种工具的特点和适用范围。选择 UG/Open API编程语言,结合使用 UG/Open Menu Script和UG/Open UI Styler开发工具,实现了基于UG二次开发工具的麻花钻、扩孔钻、铰刀的设计。关键词关键词:麻花钻、扩孔钻、铰刀,二次开发,API2Design Twist Drills, Core drills, Reamers based on the second development technology of UGAbstract:In machining process, hole machining process accounts for more than 30% proportion, especially in the application of automotive and aviation industry. As a long time, the designs of twist drills, reaming drill and reamer are mostly carried out by experienced engineers. In the design process, it would be inevitably repetitive work, and thus reduces the efficiency of design. The design usually drawn in two-dimensional drawings can not be visual for twist drills, reaming drill and reamer with three-dimensional modeling, which hindered the machining of the twist drill, reaming drill and reamer, and the process analysis by some analysis software. In order to achieve the design parameters of twist drills, reaming drill, reamer in UG, the solid model of twist drills, core drills and reamers in the UG are draw. Then we achieve rapid product design. The secondary development for UG / Open of the software module is the secondary development tool set of UG. The module can be customized on the UG system developed to meet user demand for a variety of secondary development. We learn the UG secondary development tools and understand the characteristics of a variety of tools and application. Selecting UG / Open API programming language, and combining UG / Open Menu Script and UG / Open UI Styler development tools, we achieve the design parameters of twist, reaming drill and reamer based on UG second development tools.Keywords: Twist drill, Core drills, Reamers, Secondary development, API3第第 1 章章 绪论绪论11 课题的研究背景课题的研究背景在机械加工中,孔加工占机械加工的比例在 30%以上,特别是在汽车与航空等行业中麻花钻、扩孔钻、铰刀的应用极为广泛。由于长期以来,他们的设计大多是靠工程师的经验来进行,在设计过程中,难免会出现重复性的工作,从而降低了设计效率。同时通常的设计都是在二维图纸上进行设计,不能得到可视化的三维造型,这就阻碍了他们的数控刃磨加工及利用一些分析软件对他们的钻削过程进行分析。在 UG 中利用他们的参数表达式绘制实体模型,实现他们在 UG 的设计。从而实现产品的快速设计。因此,现代麻花钻、扩孔钻、铰刀的设计建模技术有着广泛的工程应用背景和研究意义 。随着计算机技术和现代设计理论与方法的迅速发展,三维设计软件尤其是 Unigraphics 在机械零件和产品设计中的日益普及,他们实体在三维软件特别是在 UG 中的绘制变得越来越重要。但基于 UG 的设计系统一般都局限于二维轮廓的绘制或三维实体建模难以与 CAD 系统很好地集成, 给他们的 CAD/ CAM 带来不利影响。建模技术是 CAD 的核心技术,造型技术和特征造型技术是新一代继承化 CAD 系统应用研究的热点理论。目前国内外对二维图形和简单三维实体的造型较为成熟。对复杂的三维实体的造型尚不多见,特别是麻花钻、扩孔钻、铰刀这类形状复杂的三维实体造型设计更少。这有多方面原因:一方面麻花钻、扩孔钻、铰刀二维图形设计能够满足传统的麻花钻加工要求;另一方面运用低级 CAD 软件对复杂的三维实体很难实现虚拟造型设计。随着制造技术的迅速发展,传统的二维图形已不能满足现在的设计、加工要求。因此,在三维软件上绘制麻花钻、扩孔钻、铰刀实体变得十分重要。但是,由于麻花钻、扩孔钻、铰刀形状复杂,且曲线有一定的规律,绘制槽型曲线较复杂。并且麻花钻、扩孔钻、铰刀各参数间都有严格的函数关系,再加上随着当代机械制造业的不断发展,麻花钻、扩孔钻、铰刀的精度要求也越来越高,麻花钻、扩孔钻、铰刀实体的绘制较为麻烦。麻花钻、扩孔钻、铰刀并不是一个标准件,它的各个参数随着设计要求的不同而不同。如果每设计一个麻花钻、扩孔钻、铰刀都要画一个对应的实体部件的话,那不仅增加了设计者的劳动量,还大大降低了设计效率,阻碍了企业的生产和发展。参数化设计是新一代智能化、集成化 CAD 系统的核心内容,也是当前CAD 技术的研究热点。用大型的三维软件实现麻花钻、扩孔钻、铰刀的造型已成为设计者的迫切需求,麻花钻、扩孔钻、铰刀造型有重要的意义:(1)麻花钻、扩孔钻、铰刀的设计与建模系统是 CAD 技术与麻花钻、扩孔钻、铰4刀设计相结合的产物,也是两者发展的趋势所在。(2)实现设计过程自动化避免了设计人员手动查阅大量的数据,也避免了手工取点造型的复杂过程,该系统的开发,可以将手算设计的工作人员从繁琐、低效的工作中解放了出来。(3)实现麻花钻、扩孔钻、铰刀的设计,可以将设计计算、三维造型与绘制工程图的无缝结合,同时为麻花钻、扩孔钻、铰刀的有限元分析、机构仿真和数控加工等工作奠定基础。(4)采用建立原始麻花钻、扩孔钻、铰刀结构模型并驱动其特征参数,为其它复杂曲面的造型提供了有益的参考。本课题利用 UG 的二次开发技术,为解决麻花钻、扩孔钻、铰刀设计问题提供了可行的方法,通过直接输入麻花钻、扩孔钻、铰刀设计条件,利用计算得出的有关设计参数,进行实体建模,实现麻花钻、扩孔钻、铰刀的设计,提高麻花钻、扩孔钻、铰刀设计的效率和准确性。12 课题的研究内容和解决方法课题的研究内容和解决方法本课题利用大型软件 UGNX5.0 来实现麻花钻、扩孔钻、铰刀的三维造型,通过改变麻花钻、扩孔钻、铰刀的一些基本参数,生成其相应麻花钻、扩孔钻、铰刀。要达到相应的设计要求,首先要知道如何在 UG 中绘制麻花钻、扩孔钻、铰刀各部分,要绘制麻花钻、扩孔钻、铰刀必然要知道螺旋槽怎么形成,还应熟知螺旋线的数学模型,精确画出螺旋线。画出麻花钻、扩孔钻、铰刀模型后,还应知道 UG 二次开发的知识,灵活运用 UG 系统提供的二次开发工具,在模型的基础上编制相应的程序,最后完成麻花钻、扩孔钻、铰刀设计模块的开发。开发具体内容和步骤如下:(1) 研究麻花钻、扩孔钻、铰刀的各参数间的关系并建立数学模型;(2) 螺旋线线数学模型的建立;(3) 深入掌握 UG 二次开发的各种方法,并熟练运用 UG/OPEN 开发工具,在建立麻花钻、扩孔钻、铰刀的数学模型的基础上,对各麻花钻、扩孔钻、铰刀实现三维造型;(4) 在构建麻花钻、扩孔钻、铰刀模块框架的基础上,深入研究菜单的制作技术以确定本课题应采用的最佳菜单制作技术。UG 软件是集 CAD/CAM/CAE 一体化的三维软件,是当今世界上最为先进的计算机辅助设计、制造和分析软件,在国内使用相当广泛。另外它所提供的二次开发语言模块UG/Open API、UG/Open GRIP 和辅助开发模块 UG/Open Menu script 与 UG/Open UI Styler 及其良好的高级语言接口,使 UG 的图形功能和计算功能有机的结合起来,便于5用户去开发各种基于自身需要的专用 CAD 系统。使用 UG/Open API 和 UG/Open GRIP 中任何一个模块都能实现 UG 的二次开发,再结合辅助模块,就能开发出 UG 界面的应用模块。因此,合理利用 UG 的二次开发语言模块和辅助模块,就可以实现在 UG 环境下对麻花钻、扩孔钻、铰刀进行设计。6第第 2 章章 UG 二次开发的研究二次开发的研究 Unigraphics(简称 UG)是当前世界上最先进和紧密集成的、面向制造行业的CAID/CAD/CAE/CAM 高端软件。它为制造业产品开发的全过程提供解决方案,主要功能包括:概念设计、工程设计、性能分析和制造。此外,UG 软件还提供了 CAD/CAE/CAM业界最先进的编程工具集,以满足用户二次开发的需要。本章先讨论 UG 软件的主要功能,然后简单介绍二次开发各功能模块的特点和应用。21 UG 软件概述软件概述211 UG 软件的功能介绍UG 是知识驱动自动化技术领域中的领先者。它实现了设计优化技术与基于产品和过程的知识工程的组合,显著地改进了如汽车、航天航空、机械、消费产品、医疗仪器和工具等工业的生产率。它为各种规模的企业递交可测量的价值;更快地递交产品到市场;使复杂产品的设计简化;减少产品成本和增加企业的竞争实力。NX 是一个交互的计算机辅助设计、计算机辅助制造和辅助工程(CAD/CAE/CAM)系统。CAD 功能自动化是在今天制造公司中见到的一般工程、设计和制图能力;CAM 功能利用 NX 描述完成零件的设计模型,为现代机床提供 NC 编程;CAE 功能横越一广范的工程学科,提供许多的产品、装配和零件的性能防真能力。NX 是一个全三维、双精度系统,它允许用户精确地描述几乎任一几何形状。通过组合这些形状,用户可以设计、分析产品和建立他们的工程图。一但设计完成,制造应用允许用户选择描述零件的几何体,加入制造信息,如刀具直径并自动生成一刀具位置,源文件(CLSF) ,它可用来驱动大多数 NC 机床。目前 UGS 公司已经推出 NX5 产品,本次设计中使用的是 NX5 版本的软件。NX5 的特点是:1、为了数字化产品开发集成的自动化;2、在所有开发学科中的新能力,包括工业设计、防真、工装、加工和管理;3、在一个全面的产品生命周期管理(PLM)解决力案内的领先前沿的 CAD、CAE 和 CAM 技术。212 UG 功能模块利用 NX,可以建立、存储、恢复和操纵设计与制造信息,典型地通过建立描述一零件的几何体开始工作。NX 功能被划分成共同功能的一系列“应用(Application) ”共 18 个模块,各模块分别为:1、入口(Gateway):对所有其他交互应用的首要必备7的应用;2、建模(Modeling):包括实体、特征、自由形状、钣金特征建模和用户定义特征;3、装配(Assembilies):支持装配建模;4、几何公差模块(Geometric Tolerancing Module):让用户捕捉公差;5、产品和制造信息(PMI Introduction):可用于在三维环境中对产品形成文档说明;6、分析(Analysis):包括注塑模流动分析、运动应用和 ICAD;7、制图(Drafting):可将三维模型生成二维视图;8、高质量图像(High Quality Image):生成逼真照片的图像;9、知识熔接(Knowledge Fusion):允许用户应用工程知识驱动规则和设计意图到 NX 中的几何模型和装配;10、制造(Manufacturing):可进行虚拟加工和自动加工编程;11、开放的用户界面设计(Open User Interface Styler):允许用户和第三方开发商生成 NX 对话框;12、编程语言(Programming Languages):包括 GRIP 和 API;13、质量控制(Quallity Control) ;14、走线(Routing):定义围绕和通过其他 NX 装配的装配;15、钣金(Sheet Metal):包括钣金设计、冲压和多零件加工的栅格;16、电子表格(Spreadsheet):提供一在 Xess 或者电子表格应用和 NX 间的智能界面;17、Web Express;18、Wire Harness:可在用于描述产品机械装配的同一三维空间建立电气布线的表示。2.2 UG 二次开发相关工具概述二次开发相关工具概述UG 软件提供了 CAD/CAE/CAM 业界最先进的编程工具集,以满足用户二次开发的需要,这组工具集称之为 UG/Open,是一系列 UG 开发工具的总称,它们随 UG 一起发布,以开放性架构面向不同的软件平台提供灵活的开发支持。UG/Open 包括以下几个部分:UG/Open Menu scrip 开发工具,对 UG 软件操作界面进行用户化开发,无须编程即可对UG 标准菜单进行添加、重组、剪裁或在 UG 软件中集成用户自己的软件功能;UG/Open UI Styler 开发工具是一个可视化编辑器,用于创建类似 UG 的交互界面,利用该工具,用户可为 UG/Open 应用程序开发独立于硬件平台的交互界面;UG/Open API 开发工具提供了 UG 软件直接编程接口,支持 C、C+、Fortran 和 Java 等主要高级语言;UG/Open GRIP 开发工具是一个类似 API 的 UG 内部开发语言,利用该工具用户可生成 NC 自动化或自动建模等用户的特殊应用。利用 UG/Open 提供的应用程序和开发工具,用户可以在其提供的平台上开发出适合自己需要的 CAD 产品。2.2.1 UG/Open GRIPUG/Open GRIP(Graphics Interactive Programming)是一种专用的图形交互编程语言。这种语言与 UG 系统集成,实现 UG 下的绝大多数的操作。GRIP 语言与一般的通8用语言一样,有其自身的语法结构,程序结构,内部函数,以及与其他通用语言程序相互调用的接口。一个 GRIP 语句是由一个或几个 GRIP 命令组成,GRIP 命令是 GRIP 语言的基本组成部分。GRIP 命令有三种表示格式:a)陈述格式。主要用于生成和编辑实体。b)GPA 符号格式。GPA 是全局参数存取(Global Parameter Access)的缩写,用于访问 UG 系统中各种对象的状态和参数。c)EDA 符号格式。EDA 是实体数据存取(Entity Data Access)的缩写,用于访问 UG 数据库,能够访问各种对象的功能性数据。例如在属性、绘图和尺寸标注以及几何体等领域与 UG 进行交互操作时,其参数可用 EDA 格式的命令取得。用 GRIP 语言编写 GRIP 源程序,可以在 windows 的记事本中进行,记为*.grs;或者在 GRIP 高级开发环境(GRAD-Grip Advanced Development Environment)中编写。执行 GRIP 程序必需进入 UG 环境中,运行 FileExecute UG/OpenGrip。GRIP 编程语言是面向工程师的语言,具有简单、易学、易用的特点,但是所编写的程序长、复杂。要考虑程序的各个细节问题。因此,GRIP 语言常用于开发一些规模比较小的程序,例如,同类零件建模、计算和分析、数据访问等程序。与 GRIP 语言相比较,用 API 函数编程则可实现功能复杂的操作。2.2.2 UG/Open API作为 UG NX5.0 与外部应用程序之间的接口,UG/Open API 是一系列函数的集合。通过 UG/Open API 的编程,用户几乎能够实现所有的 UG NX5.0 功能。开发人员可以通过用 C+语言编程来调用这些函数,从而实现用户的需要。对 UG part 文件及相应模型进行操作,包括建立 UG NX5.0 模型、查询模型对象、建立并遍历装配体,以及创建工程图等。在 UG NX5.0 中创建交互式程序界面。创建并管理用户定义对象等。应用函数时应注意所有的 UG/Open API 应用必须及时进行初始化和终止,以确保获取或者释放 UG/Open API 的执行许可权限。初始化函数是 UF_ initialize (),当开始调用 UG/Open API 的函数时应先调用 UF_ initialize()来获取执行许可权限。一般来说,我们在变量声明完成后,第 1 个调用UG/Open API 的函数就是 UF_ initialize()。终止函数是 UF_ terminate(),当不再调用 UG/Open API 的函数时必须调用 UF_ terminate()来释放执行许可。UG/Open API 程序能在两种不同环境(依赖于程序的连接方式)下运行,即 Internal 环境(也称为“Internal 开发模式” )和 External 模式。其中 Internal 环境下的程序只能在 UG NX5.0 的界面环境(session)下运行,在运行这些程序时他们被加载到 UG NX5.0 的运行空间中(UG NX5.0 分配的内存) ;External 模式开发的程序能在操作系统(Windows NT/2000/XP 及 UNIX)下运行,不在 UG NX5.0 环境中或作为 UG NX5.0 的子进程运行。尽管没有图形显示,但 UG/Open API 提供了函数用于打印机或绘图仪输出,也可以输9出为 CGM 文件等其他数据文件。2.2.3 UG/Open Menu ScriptUG/Open Menu Script 不仅可以使用户利用 ASC文件来编辑 UG 的菜单,也可以以一种无缝集成的方式为用户开发的应用程序创建菜单。Menu Script 同时也提供了一个菜单栏报告工具,以帮助用户查看定制的菜单,诊断错误。对于菜单的自定义大致可以分为如下三个层次。(1)自定义菜单该级别的自定义允许单个用户或者管理员重新安排 UG 的功能,去除在其产品开发过程中不需要的功能。这种级别的自定义不需要编程实现。(2)自定义 UG 功能该级别的自定义允许单个用户或者管理员取代或增加标准的 UG 功能,并添加其自己定义的功能。(3)添加自定义应用该级别的自定义其目的在于使用户或第三方开发商开发的应用程序完全集成在 UG中。该级别的自定义需要编程实现。UG 的菜单文件是扩展名为.men 的文本文件,可以使用 Windows 的记事本进行编辑。UG/Open Menu Script 提供了一套用于定义 UG 菜单的脚本语言。实际上,UG 系统的菜单文件也是用该脚本语言编写的。UG 为主菜单栏、快捷菜单栏提供了丰富的系统菜单文件,这些菜单文件默认情况下都保存在 UG_BASE_DIR/ug/menus 文件夹下。使用 UG/Open Menu Script 自定义 UG 菜单可以有两种方法,分别是使用 Add-on菜单文件和复制和编辑系统菜单文件。使用 Add-on 菜单方法是添加编辑量很小的菜单文件到菜单文件的目录中,使用 Add-on 菜单可以移出用户不需要的菜单项;添加新的菜单和菜单项;重新组织 UG 的菜单;修改菜单和菜单项的标题;为已经存在的应用按钮添加动态库和菜单文件。复制和编辑系统菜单文件是指复制、编辑系统菜单文件并将其放置在特定的目录下,覆盖原始菜单文件。系统推荐使用 Add-on 菜单文件方法,该方法不仅编辑起来比较方便、易于维护,而且其功能也相当强大,基本可以满足应用开发的所有需求。使用 Add-on 菜单文件的另一个优点在于它可以被 UG 很方便地自动加载。对于与具体应用模式无关的菜单文件放置在 startup 文件夹下,与具体应用模式相关的菜单文件放置在相应的 application 文件夹下,通过使用 MENU_FILES 声明,即可将菜单名与应用模式按钮相关联,点击该应用模式按钮后即可自动加载与其相关联的菜单文件。复制和编辑系统菜单文件方法不推荐使用,这主要是由于其编辑起来相当复杂,特别是对于像 ug_main.men 这样大型的菜单文件,其维护也非常麻烦。102.2.4 UG/Open UI StylerUI Styler 是开发 UG 对话框的可视化工具,生成的对话框能与 UG 集成,让用户更方便、更高效地与 UG 进行交互操作。UG/Open UI Styler 模块提供了强大的制作 UG 风格窗口的功能,其主要功能如下:(1) 提供了让开发人员建造 UG 风格对话框的可视化环境,并能生成 UG/Open UI Styler 文件和 C 代码,从而使用户在使用 UG/Open UI Styler 产生的对话框时,不必考虑图形用户界面(Graphical User Interface 缩写为 GUI )的实现。(2) 利用可视化环境快速生成 UG 风格对话框,从而减少开发时间。(3) 通过选取和放置控件,从而能实现所见即所得。(4) 可以在对话框中实现用户自定义位图。(5) 提供了属性编辑器,从而允许开发人员设置和修改控件属性。(6) UI Styelr 产生的对话框可以在 Menu Script 中被调用,因此可以实现在 UG菜单项上调用 UI Styler 产生的对话框,从而将用户应用程序和 UG 软件完全融合。应用 UI Styler 这一工具可以使开发人员方便、快速地设计出与 UG 界面风格一致的对话框,避免其他复杂的编程。而且可以和用其他开发工具开发出的结果进行集成。UG/Open UI Styler 工具和 UG/Open Menu Script 工具一样,都只具有某一方面的功能:UG/Open UI Styler 用于对话框的开发,UG/Open Menu Script 用于菜单的开发。2.2.5 User Tools 工具UG 软件为用户提供了一个调用二次开发结果的交互式接口:User Tools。它的功能是生成弹出式对话框或工具条,其界面风格与 UG 界面风格一致。通过执行对话框或工具条,操作相应的控件就可运行菜单文件、宏文件、UG/Open GRIP 程序、UG/Open API 程序和其他二次开发文件。例如,执行齿轮生成的程序集,可以用 User Tools 工具产生对话框分别为麻花钻,然后在相应的对话框上进行操作就生成相应种类的齿轮。通过编写对话框定义文件(*.utd)来实现 User Tool 工具的功能。编写文件完成以后,在 UG 中执行 ToolsCustomizeUser ToolsLoad选择所编写的*.utd 文件即可弹出需要的对话框或工具条。*.utd 这个文件是文本文件,可用 Windows 中的记事本进行编写和编辑。一种比较简单的实现方法:拷贝 UG 中的模板文件 Usertoo1.utd 到 UG启动目录下,然后编辑模板文件,实现所需要的功能。在以前较早版本中例如 V13,运用 User Tools 工具必须编写两个文件:菜单定义文件(*.utm)和对话框定义文件(*.utd),然后通过执行菜单项弹出相应的对话框或工具条。现在,较高的 UG 版本已经省略产生菜单这一步,操作同上所述。在 UG 界面中应用 File Execute UG/Open11菜单执行 UG/Open API 程序或 UG/Open GRIP 程序,操作一次只能执行一个程序,而且必须找到程序所在的路径。若利用 User Tools 这个工具,用户可以将多个 GRIP 或 API函数所编写的程序集成到一个 User Tools 对话框或者工具条中,一个程序对应一个控件,通过操作控件来调用程序,使用起来就非常方便。12第第 3 章章 二次开发方案的选择二次开发方案的选择31 可行方案可行方案UG 软件为用户提供的二次开发工具不但可以独立使用,而且可以相互调用其它工具开发的结果,这就大大扩展了工具本身所具有的功能,方便用户进行二次开发。它们之间的关系如下附图所示:Menu Script 所开发的菜单可以与 User Tools 开发的对话框相互调用;Menu Script 所开发的菜单与 User Tools 开发的对话框可以调用 UI Styler 开发的对话框;Menu Script、User Tools 和 UI Styler 开发的对话框均可以调用 GRIP 程序和 API 程序。GRIP 程序和 API 程序之间也可以相互调用。另外,使用UG 二次开发工具必须要设置相应的环境变量,这样系统才能找到这些开发文件,执行相应的程序。UIStyler DialogUser ToolsAPIGRIPMenuScript图图 3-13-1 二次开发工具关系图二次开发工具关系图本课题的目的是以 UG 为平台,使用 UG 二次开发工具,实现麻花钻、扩孔钻、铰刀的设计。在 UG 界面中就是实现在对话框中输入麻花钻、扩孔钻、铰刀的各个参数,确定后 UG 系统自动生成对应的实体模型。要达到设计要求,首先必须自定义一个菜单,制作相对应的对话框,使设计者能调用对应的对话框并输入所需麻花钻的参数。之后更重要的是编写一定的程序,程序的作用是读取对话框中的参数并自动生成所需的实体模型。通过对 UG 系统中各个二次开发工具的性能和特点的分析,要实现设计要求有以下几种方案:(1)在菜单和对话框的基础上使用 GRIP 语言编写生成麻花钻实体的程序。由二次开发工具之间的关系我们知道,UG 对话框可以调用 GRIP 程序。只要能编写出一个生成麻花钻实体的程序,我们就可以用编制好的对话框调用该程序,生成麻花钻实体,满足设计要求。在 UG/Open GRIP 工具中中拥有丰富的函数,可实现几何体的生成、数13据的存取和分析、变换等一系列功能。因此,使用 GRIP 完全能编写出生成麻花钻实体程序,程序编写好后使用 User Tool 工具对程序进行编译连接,最后生成可被对话框调用的可执行程序。将可执行程序放在对应的文件夹里就可实现对话框对程序的调用,执行程序,满足设计要求。(2)在菜单和对话框的基础上使用 API 语言编写生成麻花钻实体的程序。同样,对话框也能实现对 API 程序的调用。只要能编写出实现麻花钻建模的 API 程序,就能实现设计要求。API 与 GRIP 一样,也具有丰富的函数。运用该语言可以实现对部件保存、打开等基本操作、对表达式的操作、装配体操作、工程图的生成和控制等功能,可以满足生成齿轮实体的程序的编写。此外,API 语言借助 C+来编写程序,借助 C+强大的编程功能,编写 API 程序比 GRIP 更加灵活、更加的简单使用,还能满足更多的编程要求。在 C+中编写好相应的程序后编译程序,将生成的可执行程序(.dll)放在对应的文件夹下,就可以实现对话框对程序的调用和执行,满足设计要求。(3)基于三维模型的程序设计。该方法采用三维模型与程序控制相结合的方式,在创建好三维模型的基础上,根据部件的设计要求建立一组可以完全控制三维模型形状和大小的设计参数。程序针对该部件的设计参数进行编程,实现设计参数的查询、修改,根据新的参数值更新模型从而实现设计变更。其中程序的编写是使用 API 语言的表达式功能。在本课题中,采用这种方案具体方法是先新建一个部件,在建模模块下写好表达式,然后使用表达式绘出麻花钻的三维实体,并确保实体模型应随着表达式的值变化而变化。建好模型后,编写菜单和对话框,然后在 C+上用 API 语言进行编程,程序应把对话框和模型联系起来,将对话框中输入的值传递到模型的表达式中,并更新程序。这样,当在对话框中输入实体的设计参数后,运行程序,原来的实体部件就会按新的表达式数据重生成模型,这样就得到了设计所需要的实体模型。将新生成的部件另存,保留原部件,这样就可以随时生成需要的麻花钻、扩孔钻、铰刀了。UG 二次开发工具的功能非常强大,要实现本课题目的应还有其他方案,在这里只列举了这三个常用方案。32 方案选择方案选择比较上述三个方案,有一个共同点就是都使用了菜单技术和对话框技术。这是为了在设计麻花钻时设计者能在 UG 界面下直接输入对应的参数,使该模块更加直观,方便设计者使用。这三个方案中,前两个都是使用编写程序来绘制麻花钻实体,程序比较复杂;最后一个是建立模型后将对话框中数值传递到表达式,程序较简单。麻花钻、扩孔钻、铰刀是较复杂的实体部件,精度要求也比较高,要创建麻花钻实体比较麻烦。前两种方案中,都是用程序来编写整个麻花钻实体创建过程,这要涉及到的函数非常14多,程序烦琐,出现错误时不容易修改和维护。此外,在画麻花钻轮廓过程中需要修剪、变换许多曲线,这在程序中很难做到。如果要使用前两种方案,需要深入学习GRIP 和 API 这两种语言,需要花费很多时间。而第三种方案是直接在 UG 界面上画实体模型,可以直接对各种特征进行编辑、修改曲线,相对于前两种方案来说更直观、更容易。不过要注意的是在第三种方案中,在画麻花钻实体过程中要注意应保证所画出的实体模型应能随着表达式中的值的变化而变化。不过在 UG 界面下比程序中绘制麻花钻模型要直观、容易的多。在编写程序方面,最后一种方案只需写一些数值的传递的程序,使用的函数少,程序简单,易于发现错误和修改调试。同时,如果能够实现,前两种方案所得的麻花钻设计模块使用起来要比第三种方案方便。由于毕业设计时间不长,而且之前没有接触过有关二次开发的知识,在短时间内无法深入学习 GRIP 和API 的知识,前两种方案很难实现。第三种方案最为简单,也最有可能在规定时间内完成设计任务,达到设计目的。综合比较这三种方案,最终选择第三种方案作为本次设计方案。33 利用二次开发工具制作系统菜单利用二次开发工具制作系统菜单3.3.1 设置系统环境变量虽然各种菜单的制作方法,在结构、内容和开发过程上有一定的差异,但是在整个构建过程中有其共性和相同的部分,就是菜单制作之前应先设置系统环境变量。设置了系统环境变量,UG 才能找到开发内容所在目录。系统环境变量设置方法有以下两种:方法一:打开$UG_BASE_DIR/ugii 目录下的 ugii_env.dat 文件(该文件包含Unigraphics 系统的全部环境变量及系统路径定义),找到下面两条语句:#UG_VENDOR_DIR=$UGALLIANCE_DIR/wendo 和#UG_ SITE_DIR=$UGALLIANCE_DIR /site。将它们前面的注释符号“#”删除,以使它们起作用。这两条语句其实指明了供用户放置二次开发文件的目录。在 Unigraphics 初始安装时,它们不起作用,当删除了“#”号后,UG/OPEN 才能从这些目录下得到二次开发的功能扩展。这两个目录的功能和结构是完全相同的,下面都有 startup 和 application 两个目录。其中 startup存放 Unigraphics 启动时需载入的动态共享库(以 ufsta()为入口的.dl1)及菜单脚本文件(.men);application 目录存放具体的功能扩展程序文件(如应用模块的功能扩展共享库( .dl1)及对话框资源文件( .dlg)。Unigraphics 下设置的这两个目录是为不同等级的开发者提供的,vendor 目录下放置 Unigraphics 指定的开发商的二次产品,site 目录下存放其余开发者的产品。因此 vendor 目录下同类内容的文件要比 site 目录下的优先载入。此外,在 ugii_env.dat 文件中还有一条语句,是用来设置用户自己15二次开发内容的目录:#UG_USER_DIR =$HOME,同样将其前面的“#”号删除,并在其后使用用户自己的目录替换$HOME。例如,UG_USER_DIR=E:ugapi,在此目录下也必须建立目录 startup 和 application,存放的内容和 site 及 vendor 下的startup、application 一样,不过它的优先级更低13。方法二:打开 UG 安装目录 UG_BASE_DIR UGmenus 下的custom_dirs.dat(用记事本打开) ,在文件最后添加开发的文件夹的绝对路径。在添加的文件里建立两个子目录:startup 和 application ,分别用来放置开发的各种文本文件(.men 文件) 、动态库文件和对话框文件。上述两种方法中第二种方法较简单方便,本课题采用第二种方法。打开 UG 安装目录 UG_BASE_DIR UGmenus 下的 custom_dirs.dat,在文件最后添加开发的文件夹的绝对路径 E:ugopen。在 E:ugopen 文件夹下建立 startup 和 application 两个子目录。3.3.2 制作菜单本课题涉及到三种刀具的设计,因此应在一个主菜单下建立三个子菜单。在E:ugopenstartup 下建立文件 ugopen.men,代码如下:VERSION 120 /菜单脚本文件的版本信息EDIT UG_GATEWAY_MAIN_MENUBAR /编辑 UG 系统菜单文件BEFORE UG_HELP /定义菜单位于“帮助”菜单前CASCADE_BUTTON GEARS /主菜单按钮名LABEL 参数化设计 /主菜单标题END_OF_BEFORE /结束 BEFORE 定义MENU GEARS /定义主菜单BUTTON DESIGN_DRILL /第一个子菜单名LABEL 锥柄麻花钻 /第一个子菜单标题ACTIONS design_drill.dlg /第一个子菜单的 IDBUTTON DESIGN_DRILL_SPUR /第二个子菜单名LABEL 直柄麻花钻 /第二个子菜单标题16ACTIONS design_drill_spur.dlg /第二个子菜单的 IDBUTTON DESIGN_1 /第三个子菜单名LABEL 扩孔钻 /第三个子菜单标题ACTIONS design_1.dlg /第三个子菜单的 IDBUTTON DESIGN_2 /第四个子菜单名LABEL 铰刀 /第四个子菜单标题ACTIONS design_2.dlg /第四个子菜单的 IDEND_OF_MENU /结束菜单的定义运行结果如图 3-2 所示: 图图 3-23-2 菜单运行效果图菜单运行效果图在菜单的基础上,可以制作工具栏,这样可以在工具栏点相对应的工具来直接调用对话框。工具栏是一种快速激活相关命令的工具按钮的集合。在 UG 中,使用菜单工具可以制作工具栏。工具栏文件是以.tbr 为后缀名的文本文件,每个工具栏按钮名称应与菜单文件中相应按钮的名称相同,工具栏按钮图标所对应的位图文件,应放置在相应的 application 文件夹下。工具栏文件写好后,应放在对应的 stratup 文件夹中。编写的工具栏文件如下:TITLE 参数化设计 /工具栏标题VERSION 160 /工具栏文件的版本信息DOCK NO /工具栏导入时是浮动的BUTTON DESIGN_DRILL /锥柄麻花钻对应按钮的名称LABEL 锥柄麻花钻 /工具栏按钮的标题BITMAP design_drill.bmp /锥柄麻花钻对应按钮图标17BUTTON DESIGN_DRILL_SPUR /直柄麻花钻对应按钮的名称LABEL 直柄麻花钻 /工具栏按钮的标题BITMAP design_drill_spur.bmp /直柄麻花钻对应按钮图标BUTTON DESIGN_1 /扩孔钻对应按钮的名称LABEL 扩孔钻 /工具栏按钮的标题BITMAP design_1.bmp /扩孔钻对应按钮图标BUTTON DESIGN_2 /铰刀对应按钮的名称LABEL 铰刀 /工具栏按钮的标题BITMAP design_2.bmp /铰刀对应按钮图标运行效果如图 3-3 所示:图图 3-23-2 工具栏效果图工具栏效果图18第第 4 章以麻花钻为例介绍实体设计章以麻花钻为例介绍实体设计UG 环境下麻花钻三维造型原理按逆反思维原则,若把直线主切削刃沿螺旋面旋进到钻头端截面处,则可得到一条新的曲线,这条曲线就是钻刃曲线,而整个后刀面螺旋的结果就是刀具的螺旋体部分。根据内圆锥面刃磨的原理,在刀具螺旋实体上再磨削出刀具的后刀面及直线主切削刃,形成麻花钻的切削部分。本文所采用的麻花钻三维造型的方法是:按钻刃曲线和其它参数绘制螺旋槽截形,螺旋生成刀具的螺旋体,根据刃磨参数生成内圆锥面,再以内圆锥面为边界切割刀具螺旋体,形成麻花钻的三维模型。这种建模方法可以使三维模型生成速度快、操作简单、模型特征较少研究的标准麻花钻的顶角2=118,外缘尖点的螺旋角 =25,钻头半径 R=10,半钻芯厚度 r=1.35。UG 环境下麻花钻三维模型建立的步骤:(1)根据螺旋槽截形的各参数绘制螺旋槽截形和螺旋线;(2)以螺旋线和刀具轴线为导引线、螺旋槽截形为截面螺旋生成刀具实体;(3)以直线主切削刃为母线生成内圆锥面,再以内圆锥面为边界切割刀具螺旋体;(4)隐藏刀具螺旋体多余的部分和内圆锥面,麻花钻三维模型建立完成。4.1 钻刃曲线的参数方程钻刃曲线的参数方程当麻花钻的顶角为 2 时,其主切削刃呈直线状。把麻花钻的钻头放到 o-xyz 坐标系中,见图 1 所示。将直线主切削刃 AB 看作点的组合。将这些点沿螺旋面旋进到钻头(z=0)截面,再重新连接成新的曲线 AB,这条曲线就是钻刃曲线。根据文献,可知钻刃曲线的参数方程5为:22cos( )sin( )(0/sin( )cos( )xrubuuuRrbyrubuu式中:R钻头半径;r半钻芯厚度; ( )/(2 )bptg,p 为钻槽螺旋导程。19图图 4.14.1 钻头投影图钻头投影图554.2 刀具螺旋槽截面和螺旋线的绘制刀具螺旋槽截面和螺旋线的绘制按照 UG 表达式 EXP 的语法规则写出钻刃曲线的表达式,并输入到 UG 软件的“Expression”中,其表达式5如下:2210tan(59)/ tan(25)1.35_max()/1_max_deg_max 360/(2 3.1415926)cos( _deg)_sin( _deg)sin( _deg)_cos( _deg)0RbRrcusqrt Rrcbtuarctuutuxtrcub uarcuytrcub uarcuzt 利用 LawCurve 中 ByEquation 功能可自动绘制钻刃曲线。考虑到两条直线切削刃的对称性,只需计算并自动绘制一侧的钻刃曲线再通过曲线旋转复制操作得到另一侧的钻刃曲线,然后再绘制出完整的螺旋槽截面,见图 4.2 中线 1。若用一系数与钻头直径的乘积来近似表示螺旋槽截面的其它曲线,利用 UG 的草图和表达式功能可实现麻花钻螺旋槽截面参数建模。由于螺旋槽上各点的导程相等,则根据螺旋线的几何关系可得出螺旋槽导程的计算公式5: 0/ tanpd,把刀具外缘点的导程计算公式52 3.1415926/ tan(25)pR输入到“Expression”中,利用 UG 中的 HelixCurve 功能可自动准确地绘制出螺旋线,导程值输入 p,螺旋半径输入钻头半径 R,绘制的螺旋线见图 4.2。20图图 4.2 刀具螺旋体草图示意图刀具螺旋体草图示意图54.3 刀具螺旋体的生成刀具螺旋体的生成刀具螺旋体可利用 UG 的 Swept 功能自动螺旋生成。如图 4.2,在刀具的轴线处绘制一条刀具的轴线,轴线的高度必须与螺旋线的高度相等,然后以刀具轴线与螺旋线为导引线,螺旋槽截面为螺旋截面,自动螺旋生成刀具螺旋体,如图 4.3。4.4 刀具圆锥面后刀面的形成刀具圆锥面后刀面的形成通过钻刃曲线的形成原理,直线主切削刃一定在通过图 1(b)中的 AB 两点且垂直于oxz 平面的平面 1 内,取该平面 1 与刀具螺旋体外缘螺旋线的交点 A,连接 AB 两点,直线AB 就是直线主切削刃,如图 4.3。为了便于麻花钻三维实体建模,对圆锥砂轮的刃磨参数进行转换,其方法:在平面 1 内,绘制圆锥砂轮的母线与轴线,如图 4.4 所示。母线必须与主切削刃 AB 重合,以保证刃磨后主切削刃仍为直线。圆锥面的形状由砂轮的半锥角 a 和锥顶矩 L 两个参数控制。为了刃磨出合理的后刀面角度,应让钻头附加一个逆时针旋转角度 。其转换方法是:将圆锥面轴线绕母线逆时针旋转一角度 。然后,再将母线绕轴线旋转一定角度生成一个圆锥面 S1。这样,刃磨后的圆锥面后刀面的就由参数a、L、 共同控制,改变这三个参数,即可改变圆锥面后刀面的形状与角度。将圆锥面S1 绕刀具中心线旋转复制另一侧形成后刀面的圆锥面砂轮 S2,见图 4.5 所示21图图 4.34.3 刀具螺旋体刀具螺旋体图图 4.44.4 圆锥面草图示意图圆锥面草图示意图5522图图 4.54.5 麻花钻刃磨示意图麻花钻刃磨示意图图图 4.64.6 端面投影图端面投影图23分别以圆锥面 S1 和圆锥面 S2 为边界,利用 UG 中的 Divide 功能,对刀具螺旋体进行切割,就可生成刀具的圆锥面后刀面,如图 4.6。24第第 5 章章 程序设计程序设计5.1 总体方案设计总体方案设计建立好实体模型后,接下来就是利用 API 程序将模型中的表达式的值与对话框联系起来。程序的功能是针对部件的设计参数,对设计参数进行查询、修改,根据新的参数值更新模型从而实现设计变更。因此,程序对三种皮带轮的功能是一样的,在对各个模型编写程序时只需要根据各个模型的参数对程序中所调用模型参数做一些修改,其他在程序的编写思路、程序所用的函数和结构等都可以相同。要实现程序针对某个模型的设计参数进行查询、修改,主要的程序设计思路是先读取对话框中的参数,然后把对话框中的参数传递给模型中的表达式,改变表达式中相应参数的值,更新模型。程序运行后,就能实现把设计者输入对话框的参数转化成模型尺寸的变化,实现设计目的。但是由于此种设计的方法是建立在模型的基础上进行的,对话框的设计也是针对某个实体模型,编写程序时使用的参数也是针对具体某一个模型的。因此,在程序运行时应首先检测当前打开的模型是否就是该程序和对话框所对应的模型,只有打开了相对应的模型时程序才继续运行,否则退出。另外,为了方便设计者使用,让使用者在打开对话框时就能直接看到当前模型的各个参数,在调用对话框时应首先将当前模型中表达式中的对应参数读出,并传递给对话框,显示在对话框上。因此,程序设计时,首先检测当前显示的部件是否为程序对应的部件文件,接着使用构造函数将模型中的表达式中的参数值读出并传递到对话框上,然后是用户输入参数值后读取参数并传递给模型,更新模型。程序流程如下图所示:25检测是否为与程序相对应部件读取模型表达式中参数值,调用对话框读取对话框中的数值将读取的参数值传递到模型中的表达式中,更新模型开始退出是否图图 5-15-1 程序设计流程图程序设计流程图5.2 对话框设计对话框设计程序要将对话框和部件模型联系起来,在程序中必然要调用对话框,并有相应的程序相应对话框中的控件。UG 中建立好对话框后,保存对话框时系统还自动生成另外两个文件,分别是与对话框关联的.c 和.h 文件,在编写程序时要使用这两个文件。因此,在编写程序前必须先建立对话框,建立好对话框后再利用对话框生成的文件进行编程。现以实心式皮带轮为例,介绍对话框的建立和程序编写的过程。(1)在 UG 中,单击下拉菜单“应用”“用户界面编辑器” ,即可进入 UI Style 模块,操作界面如图 5-2 所示。26图图 5-25-2 UIStyleUIStyle 操作界面操作界面由图中我们可以看出,在操作界面中,除下拉菜单和“标准”工具栏外,该界面主要有:项目工具栏:包括 UI Style 模块所提供的对话框控件;编辑的对话框:可视化显示正在编辑的对话框;对象浏览器:在对象浏览器中可以选择对话框本身或其中包含的控件,之后在编辑器中对其资源属性进行编辑;资源编辑器:对在对象浏览器中被选择的控件的资源属性进行编辑。在建立对话框时,我们可以充分利用以上工具。首先,编辑对话框的属性。选择对象浏览器中最顶层的对话框,就可以在资源编辑器中对对话框的属性进行编辑。如图 5-3 所示:27图图 5-35-3 编辑对话框属性界面编辑对话框属性界面资源编辑器中包括“属性” 、 “选择” 、和“回叫”三个选项卡。 “属性”选项卡中可编辑对话框标题、提示语、对话框名、对话框类型等。根据需要设置后如图 5-3 所示。 “选择”选项包括:启用:选择是否希望当显示对话框的同时可以对 UG 图形窗口中的对象进行选择;类型:设置在 UG 图形窗口中选择对象的方式是否变化;范围:用于确定被选对象所在范围是否变化。该选项中不需设置,界面如图 5-4 所示:28图图 5-45-4 选择选项选择选项在回调选项卡中,所有对话框都可以包含一些基本的回调函数,主要包括:应用、后退、取消、确定、构造、毁坏等。根据程序需要编辑后如图 8-5 所示:29图图 5-55-5 回叫选项卡回叫选项卡编辑好对话框属性后,应在对话框中添加相应的控件,本课题中只需要输入皮带轮的一些参数,只需添加一定数量的“实数”控件就可以了。添加好控件后应该对控件的属性进行编辑,其中包含:属性、微调按钮、回叫、布局设置四个选项卡。属性选项卡中可以编辑标签、控件名等。在这里只需对属性进行编辑其余的可保持默认状态。图 5-6 显示的就是编辑后的结果。要注意的是,在资源编辑器中编辑任何一个选项卡后,都要单击编辑器底部的“应用”按钮,这样所编辑的内容才会被保存。最后,实心式皮带轮的对话框如图 5-6 所示:30图图 5-65-6 对话框设计结果对话框设计结果编辑好对话框后,将对话框保存在开发路径下的 application 文件夹中。5.3 程序设计程序设计UG/Open API 应用程序是利用 UG/Open API,采用 C 语言进行程序设计,使用 C 编译器和连接器创建的能够在外部(External)环境或内部(Internal)环境运行的可执行程序(文件名后缀为 EXE)或动态连接库(文件名后缀为 DLL)形式的程序。对于不同的操作系统平台,在编译和连接生成 UG/Open API 应用程序时,编译选项和所需的系统库文件是不同的。要使用 UG/Open API 应用程序正常运行,必须正确设置编译和连接选项。本次设计采用 Windows 操作系统,Visual C+6.0 集成开发程序来编程,具体步骤如下:步骤一:检查目录 Microsoft Visual StudioCommonMSDev98Template 下是否有文件 ugopen.awx 及 ugopen.hlp,若有,进入步骤二;否则从 UG 安装目录下的UG_BASE_DIR/ugopen 下拷贝这两个文件到以上目录中。步骤二:启动 VC+6.0,选择下拉菜单“文件”“新建” ,系统弹出新建对话框如图 5-7 所示。在对话框中选择“工程”选项卡,在项目类别中选择“Unipraphics NX App Wizsrd V1” 。在右侧“位置”中指定位置,在“工程名称”中输入工程名称,如下图 5-7,最后单击“确认” 。31图图 5-75-7 新建对话框新建对话框步骤三:在系统弹出的“步骤 1 共 2 步”对话框中,可以选择“internal application”内部模式,生成 DLL 文件,也可以选择“external application”外部模式,生成 EXE 文件。另外,在产生的原代码中可以选择使用“C+”语言,也可以使用“C”语言。如果选择外部模式,完成工程的创建。这里选择内部模式,C+语言,如图 5-8 所示。单击“下一步” 。图图 5-85-8 步骤步骤 1 1 对话框对话框32步骤四:在系统弹出的“步骤 2 共 2 步”对话框中,选择如何激活和卸载应用程序。各复选框和当选框的含义如表 5-1 和表 5-2 所示,这里选择如图 5-9 所示各项,单击“完成”按钮完成应用程序的创建。表表 5-15-1 应用程序的加载应用程序的加载选项含义Automatically(ufsta)使用 ufsta 函数作为入口函数,可以在 UG 启动后自动加载应用程序Explicitly(ufusr)使用 ufusr 函数作为入口函数,可以在 UG 环境下选择菜单“文件”“执行”“NX 打开” ,打开“执行用户函数”对话框,选择应用程序进行手动加载From a User Exit使用用户出口函数作为入口函数,例如使用 ufget 函数,将在UG 打开一个文件时,激活应用程序;使用 ufcre 函数,将在 UG创建一个部件文件时,激活应用程序表表 5-25-2 应用程序的卸载应用程序的卸载选项含义Automatically, when the Unigraphics session terminatesUG 进程结束时自动卸载Automatically, when the application completes应用程序结束时自动卸载Explicitly, via an unload dialog 应用程序手动卸载图图 5-95-9 步骤二对话框步骤二对话框单击“完成”后,系统弹出一个“确认信息”对话框,如图 5-10 所示,列出工程的所有信息,确认无误后单击“确认” ,进入编程界面,同时系统将在指定目录下创建一个 UG NX5.0 开发框架。33图图 5-105-10 确认对话框确认对话框 步骤五:按快捷键 F7,编译工程,出现编译成功信息,如图 5-11 所示。图图 5-115-11 编译工程编译工程打开“File View”选项卡,分别单击“design_drill.files” 、 “Source Files”和“Header Files” 前面的“+” ,双击“design_drill.cpp” ,就能看见文件中的内容。34步骤六:将 UG/Open UI Styler 模块生成的对话框文件 design_drill _template.c和 design_drill.h 分别重新命名为 design_drill.cpp 和 design_drill.h,复制到工程所在的文件夹内,将会出现图 5-12 所示的覆盖信息。点击“是”即可。图图 5-125-12 将对话框文件加入工程效果图将对话框文件加入工程效果图步骤七:在工程中编写程序。从前面的程序设计思路可知,该程序中主要包括:入口函数程序、获取表达式程序、传递对话框中数值程序。入口函数程序是将菜单中定义的按钮和程序连接起来,当点击对应的按钮时调用可执行程序,调用程序后执行主程序。程序运行结束后退出。现就几个主要程序做简单介绍。由于菜单栏的“锥柄麻花钻设计”下面的四个按钮的响应行为为调用对话框,故而在使用时点此即可直接调用对话框。而工具栏的按钮功能同菜单栏。二者均可调用对话框。调用对话框后,单击对话框中的控件时要有相应的程序来响应它,对话框中包括有确定、应用、取消三个控件。加上调用对话框时应读取表达式中的参数,要加一个构造函数。因此对话框程序主要包含有这四个程序,其中取消按钮的程序系统已自动生成,确定和应用这两个按钮程序所执行的功能大体是一样的,只是在执行程序后确定是退出对话框,而应用是返回到对话框。因此主要有两段程序,现简要介绍如下;构造函数主要程序:data.item_attr=UF_STYLER_VALUE; /指定获取控件的值data.item_id= SHIXIN_PIDAILUN _REAL_0 /控件标识UF_MODL_eval_exp(z,&data.value.real) /根据表达式名称计算表达式的数值35UF_STYLER_set_value(dialog_id,&data); /给对话框中的相应控件赋值应用和确定主要程序:data.item_attr=UF_STYLER_VALUE; /指定获取控件的值data.item_id= SHIXIN_PIDAILUN _REAL_Z; /控件标识,可从对话框头文件中获得UF_STYLER_ask_value(dialog_id,&data); /查询对话框控件中的值sprintf(temp,%.5f,dim_value); /获取控件中数值UF_MODL_edit_exp(exp); /修改表达式UF_MODL_update(); /更新模型在编写程序时,应注意你在编写程序的过程中使用了哪些函数,应把对应的函数头文件添加到程序开始处。程序编写完成后,编译程序,如有错误,可根据提示进行修改。程序编译成功后,生成的可执行程序就可以调用。打开相应部件后,就可调用对话框,输入对应参数后单击“确定”或“应用”就可实现模型的更新。运行效果如图 5-13。图图 5-135-13 锥柄麻花钻设计运行效果锥柄麻花钻设计运行效果以上是锥柄麻花钻的程序设计过程,直柄麻花钻、扩孔钻、铰刀的程序设计的过程和所使用的函数与实心式皮带轮相同,只是参数名和控件名不同。所以就不再详细36介绍另外三个刀具的程序设计过程。这里分别给出各自的运行效果图。图图 5-145-14 直柄麻花钻的设计运行效果图直柄麻花钻的设计运行效果图图图 5-155-15 扩孔钻设计运行效果图扩孔钻设计运行效果图37图图 5-165-16 铰刀设计运行效果图铰刀设计运行效果图38 结论结论与展望与展望本次设计通过麻花钻、扩孔钻、铰刀的研究,建立他们的数学模型,实现了麻花钻、扩孔钻、铰刀的三维设计,得出的成果如下:(1)基于麻花钻、扩孔钻、铰刀的槽形研究建立数学模型,实现他们的实体造型;(2)基于麻花钻、扩孔钻、铰刀各参数间的关系,建立他们参数的表达式,利用表达式在 UG 中绘制他们的实体模型,保证模型中各参数随着表达式中的参数的变化而变化,实现麻花钻、扩孔钻、铰刀在 UG 的设计;(3)本次设计中学习了 UG 二次开发的各种工具,了解了各种工具的特点和适用范围,使用 UG/Open API 编程语言,运用 UG/Open Menu Script 和 UG/Open UI Styler开发工具,实现了基于 UG 二次开发工具的麻花钻、扩孔钻、铰刀设计。在 UG 平台下利用表达式建立麻花钻、扩孔钻、铰刀的数学模型基础上,利用 UG二次开发工具实现设计。实现了在 UG 环境下打开相应的实体部件,在 UG 主菜单中新建的菜单上选择对应的按钮,可弹出对话框,在对话框中输入他们的各个参数,实现他们实体模型的变化,得到设计者所需要的麻花钻、扩孔钻、铰刀。三维造型是一个实用化的研究和开发工程,仅靠一学期的工作来完成,是远远不够的,仍然需要进一步修正、充实和完善。本次开发的建模模块有许多不足之处,由于时间限制,使用建模基础上的设计,这样使用该模块所画的实体模型必定受原模块的限制,原模型中的绘图错误会直接影响新生成的实体。由于设计者水平有限,麻花钻、扩孔钻、铰刀建模也较复杂,建模中必然会有问题。另外,该模块使用起来较不方便,需要在对应的模型下完成麻花钻、扩孔钻、铰刀的设计。各种不足需要进行深入的研究,才能开发出功能齐全、使用方便、系统完善的二次开发模块,以适应不断发展的麻花钻、铰刀、扩孔钻设计、制造的要求,这需要我们所有工程技术人员的不懈努力。39参考文献参考文献1展迪优. UGNX5.0 产品设计实例精解M. 北京:机械工业出版社,2009.2 金属切削理论与实践编委会. 金属切削理论与实践M. 北京:北京出版社,1985.3黄勇. UG 二次开发与数据库应用基础与典型范例M. 北京:电子工业出版社,20084王庆林. UG/Open API 实用编程基础M. 北京:清华大学出版社,2002.5李珊等.基于 UG 的麻花钻三维建模研究D.昆明理工大学硕士学位论文,2006.6时林. 麻花钻结构参数及刃磨方法的研究D.江南大学硕士学位论文,20067罗能武. 基于知识工程的麻花钻三维设计研究及开发D.湖南大学硕士学位论文,20088吴振国等.应用扫掠法对标准麻花钻进行几何造型J.兰州交通大学 ,20089吴家洲. UG 软件的二次开发J.华中科技大学机械学院,200240致谢致谢 经过三个多月的忙碌和学习,本次毕业设计已经到了尾声。本次课题是基于 UG 的二次开发,对 UG 的各项操作要求比较高。作为只有一点点 UG 基础知识的我来说,如果没有指导教师的的督促指导,想要完成这个设计是难以想象的。在这里首先要感谢我的指导老师老师。老师平日里工作繁多,但在我做毕业设计的每个阶段,从开始选题到查阅资料,与及在设计计划中的各个环节都给予了我悉心的指导。除了张高峰老师的专业水平和认真的工作态度外,他的治学严谨和科学研究的精神也是我永远学习的榜样。此外,在我遇到问题时,张老师总是不厌其烦地为我讲解,他的为人将积极影响我今后的为人处事和学习工作。最后特别感谢审阅我的设计和毕业答辩的老师,感谢你们在白忙之中抽出时间来看我的设计成果。老师,你们辛苦了。41附录附录 1 锥柄麻花钻程序锥柄麻花钻程序#include #include #include #include #include #include #include #include #include #include design_drill.h#define DESIGN_DRILL_CB_COUNT ( 5 + 1 )static UF_STYLER_callback_info_t DESIGN_DRILL_cbsDESIGN_DRILL_CB_COUNT = UF_STYLER_DIALOG_INDEX, UF_STYLER_CONSTRUCTOR_CB , 0, DESIGN_DRILL_constructor_cb, UF_STYLER_DIALOG_INDEX, UF_STYLER_DESTRUCTOR_CB , 0, DESIGN_DRILL_destructor_cb, UF_STYLER_DIALOG_INDEX, UF_STYLER_OK_CB , 0, DESIGN_DRILL_ok_cb, UF_STYLER_DIALOG_INDEX, UF_STYLER_APPLY_CB , 0, DESIGN_DRILL_apply_cb, UF_STYLER_DIALOG_INDEX, UF_STYLER_CANCEL_CB , 0, DESIGN_DRILL_cancel_cb, UF_STYLER_NULL_OBJECT, UF_STYLER_NO_CB, 0, 0 ;static UF_MB_styler_actions_t actions = design_drill.dlg, NULL, DESIGN_DRILL_cbs, UF_MB_STYLER_IS_NOT_TOP , NULL, NULL, NULL, 0 /* This is a NULL terminated list */;extern void ufsta (char *param, int *retcode, int rlen) int error_code; if ( (UF_initialize() != 0) return; if ( (error_code = UF_MB_add_styler_actions ( actions ) ) != 0 ) char fail_message133; UF_get_fail_message(error_code, fail_message);42 printf ( %sn, fail_message ); UF_terminate(); return;#ifdef DISPLAY_FROM_CALLBACKextern int ( int *response ) int error_code = 0; if ( ( error_code = UF_initialize() ) != 0 ) return (0) ; if ( ( error_code = UF_STYLER_create_dialog ( design_drill.dlg, DESIGN_DRILL_cbs, /* Callbacks from dialog */ DESIGN_DRILL_CB_COUNT, /* number of callbacks*/ NULL, /* This is your client data */ response ) ) != 0 ) char fail_message133; /* Get the user function fail message based on the fail code.*/ UF_get_fail_message(error_code, fail_message); UF_UI_set_status (fail_message); printf ( %sn, fail_message ); UF_terminate(); return (error_code);#endif /* DISPLAY_FROM_CALLBACK */#ifdef DISPLAY_FROM_USER_EXITextern void (char *param, int *retcode, int rlen) int response = 0; int error_code = 0; if ( ( UF_initialize() ) != 0 ) return; if ( ( error_code = UF_STYLER_create_dialog ( design_drill.dlg, DESIGN_DRILL_cbs, /* Callbacks from dialog */ DESIGN_DRILL_CB_COUNT, /* number of callbacks*/ NULL, /* This is your client data */ &response ) ) != 0 ) char fail_message133; UF_get_fail_message(error_code, fail_message); UF_UI_set_status (fail_message); printf ( %sn, fail_message ); 43 UF_terminate(); return;extern int ufusr_ask_unload (void) return ( UF_UNLOAD_IMMEDIATELY ); extern void ufusr_cleanup (void) return;#endifint DESIGN_DRILL_constructor_cb ( int dialog_id, void * client_data, UF_STYLER_item_value_type_p_t callback_data) UF_STYLER_item_value_type_tdata; if ( UF_initialize() != 0) return ( UF_UI_CB_CONTINUE_DIALOG ); data.item_attr=UF_STYLER_VALUE; data.item_id=DESIGN_DRILL_REAL_0; UF_MODL_eval_exp(angle0,&data.value.real); UF_STYLER_set_value(dialog_id,&data); data.item_attr=UF_STYLER_VALUE; data.item_id=DESIGN_DRILL_REAL_1; UF_MODL_eval_exp(angle1,&data.value.real); UF_STYLER_set_value(dialog_id,&data); data.item_attr=UF_STYLER_VALUE; data.item_id=DESIGN_DRILL_REAL_2; UF_MODL_eval_exp(R,&data.value.real); UF_STYLER_set_value(dialog_id,&data); data.item_attr=UF_STYLER_VALUE; data.item_id=DESIGN_DRILL_REAL_3; UF_MODL_eval_exp(rc,&data.value.real); UF_STYLER_set_value(dialog_id,&data); data.item_attr=UF_STYLER_VALUE; data.item_id=DESIGN_DRILL_REAL_4; UF_MODL_eval_exp(h,&data.value.real); UF_STYLER_set_value(dialog_id,&data); data.item_attr=UF_STYLER_VALUE;44 data.item_id=DESIGN_DRILL_REAL_5; UF_MODL_eval_exp(d,&data.value.real); UF_STYLER_set_value(dialog_id,&data); UF_terminate (); UF_terminate ();return (UF_UI_CB_CONTINUE_DIALOG);int DESIGN_DRILL_destructor_cb ( int dialog_id, void * client_data, UF_STYLER_item_value_type_p_t callback_data) if ( UF_initialize() != 0) return ( UF_UI_CB_CONTINUE_DIALOG ); UF_terminate (); return (UF_UI_CB_CONTINUE_DIALOG);int DESIGN_DRILL_ok_cb ( int dialog_id, void * client_data, UF_STYLER_item_value_type_p_t callback_data) if ( UF_initialize() != 0) return ( UF_UI_CB_CONTINUE_DIALOG );double angle0; double angle1; double R; double rc; double h; double d; char exps_string1120; UF_STYLER_item_value_type_t data11; data0.item_attr=UF_STYLER_VALUE; data0.item_id=DESIGN_DRILL_REAL_0; UF_STYLER_ask_value(dialog_id,&data0); data1.item_attr=UF_STYLER_VALUE; data1.item_id=DESIGN_DRILL_REAL_1; UF_STYLER_ask_value(dialog_id,&data1); data2.item_attr=UF_STYLER_VALUE; data2.item_id=DESIGN_DRILL_REAL_2; UF_STYLER_ask_value(dialog_id,&data2); data3.item_attr=UF_STYLER_VALUE;45 data3.item_id=DESIGN_DRILL_REAL_3; UF_STYLER_ask_value(dialog_id,&data3); data4.item_attr=UF_STYLER_VALUE; data4.item_id=DESIGN_DRILL_REAL_4; UF_STYLER_ask_value(dialog_id,&data4); data5.item_attr=UF_STYLER_VALUE; data5.item_id=DESIGN_DRILL_REAL_5; UF_STYLER_ask_value(dialog_id,&data5); angle0=data0.value.real; angle1=data1.value.real; R=data2.value.real; rc=data3.value.real; h=data4.value.real; d=data5.value.real; sprintf(exps_string0,angle0=%f,angle0); sprintf(exps_string1,angle1=%f,angle1); sprintf(exps_string2,R=%f,R); sprintf(exps_string3,rc=%f,rc); sprintf(exps_string4,h=%f,h); sprintf(exps_string5,d=%f,d); UF_MODL_edit_exp(exps_string0); UF_MODL_edit_exp(exps_string1); UF_MODL_edit_exp(exps_string2); UF_MODL_edit_exp(exps_string3); UF_MODL_edit_exp(exps_string4); UF_MODL_edit_exp(exps_string5); UF_MODL_update(); uc1601(模型已更新,请将文件另存,1); UF_terminate (); return (UF_UI_CB_EXIT_DIALOG); int DESIGN_DRILL_apply_cb ( int dialog_id, void * client_data, UF_STYLER_item_value_type_p_t callback_data) if ( UF_initialize() != 0) return ( UF_UI_CB_CONTINUE_DIALOG );double angle0;46 double angle1; double R; double rc; double h; double d; char exps_string1120; UF_STYLER_item_value_type_t data11; data0.item_attr=UF_STYLER_VALUE; data0.item_id=DESIGN_DRILL_REAL_0; UF_STYLER_ask_value(dialog_id,&data0); data1.item_attr=UF_STYLER_VALUE; data1.item_id=DESIGN_DRILL_REAL_1; UF_STYLER_ask_value(dialog_id,&data1); data2.item_attr=UF_STYLER_VALUE; data2.item_id=DESIGN_DRILL_REAL_2; UF_STYLER_ask_value(dialog_id,&data2); data3.item_attr=UF_STYLER_VALUE; data3.item_id=DESIGN_DRILL_REAL_3; UF_STYLER_ask_value(dialog_id,&data3); data4.item_attr=UF_STYLER_VALUE; data4.item_id=DESIGN_DRILL_REAL_4; UF_STYLER_ask_value(dialog_id,&data4); data5.item_attr=UF_STYLER_VALUE; data5.item_id=DESIGN_DRILL_REAL_5; UF_STYLER_ask_value(dialog_id,&data5); angle0=data0.value.real; angle1=data1.value.real; R=data2.value.real; rc=data3.value.real; h=data4.value.real; d=data5.value.real; sprintf(exps_string0,angle0=%f,angle0); sprintf(exps_string1,angle1=%f,angle1); sprintf(exps_string2,R=%f,R); sprintf(exps_string3,rc=%f,rc);47 sprintf(exps_string4,h=%f,h); sprintf(exps_string5,d=%f,d); UF_MODL_edit_exp(exps_string0); UF_MODL_edit_exp(exps_string1); UF_MODL_edit_exp(exps_string2); UF_MODL_edit_exp(exps_string3); UF_MODL_edit_exp(exps_string4); UF_MODL_edit_exp(exps_string5); UF_MODL_update();uc1601(模型已更新,请将文件另存,1); UF_terminate (); return (UF_UI_CB_CONTINUE_DIALOG); int DESIGN_DRILL_cancel_cb ( int dialog_id, void * client_data, UF_STYLER_i
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
2:不支持迅雷下载,请使用浏览器下载
3:不支持QQ浏览器下载,请用其他浏览器
4:下载后的文档和图纸-无水印
5:文档经过压缩,下载后原文更清晰
|