相关资料.doc

基于UG的油缸的参数化设计【带参数化设计文件】

收藏

压缩包内文档预览:
预览图 预览图 预览图 预览图 预览图 预览图
编号:273128    类型:共享资源    大小:2.60MB    格式:RAR    上传时间:2014-04-24 上传人:上*** IP属地:江苏
40
积分
关 键 词:
基于ug 油缸 参数化 设计 文件
资源描述:

基于UG的油缸的参数化设计

79页 21000字数+说明书+任务书+开题报告+外文翻译+参数化设计成果文件【详情如下】

任务书.doc

参数化设计成果文件.rar

基于UG的油缸的参数化设计开题报告.doc

基于UG的油缸的参数化设计论文.doc

外文翻译--UG的介绍.doc

相关资料.doc

计划周记进度检查表.xls


摘  要

   通过CAD/CAM平台,UG体现出了其强大的功能,但UG为了支持一般的CAD/CAM软件系统,只拥有其中一部分最基本的功能,缺少用于设计制造专用产品所需要的完整的计算机功能。机械设计产品花样繁多,需要对具体的设计制造对象对CAD/CAM软件二次开发,以此来创建出功能优异,界面完善,使用便捷的CAD/CAM系统.通过UG的二次开发工具,可以扩展UG 的功能,实现某些特定产品的参数化设计和管理。可以大大提高产品设计的效率。

   此次设计的题目是基于UG二次开发的油缸参数化设计管理。总体思路是输入预荷油缸的原始设计参数,通过相关公式及查表获得油缸的几何参数,再通过油缸的几何参数建立油缸模型,从而达到油缸参数化设计,再通过对油缸的各个零部件的管理达到基于UG二次开发的油缸参数化管理。

关键词:油缸;设计参数;几何参数;参数化设计;管理


目  录

摘  要III

AbstractIV

目  录V

1 绪论1

   1.1 本课题的研究内容和意义1

   1.2国内外的发展概况1

   1.3本课题应达到的要求2

2 相关软件3

   2.1 unigraphics NX的简介3

2.1.1 unigraphics NX的概述3

2.1.2 unigraphics NX的功能3

   2.2 Visual C++的简介6

2.2.1 Visual C++的概述6

2.2.2 Visual C++的功用7

2.2.3 设计选用的原因7

3 液压缸的介绍9

   3.1液压缸的分类和特点9

3.1.1 活塞式液压缸[3]9

3.1.2 柱塞式液压缸12

3.1.3 摆动液压缸13

3.1.4 其他14

4 预荷油缸的尺寸参数的确定15

   4.1 液压缸的主要尺寸15

4.1.1活塞杆直径d15

4.1.2液压缸内径D15

   4.2 液压缸的校核16

4.2.1 缸体壁厚的校核16

4.2.2 液压缸缸盖固定螺栓直径的校核16

4.2.3活塞杆稳定性的验算16

   4.3 动系统及元件缸内径及活塞杆外径选定标准17

4.3.1 液压缸的缸内径应符合下表4-4的规定[7]17

4.3.2 液压缸的活塞杆外径应符合下表4-5的规定17

5 UG/Open API的介绍18

   5.1 UG/Open API的基础知识18

5.1.1 UG/Open API应用程序的初始化与终止20

5.1.2 函数名称及参数规范20

5.1.3 UG对象类型及操作23


6 创建UG应用程序的用户界面27

   6.1 MenuScript菜单技术27

6.1.1 简介27

6.1.2 菜单脚本文件及其语法28

   6.2 UIStyle对话框技术35

6.2.1 缸筒的参数化设计的对话框35

6.2.2 活塞的参数化设计的对话框39

      6.2.3 卡键帽的参数化设计的对话框41

6.2.4 载荷预设值的对话框44

7 编译环境设置46

   7.1 创建VC++46

   7.2 配置调试环境47

8 编写UG/Open API程序50

   8.1简介50

   8.2 创建应用程序主体函数——建模函数50

8.2.1 缸筒建模函数[10]50

   8.3 应用程序的自动加载51

      8.3.1 应用程序的自动加载51

8.4 应用程序的运行结果52

      8.4.1 应用程序的运行结果52

9 结论与展望55

9.1 结论55

9.2 不足之处及未来展望55

致  谢56

参考文献57

附  录58

1 绪论

   原始的机械设计及制造过程艰难且充满复杂性,从设计的整体思路初现端倪开始设计者就要不间断的反复进行产品设计的整个过程,由于缺少一个人性化的产品设计系统,设计的整体过程就会显得比较复杂,随之而来的便是效率的及其低下。随着设计软件及CAD/CAM技术的不断发展,开发者通过编写程序将设计过程中最抽象,最通用及最最通用的部分抽取出来并使使用者能够根据实际的情况进行功能的组合,以实现参数化的CAD/CAM交互系统。


1.1 本课题的研究内容和意义

   UG在CAD/CAM上显示出了强大的功能,但UG为了支持一般软件的运行于操作,仅具有CAD/CAM的一些基础性功能,没有开发出完善且系统的功能来支持专用产品的计算机设计及制造。机械设计的复杂性及产品功能的繁复性决定了需要对CAM软件平台进行二次开发以适应具体变化的对象。同样,通过UG二次开发工具,可以扩展UG 的功能,实现某些产品的参数化设计加工和管理,由此,产品设计的效率将被大大的提高。

   产品的设计制造过程中,产品自身的形状及相应的尺寸必然需要经过多次的协调,优化与修正。如果通过CAD/CAM进行非参数化建模,那么即使只是改变图形的一个结构与尺寸,也要对产品的具体数据进行修改,甚至是重新进行建模,能否在进行产品设计的时候,通过添加某些特定的数据从而获得产品设计所需的各个机构及零部件的具体尺寸;同样,若产品的总体设计发生变化,是否可以通过只修改其中一部分的数据而获得产品全新的数据信息呢?这便是是参数化设计的具体思想。

1.2国内外的发展概况

   UG因其强大的功能成为了当今世界上最为被广泛应用的设计软件,其中包含了世界上最强力、最广泛的产品设计应用模块。UG软件作为先进的CAD/CAM设计软件,拥有产品的开发制造,设备全自动生产、设备无缝精确装配、三维图形资源库的功能。

   UG在当今机械产品的设计与制造行业中被运用的日渐广泛及深入,相较于AutoCAD等平面绘图系统,UG的运用较为繁复,但也无法阻碍人们对其深入了解的脚步。从这一点也可以看出来UG拥有人们所希望的良好的性能和全面的开发方法。伴随着我国GDP的快速增长及制造业技术的不断发展,对于电脑制图能力的要求越来越高,并且现在的制图软件功能也越来越强大,所以UG的应?用也越来越广泛,现在,这些制图软件已在电子和电气、科学研究、机械?设计、软件开发、机器人、模具、工厂自动化、土木建筑、地质、家电等?各个领域得到广泛应用。制造商在进行产品的研发时所需要的工具及软件可以完全的被NX开发方案所支持。UGS?PLM?的一些解决方案均能与NX开发方案完美结合。

   如今,UG已经被包括:通用汽车,通用电气,福特,波音麦道,洛克希德,劳斯?莱斯,日产,克莱斯勒,及美军方所运用,UG几乎包办了所有飞机及汽车发动机的设计,体现出了其在高端工程领域及军工领域的实力。在高端领域与CATIA并驾齐驱。?对一般的设计人员来说,要运用UG进行复杂产品的三维机械设计,设计师首先要花费大量的时间熟悉整个软件的运行过程,同时要在较短的时间内对三维建模有较为深刻的认识,这是一个极其困难的任务。UG的二次开发工具应运而生,通过其对复杂机械结构的参数化设计,设计的整体效率被大大的提高。由于UG软件的通用性只包含有CAD\CAM的一些基本功能,无法提供进行专门产品设计是所需要的特定的功能。机械产品具有繁复性,需要针对具体对?象在选用的CAM软件平台上进行二次开发,来设计出界面友好、功能强大和使用方便的专用产品的CAD/CAM系统UG/OPEN?UIStyler、UG/OPEN?GRIP?和UG/OPEN?API?的二次开发技术。


1.3本课题应达到的要求

   此次设计的题目是基于UG平台的油缸的参数化设计.总体思路是输入油缸的原始设计参数,通过相关公式及查表获得油缸的几何参数,再通过油缸的几何参数运用Unigraphics NX及Visual C++等三维软件及编程软件建立油缸模型,从而达到油缸参数化设计。

内容简介:
无锡太湖学院信 机系 机电一体化 专业毕 业 设 计论 文 任 务 书一、题目及专题:1、题目 基于UG平台的油缸的参数化设计 2、专题 二、课题来源及选题依据 UG在CAD/CAM上显示出了强大的功能,但UG为了支持一般软件的运行于操作,仅具有CAD/CAM的一些基础性功能,没有开发出完善且系统的功能来支持专用产品的计算机设计及制造。 从产品的设计到制造的整个过程中,产品的形状及几何尺寸不可避免的要进行反复的协调,优化与修改.如果通过CAD/CAM进行非参数化建模,那么即使只是改变图形的一个结构与尺寸,也要对产品的具体数据进行修改,甚至是重新进行建模,能否在进行产品设计的时候,通过添加某些特定的数据从而获得产品设计所需的各个机构及零部件的具体尺寸,这便是是参数化设计的具体思想。 三、本设计(论文或其他)应达到的要求: 熟悉UG的发展历程,特别是近十几年来提出的对于UG平台的二次开发的理论 掌握UG平台二次开发的原理以及VC+语言编译的原理和方法 熟练掌握UG平台上对话框的设计与排布 了解并熟练运用UG与VC+编程语言的关联性 掌握基于UG平台的三维模型的设计与构建 熟练掌握所编写程序在UG平台上正确运行的方法 四、接受任务学生: 机械94 班 姓名 顾卓超 五、开始及完成日期:自2012年11月12日 至2013年05月25日六、设计(论文)指导(或顾问):指导教师签名 签名 签名教研室主任学科组组长研究所所长签名 系主任 签名2012年11月12日I无锡太湖学院毕业设计(论文)开题报告题目: 基于UG平台的油缸的参数化设计 信机 系 机电一体化 专业学 号: 0923189 学生姓名: 顾卓超 指导教师: 俞经虎 (职称:副教授 ) (职称: ) 2012年11月12日 课题来源自拟题目科学依据(包括课题的科学意义;国内外研究概况、水平和发展趋势;应用前景等)(1) 课题科学意义 UG在CAD/CAM上显示出了强大的功能,但UG为了支持一般软件的运行于操作,仅具有CAD/CAM的一些基础性功能,没有开发出完善且系统的功能来支持专用产品的计算机设计及制造。机械设计的复杂性及产品功能的繁复性决定了需要对CAM软件平台进行二次开发以适应具体变化的对象。同样,通过UG二次开发工具,可以扩展UG 的功能,实现某些产品的参数化设计加工和管理,由此,产品设计的效率将被大大的提高。 从产品的设计到制造的整个过程中,产品的形状及几何尺寸不可避免的要进行反复的协调,优化与修改.如果通过CAD/CAM进行非参数化建模,那么即使只是改变图形的一个结构与尺寸,也要对产品的具体数据进行修改,甚至是重新进行建模,能否在进行产品设计的时候,通过添加某些特定的数据从而获得产品设计所需的各个机构及零部件的具体尺寸;同样,若产品的总体设计发生变化,是否可以通过只修改其中一部分的数据而获得产品全新的数据信息呢?这便是是参数化设计的具体思想。(2)UG平台的二次开发的研究状况及其发展前景 UG在各行各业中的应用越来越广泛、越来越深入,虽然和AutoCAD等二维绘图软件相比,UG的使用相对要难得多,但这并没有阻止人们对它的学习、使用及开发。这也充分说明了UG具有人们所渴望的优良的性能和灵活的开发方法。随着我国经济的快速发展和机械制造业的日益蓬勃,对于电脑辅助制图的要求越来越高,并且现在的制图软件功能也越来越强大,所以UG的应用也越来越广泛,现在,这些制图软件已在电子和电气、科学研究、机械设计、软件开发、机器人、模具、工厂自动化、土木建筑、地质、家电等各个领域得到广泛应用。如今,UG已经被包括:通用汽车,通用电气,福特,波音麦道,洛克希德,劳斯莱斯,普惠发动机,日产,克莱斯勒,以及美国军方所运用。对一般的设计人员来说,要运用UG进行复杂产品的三维机械设计,设计师首先要花费大量的时间熟悉整个软件的运行过程,同时要在较短的时间内对三维建模有较为深刻的认识,这是一个极其困难的任务。UG的二次开发工具应运而生,通过其对复杂机械结构的参数化设计,设计的整体效率被大大的提高。由于UG软件的通用性只包含有CADCAM的一些基本功能,无法提供进行专门产品设计是所需要的特定的功能。机械产品具有复杂性,需要针对具体对象在选用的CAM软件平台上进行二次开发,来设计出界面友好、功能强大和使用方便的专用产品的CAD/CAM系统UG/OPENUIStyler、UG/OPENGRIP和UG/OPENAPI的二次开发技术。研究内容 熟悉UG的发展历程,特别是近十几年来提出的对于UG平台二次开发的理论; 熟练掌握UG平台二次开发的原理以及VC+语言编译的原理和方法; 熟练掌握UG平台上对话框的设计与排布; 了解并熟练运用UG与VC+编程语言的关联性; 掌握基于UG平台的三维模型的设计与构建; 熟练掌握所编写程序在UG平台上正确运行的方法。拟采取的研究方法、技术路线、实验方案及可行性分析(1) 实验方案 在UG平台上创建用户自定义菜单,其中要注意控件创建排布的合理性以及所包含参数的准确性,通过其生成的文件将其更名后导入VC+语言中进行程序主体函数的修改与嵌入。在此之前,注意要对VC+的编译环境进行正确的设置。最后生成的程序可通过多种方法进行加载,以实现对油缸的参数化设计。(2)研究方法 对于不同的要求在UG平台下创建符合要求的用户自定义菜单,通过比较掌握各控件所代表的功能。 通过对VC+语言的改写与嵌入了解各语句对最后参数化设计的影响,以此加深对参数化设计中UG与VC+语言间关联性的把握。研究计划及预期成果研究计划:2012年11月25日-2012年12月25日:根据研究课题及任务书查阅所需资料,填写开题报告书。2013年1月20日-2013年3月5日: 社会实习并填写毕业实习报告。2013年3月10日-2013年3月14日:按照实际要求修改开题报告。2013年3月18日-2013年3月22日:阅读并翻译一篇与课题相关的外文材料。2013年3月25日-2013年4月11日:对所需成果进行分析并着手设计自定义对话框。2013年4月12日-2013年4月30日:VC+语言的嵌入并将所得的程序进行试运行。2013年5月01日-2013年5月25日:毕业论文的撰写与修改。预期成果:此次设计的题目是基于UG平台的油缸的参数化设计.总体思路是输入油缸的原始设计参数,通过相关公式及查表获得油缸的几何参数,再通过油缸的几何参数运用Unigraphics NX及Visual C+等三维软件及编程软件建立油缸模型,从而达到油缸参数化设计。特色或创新之处 通过对UG平台的二次开发以提高设计的效率。 参数化的设计使变更某些变量时其余的参数也随之发生改变,从中可以清晰地了解到不同变量的变化对油缸整体的影响。已具备的条件和尚需解决的问题 课题的整体思路清晰步骤明确,对基于UG平台的如对话框创建等基本功能了解透彻,明确程序的运行方法及最终结果。 VC+语言编译能力较为薄弱,许多问题尚未解决。指导教师意见 指导教师签名:年 月 日教研室(学科组、研究所)意见 教研室主任签名: 年 月 日系意见 主管领导签名: 年 月 日编号无锡太湖学院毕业设计(论文)题目: 基于UG平台的油缸的参数化设计 信机 系 机电一体化 专业学 号: 学生姓名: 指导教师: (职称:副教授 ) (职称: ) 2013年05月25日III无锡太湖学院本科毕业设计(论文)诚 信 承 诺 书本人郑重声明:所呈交的毕业设计(论文) 基于UG平台的油缸的参数化设计 是本人在导师的指导下独立进行研究所取得的成果,其内容除了在毕业设计(论文)中特别加以标注引用,表示致谢的内容外,本毕业设计(论文)不包含任何其他个人、集体已发表或撰写的成果作品。 班 级: 机械94 学 号: 0923189 作者姓名: 2013 年 05 月 25 日摘 要 通过CAD/CAM平台,UG体现出了其强大的功能,但UG为了支持一般的CAD/CAM软件系统,只拥有其中一部分最基本的功能,缺少用于设计制造专用产品所需要的完整的计算机功能。机械设计产品花样繁多,需要对具体的设计制造对象对CAD/CAM软件二次开发,以此来创建出功能优异,界面完善,使用便捷的CAD/CAM系统.通过UG的二次开发工具,可以扩展UG 的功能,实现某些特定产品的参数化设计和管理。可以大大提高产品设计的效率。 此次设计的题目是基于UG二次开发的油缸参数化设计管理。总体思路是输入预荷油缸的原始设计参数,通过相关公式及查表获得油缸的几何参数,再通过油缸的几何参数建立油缸模型,从而达到油缸参数化设计,再通过对油缸的各个零部件的管理达到基于UG二次开发的油缸参数化管理。 关键词:油缸;设计参数;几何参数;参数化设计;管理VAbstract UG display the formidable function on CAD/CAM, but UG is the general support software system, only has the CAD/CAM basic function and not provide the complete computer-aided design/manufacture function which the special-purpose product needed. As a result of the ever-changing mechanical product,it needs to aim at the concrete object in the CAM software platform which selects to carry on the re-development and designs the nodding acquaintance good and it is easy to operate special-purpose product CAD/CAM system.Through the UG re-development tool,we may expand the function of UG and realize certain specific product parametrization design and the management.we also may enhance the efficiency of product design greatly. This design topic is based on the UG re-development on hydrocylinder parametrization design management.The overall train of thought is that we should input the primitive design variable of the pre-Dutch hydrocylinder,and obtains the geometry parameter of the cylinder through the correlation formula and the table, and then establish the hydrocylinder mode through geometry parameter of hydrocylinder , thus we achieve the hydrocylinder parametrization design and hydrocylinder parametrization management. Keywords: hydrocylinder,design parameter,geometry parameter, parametrization design,managementV目 录摘 要IIIAbstractIV目 录V1 绪论1 1.1 本课题的研究内容和意义1 1.2国内外的发展概况1 1.3本课题应达到的要求22 相关软件3 2.1 unigraphics NX的简介32.1.1 unigraphics NX的概述32.1.2 unigraphics NX的功能3 2.2 Visual C+的简介62.2.1 Visual C+的概述62.2.2 Visual C+的功用72.2.3 设计选用的原因73 液压缸的介绍9 3.1液压缸的分类和特点93.1.1 活塞式液压缸393.1.2 柱塞式液压缸123.1.3 摆动液压缸133.1.4 其他144 预荷油缸的尺寸参数的确定15 4.1 液压缸的主要尺寸154.1.1活塞杆直径d154.1.2液压缸内径D15 4.2 液压缸的校核164.2.1 缸体壁厚的校核164.2.2 液压缸缸盖固定螺栓直径的校核164.2.3活塞杆稳定性的验算16 4.3 动系统及元件缸内径及活塞杆外径选定标准174.3.1 液压缸的缸内径应符合下表4-4的规定7174.3.2 液压缸的活塞杆外径应符合下表4-5的规定175 UG/Open API的介绍18 5.1 UG/Open API的基础知识185.1.1 UG/Open API应用程序的初始化与终止205.1.2 函数名称及参数规范205.1.3 UG对象类型及操作236 创建UG应用程序的用户界面27 6.1 MenuScript菜单技术276.1.1 简介276.1.2 菜单脚本文件及其语法28 6.2 UIStyle对话框技术356.2.1 缸筒的参数化设计的对话框356.2.2 活塞的参数化设计的对话框39 6.2.3 卡键帽的参数化设计的对话框416.2.4 载荷预设值的对话框447 编译环境设置46 7.1 创建VC+46 7.2 配置调试环境478 编写UG/Open API程序50 8.1简介50 8.2 创建应用程序主体函数建模函数508.2.1 缸筒建模函数1050 8.3 应用程序的自动加载51 8.3.1 应用程序的自动加载518.4 应用程序的运行结果52 8.4.1 应用程序的运行结果529 结论与展望559.1 结论559.2 不足之处及未来展望55致 谢56参考文献57附 录58V基于UG平台的油缸的参数化设计1 绪论原始的机械设计及制造过程艰难且充满复杂性,从设计的整体思路初现端倪开始设计者就要不间断的反复进行产品设计的整个过程,由于缺少一个人性化的产品设计系统,设计的整体过程就会显得比较复杂,随之而来的便是效率的及其低下。随着设计软件及CAD/CAM技术的不断发展,开发者通过编写程序将设计过程中最抽象,最通用及最最通用的部分抽取出来并使使用者能够根据实际的情况进行功能的组合,以实现参数化的CAD/CAM交互系统。1.1 本课题的研究内容和意义 UG在CAD/CAM上显示出了强大的功能,但UG为了支持一般软件的运行于操作,仅具有CAD/CAM的一些基础性功能,没有开发出完善且系统的功能来支持专用产品的计算机设计及制造。机械设计的复杂性及产品功能的繁复性决定了需要对CAM软件平台进行二次开发以适应具体变化的对象。同样,通过UG二次开发工具,可以扩展UG 的功能,实现某些产品的参数化设计加工和管理,由此,产品设计的效率将被大大的提高。 产品的设计制造过程中,产品自身的形状及相应的尺寸必然需要经过多次的协调,优化与修正。如果通过CAD/CAM进行非参数化建模,那么即使只是改变图形的一个结构与尺寸,也要对产品的具体数据进行修改,甚至是重新进行建模,能否在进行产品设计的时候,通过添加某些特定的数据从而获得产品设计所需的各个机构及零部件的具体尺寸;同样,若产品的总体设计发生变化,是否可以通过只修改其中一部分的数据而获得产品全新的数据信息呢?这便是是参数化设计的具体思想。1.2国内外的发展概况 UG因其强大的功能成为了当今世界上最为被广泛应用的设计软件,其中包含了世界上最强力、最广泛的产品设计应用模块。UG软件作为先进的CAD/CAM设计软件,拥有产品的开发制造,设备全自动生产、设备无缝精确装配、三维图形资源库的功能。 UG在当今机械产品的设计与制造行业中被运用的日渐广泛及深入,相较于AutoCAD等平面绘图系统,UG的运用较为繁复,但也无法阻碍人们对其深入了解的脚步。从这一点也可以看出来UG拥有人们所希望的良好的性能和全面的开发方法。伴随着我国GDP的快速增长及制造业技术的不断发展,对于电脑制图能力的要求越来越高,并且现在的制图软件功能也越来越强大,所以UG的应用也越来越广泛,现在,这些制图软件已在电子和电气、科学研究、机械设计、软件开发、机器人、模具、工厂自动化、土木建筑、地质、家电等各个领域得到广泛应用。制造商在进行产品的研发时所需要的工具及软件可以完全的被NX开发方案所支持。UGSPLM的一些解决方案均能与NX开发方案完美结合。如今,UG已经被包括:通用汽车,通用电气,福特,波音麦道,洛克希德,劳斯莱斯,日产,克莱斯勒,及美军方所运用,UG几乎包办了所有飞机及汽车发动机的设计,体现出了其在高端工程领域及军工领域的实力。在高端领域与CATIA并驾齐驱。对一般的设计人员来说,要运用UG进行复杂产品的三维机械设计,设计师首先要花费大量的时间熟悉整个软件的运行过程,同时要在较短的时间内对三维建模有较为深刻的认识,这是一个极其困难的任务。UG的二次开发工具应运而生,通过其对复杂机械结构的参数化设计,设计的整体效率被大大的提高。由于UG软件的通用性只包含有CADCAM的一些基本功能,无法提供进行专门产品设计是所需要的特定的功能。机械产品具有繁复性,需要针对具体对象在选用的CAM软件平台上进行二次开发,来设计出界面友好、功能强大和使用方便的专用产品的CAD/CAM系统UG/OPENUIStyler、UG/OPENGRIP和UG/OPENAPI的二次开发技术。1.3本课题应达到的要求 此次设计的题目是基于UG平台的油缸的参数化设计.总体思路是输入油缸的原始设计参数,通过相关公式及查表获得油缸的几何参数,再通过油缸的几何参数运用Unigraphics NX及Visual C+等三维软件及编程软件建立油缸模型,从而达到油缸参数化设计。 2 相关软件2.1 unigraphics NX的简介 2.1.1 unigraphics NX的概述UG NX作为机械设计领域用途最为广泛的三维建模软件,其主要的作用是创建从设计到制造的整套自动化流程,作为全新一代的CADCAM的系统软件,其在机械设计方面用途广泛。相对于传统CADCAM软件功能的局限性,UG NX不仅能进行产品结构的绘制与建立,更能为此建立一套健全的产品设计制造方案,包括产品设计、结构设计、模型建立、加工成型、结构分析、产品的分析及数据管理、甚至产品使用寿命的评估,因此UG NX是集合了多种功能的设计系统。UG NX已成为世界商最优秀公司广泛使用的设计系统。这些公司包括:通用电气、波音飞机、松下、飞利浦、爱立信、柯达、精工。从1990年登陆中国以来,经历了多次迅猛的发展已成为中国航天业、汽车制造、机械制造业及家用电气等领域的首选软件。1 2.1.2 unigraphics NX的功能几个不同的模块构成了UG NX软件,其中包括了CAD、CAM、注塑件、金属件、工程质量检测、管路应用、Web、逆向工程等不同模块,其中每个功能模块都以Gateway环境为基础,它们之间既相互独立又互相联系。 CAD模块由于在三维建模领域拥有很强的能力,因此UG NX软件早已被世界上多家航天及汽车制造厂商所运用。CAD模块又由以下许多独立功能的子模块构成: (1) 建模模块此模块作为全新的产品设计造型模块,提供实体化建模、特性建模、曲面建模等一系列先进的造型和辅助功能。草图工具适合于全参数化设计;曲线工具虽然参数化功能不如草图工具,但用来构建线框图更为方便;实体工具完全整合基于约束的特性建模和显示几何建模的特征,由此各种特征实体、线框架构等功能能被自由的使用;曲面工具是基于整合了实体化建模和曲面建模基础技术上的设计工具,可以设计出如工业造型设计产品的复杂曲面外形。 (2) 工程制图模块 UG工程制图模块中的平面工程图由实体模型自主生成,也可用曲线功能直接绘制。此模块还提供自主的视图布局(包括基本视图、剖视图、向视图等),而且可以自动或者手动对尺寸进行标注,自动进行剖面线的绘制、对形位公差和表面粗糙度进行标注等。由于3D模型的变化,工程图将会进行同步的更新,进而使二维工程图与三维模型达到基本一致,同时也减少了因3D模型改变而更新二维工程图的时间。 另外,消隐线与截面视图也包括于视图之中,模型修改完成后也会进行相应的更新,且可以运用自动的视图布局能力提供快速的图纸布局,从而减少工程图更新所需的时间。 (3) 装配建模模块UG装配建模模块是用于产品的模拟装配,支持“由底向上”和“由顶向下”的装配方法。在总装配文中可以对装配模型进行设计和改造,组件通过对齐、偏移等方法进行定位及配对,加强了性能,减少了对存储的要求。 (4) 模具设计模块模具设计模块是UGS公司提供的运行在UG软件基础上的一个智能化、参数化的注塑模具设计模块。此模块能够对产品的分型、型腔、滑块、推杆、镶块、型腔轮廓,以及创建电火花加工的电极、模具的模架、浇注系统和冷却系统等提供了方便的设计途径,最终的目的是生成与产品参数相关的、可用于数控加工的三维模具模型。此外,3D模型的每一改变均会自动地关联到型腔和型芯。 CAM模块 作为UG NX在计算机上的辅助制造模块,CAM模块提供了CLSFS编译与创建实现了对NC的加工,提供了包括铣、车、切割、钣金等加工方法的交互操作,还具有机床数据文件生成器及图形后置处理的支持。同时又提供了系统资源制造系统、刀具轨迹编辑器、模拟切削、模拟机床等一系列功能。 UG/Gateway模块 Gateway是运行另外一些对应模块的前提条件,该模块为UG NX6另外模块的运作提供了底层相一致的数据库支持和一个图形交互环境。通过它能够打开已经保存的部件文件、建立全新的部件文件、画出工程图像及支持不同格式的文件等操作,也提供图层控制、屏幕布局及视图的定义、表达式及特征查询、对象信息及分析、显示控制及隐藏和再现对象等操作。 MoldWizard 模块MoldWizard是UGS公司设计的能够在Unigraphics NX软件基础上运行的一个注塑模具设计模块。MoldWizard为产品的分型、型腔、推杆、滑块、镶块、复杂型创建电火花加工的电极和模具的模架、冷却系统和浇注系统等提供了方便的设计途径,最终可以生成与产品参数相同的、可用于数控加工的三维模具模型。 有序的开发环境 UG NX开发工具统称为UG/OPEN,是一系列基于UG的应用软件在一个开放的平台上集成的。他们随UG NX一起发布,主要包括:API、UI Styler、GRIP、KF、NX OPEN、Menu script。 2.1.3 设计选用的原因UG/OPEN是一系列UG NX开发工具的总称,主要包括:UIStyler、Menu script、GRIP、UI API、NX OPEN、KF。 (1) UG/OPEN UIStyler 作为开发对话框的工具,UG/OPEN UIStyler能使设计的对话框于UG相集成,使用户的操作更加方便、更有效的与UG进行联动操作。免除了对繁复的图形与用户接口进行编程,直接使用对话框里的基本空间进行不同的组合从而形成功能相异的对话框。 启动入UG,点击【开始】【所有应用模块】【用户界面样式编辑器】即可启动UG的对话框自主设计功能。可通过选择点击工具栏上的各个控件实现设计对话框上各控件的添加及删除;通过对象浏览器能观察到各个控件所包含的信息;可运用资源编辑器对对话框中的各个控件的信息及功能进行修改与删除;同时,可通过设计对话框观察所设计的对话框的界面情况。 界面设计结束后,将设计完成的对话框保存后即可自动生成三个文件: .dlg、_template.c和 .h文件。其中:.dlg用于保存对话框中的图形文件; .h是对话框的头文件,其中包含了对话框和对话框中控件的标识符号及其原型函数;_template.c作为对话框中C语言的头文件,包含了各种指令及定义。之后的工作是修改 *_template.c模板文件并在其中加入相应的代码,以确保对话框能调用函数以实现预期的功能。模板文件*_template.c的修改应该在Vc中修改完成,然后和 .h编译连接生成 .dll文件.这种dll文件可以直接通过3种方式调用: 1)通过Open Grip函数调用2)通过.men调用,需要写在.men文件中3)通过UI Styler二次开发的对话框.dlg中的按钮响应函数来调用 开发人员可以通过UIStyler工具方便、快捷地设定出和UG的界面风格相统一的对话框界面,防止进行复杂的编程。而且可以和用其他开发工具开发出的结果进行集成。 (2) UG/OPEN MenuScript 用这一工具可以使菜单实现用户化。UG/OPEN MenuScript支持UG菜单及对话框的设计及修改,我们可以使用此功能对UG的菜单进行重新编排或增加新的功能来实现用户所编译的二次开发程序、用户的工具文件以及系统的各项命令等。以下介绍两种能够通过UG/OPEN MenuScript实现的UG菜单的用户化操作: 1)添加了用户菜单文件:将已经经过用户编辑的且符合要求与规定的文件添加到与其对应的目录下,这是一种较好的方法。2) 修改编译用户标准菜单文件:用户编辑与修改已经存在的菜单文件.但运用这种办法将会改变UG原有的菜单布局并且无法恢复。 (3) UG/OPEN GRIPGRIP作为一种独有的图形交互编程语言可以使用户实现在UG平台下的大部分操作,GRIP命令与英语词汇惊人的相似,语法方面与其他编程语言有某些相同之处,在一些情况下GRIP编程语言对于某些较高级的操作似乎比UG交互更为有效,UG交互所能实现的功能都能通过GRIP编程语言实现。UG/Open GRIP作为最被广泛运用的GRIP语言编辑器由UG所提供,用户可以通过它实现修改、编辑、编译、连接程序。和普通的语言一样,GRIP语言拥有其自身的程序、语法、函数和与其他不同的语言进行互动的接口,单个GRIP语句中包含了单个或多个GRIP命令,作为GRIP语句的基本成分。GRIP命令有三种表示格式:A)GPA符号格式:以此访问UG系统中各个对象及参数。)陈述格式:在编辑于生成实体中起作用。)EDA符号格式:在访问UG数据库中各个对象的功能时起作用。 作为工程师的语言,GRIP语言具有简明,易懂的特点,由于所编写的程序长而繁复且要求对细节的精准把握。GRIP语言常只适用于一些规模相对较小的程序。 (4) UG/OPEN APIUG/Open API(User Function),是一个允许程序访问并改变UG对象模型的程序集合。UG/OpenAPI装载了接近2000个UG操作的函数, 通过它可以在C程序和C+程序中以库函数的形式调用UG内部的将近2000个操作,该函数几乎可以实现UG平台上的所有操作,包括:对UG中文件及数据的管理、对图形终端和数据库的操作。由于编译连接的不同,UG/Open API程序可以两种不同的环境中运行,分别是外部(External)及内部(Internal)。通过.exe的方式,外部类型可以直接运行于操作系统之中,虽然能在计算机中生成所需的图形文件,但是此类型没办法显示出图形与用户相交互的特性;内部类型的运行环境限制于UG中,并且以.dll 的方式被加入到到UG的运行进程中,并常驻于内存之中。与外部类型相比,更快的连接速度、更小的程序大小及更好的互动性是其显著的优点。 UG/Open API程序通过C或C+语言进行编译,这里给出两种方法在VC中建立用于UG平台的二次开发程序:1)采用向导构建程序的基本的框架;2)手工构建一个工程。第一种方法通过向导的指引按照规定的步骤逐步构建出程序的基本框架;第二种方法则繁琐得多,通过在VC中手动加入各个配置,以建立起UG软件和VC之间的关联,所以最好使用向导来建立UG平台的二次开发工程。2.2 Visual C+的简介 2.2.1 Visual C+的概述 C语言作为计算机的高级语言已经在国际上处于主流地位,既可以用它来编译系统内的软件,也可以用它来编译应用软件。 汇编语言普遍运用于早期操作系统中程序的编译。由于汇编语言对计算机的依赖性较强,所以为了加强系统软件的可读性及可移植性,应该改用高级语言。但是,由于汇编语言的某些功能难以用高级语言来实现(汇编语言可以直接对硬件进行操作)。人们希望找到一种同时具备两种语言优点的语言,于是,C语言由此应运而生了。 Visual C+6.0不仅仅作为C+编译器,更是一个运用于Windows操作平台的可视化集成开发状况。Visual C+6.0由许多部件组成,包括调试器、编辑器以及向导AppWizard、类向导Class Wizard等一些开发工具. 这些组件通过一个名为Developer Studio的组件集成成为一个和谐的开发状况。2 2.2.2 Visual C+的功用Visual C+它大概可以分成以下三个主要部分: (1) MFC:理论上说,MFC也不是专门用于VC+语言的处理,其他类型的VC+语言也可用MFC来进行处理。于此同时,通过Visual C+编写代码并不意味着必须要用MFC,用Visual C+、ATL、STL来编写SDK程序一样可以。不过,Visual C+原本就是为MFC打造的,Visual C+中许多特征和语言扩展也是为MFC专门而设,所以用Visual C+而不是MFC就等于丢弃了Visual C+中极大部分的功能。但是,Visual C+也不完全等于MFC。 (2) Developer Studio:作为集成开发环境,生活中的大部分工作都是通过此平台完成的,另外由于其标题上写着“Microsoft Visual C+”,所以有很多人必定会认为这便是Visual C+。其实并不是这样,虽然Developer Studio提供了多种多样的Wizard和及其完善的编译器,但事实上并不包含有任何链接的程序及编译的功能,真正完成这些工作的幕后英雄另有其人。Developer Studio不是专门用于VC的,同样也可用于VJ,VB,VID等。 (3) Platform SDK才是Visual C+及整个Visual Studio的灵魂和精华,虽然我们很少能直接与它相接处。总体说来,Platform SDK是以Microsoft C/C+编译器为基础搭配MASM,以其他一些工具及文档资料作为辅助程序。上文中提到Developer Studio不含有编译程序的应用,那此项工作改由谁来完成?是NMAKE,是CL,和其它多种多样的命令行程序,这些我们不可见的程序才是组成Visual Studio的基础。9 2.2.3 设计选用的原因 UG/Open API应用程序是利用UG/Open API,采用C语言进行程序设计,使用C语言编辑器和连接器创建的能够在外部环境及内部环境运行的可执行的程序(文件名后缀名为.exe)或者动态库(文件名后缀为.dll)形式的程序。基于有差别的操作系统平台,在编译和链接产生UG/OpenAPI应用程序的同一时间,编译的选项和所需要系统的文库有所不同。为了使UG/Open API应用程序能够正常的运作,一定要对编译和链接的选项进行正确的设置。这里以最常用的Windows操作系统,Visual C+6.0集成开发环境来创立UG/Open API应用程序的方式及步骤。 而且vc+工程中自带了一个UG向导“Unigraphics NX AppWizard”,通过它进行UG/Open API应用程序的设计,创建和调试无疑是一种最佳选择。 可通过一下方法在vc+工程中获得UG向导:将这两个文件放入VC+安装目录C:Program FilesMicrosoft Visual StudioCommonMSDev98Template下。3 液压缸的介绍3.1液压缸的分类和特点图3-1液压缸的分类图 3.1.1 活塞式液压缸3 (1) 定义:在缸体内作相对往复运动的且组件为活塞的液压缸。 (2) 分类:按伸出活塞杆不同可分为“双杆活塞式液压缸”及“单杆活塞式液压缸”。 按固定的形式可将类型分为“以缸体固定”及“以活塞杆固定”两种形式。 (3) 单杆活塞式液压缸图3-2单杆活塞式液压缸 a. 简单连接形式的单杆活塞缸特点: 两腔面积不等,。 压力相同时,推力不等; 流量相同时,速度不等。 即不具有等推力等速度性质。速度、推力计算: 无杆腔进油时: 有杆腔进油时: 故:活塞杆伸出时,推力较大,速度较小; 活塞杆缩回时,推力较小,速度较大。 活塞杆伸出时,适用于重载慢速; 活塞杆缩回时,适用于轻载快速。 往复速比: 结论:活塞杆直径愈小,两个方向速度差值愈小;工作过程和固定方式都与双杆活塞液压缸相同。运动行程:都为两倍的活塞或缸体的有效行程。 b. 差动连接的单杆活塞缸差动连接:单杆活塞液压缸两腔同时通入流体时,利用两端的面积差进行工作的连接情况。 速度、推力计算:故 要使,特点:能在不增加流量的情况下,实现快速运动。应用:单杆活塞液压缸不同连接,可实现不同的工作循环:表3-1 单杆活塞液压缸的不同连接形式单杆活塞液压缸的连接形式差动连接无腔杆进油有枪杆进油实现的运动形式快进工进快退速度与推力 c. 活塞缸的安装形式和选用:表3-2 活塞缸的安装形式及选用耳座式法兰式耳环式轴销式 (4) 双杆活塞式液压缸 图3-3 双杆活塞式液压缸原理示意图 特点: 1) 两腔面积相等。 2) 压力相同时,推力相等; 流量相同时,速度相等。.即具有等推力等速度性质。推力、速度计算: 缸体固定式液压缸:多为实心双杆式液压缸,其工作过程如下表3-3:表3-3 缸体固定式液压缸工作过程左腔进油,右腔回油活塞右移右腔进油,左腔回油活塞左移总结进油腔与活塞运动方向相反 运动行程:三倍于活塞的有效行程,占地面积较大,一般用于中、小型设备。 活塞杆固定式液压缸:一般形式为空心双杆式液压缸,其工作过程如下表3-4:表3-4 活塞杆固定式液压缸工作过程左腔进油,右腔回油缸体左移右腔进油,左腔回油缸体右移总结进油腔与缸体运动方向相同 运动行程:两倍于活塞的有效行程,占地面积小,一般用于大、中型设备。 3.1.2 柱塞式液压缸定义:柱塞在缸体内做相对往复运动的液压缸 结构:由缸体、柱塞、导向套、钢丝卡圈组成工作原理: 只能做单向运动,回程时所需条件:外力 弹簧力需要双向运动时,常常成对使用(如下图3-4) 图3-4 柱塞式液压缸(成对使用时)工作原理示意 速度、推力计算:特点: 柱塞工作时总是受压,一般柱塞较粗 水平放置时易下垂,易产生单边磨损故: 常垂直放置,有时可以做成空心又 缸体内壁与柱塞不发生接触 可不加工或只进行粗加工,工艺性好故: 常用于长行程机床,如 导轨磨床、龙门刨床、大型拉床等6 3.1.3 摆动液压缸 定义: 摆动缸在较小的空间内做扭转运动的液压缸分类: 单叶片式、双叶片式组成: 缸体、定子块、叶片、传动轴等工作原理:缸的一口进油一口出油叶片往一个方向摆动带动偏转一定角度 进油口出油口互换马达反转 图3-5 摆动液压缸示意图 参数计算: 双叶片摆动式液压马达:双 = 2单双 = 单/2特点:结构紧凑,输出转矩大,但是密封困难,一般只用于中低压系统 3.1.4 其他关于他常用的液压缸如:多级液压缸、增压液压缸和齿条活塞缸等,这里不再赘述.而在本次设计中,采用在生产实际上应用最为广泛的单杆活塞式液压缸作为本次参数化设计对象。4 预荷油缸的尺寸参数的确定4.1 液压缸的主要尺寸液压缸的主要尺寸包括: 液压缸内径D、活塞杆直径d、液压缸缸体长度L。 4.1.1活塞杆直径d 原则:活塞杆直径可根据工作压力或者设备类型选取; 当液压缸的往复速度比有一定的要求时: 计算所得的活塞杆直径d应该圆整为标准系列值。5 4.1.2液压缸内径D (1) 根据最大总负载和选取的工作压力来确定 以单杆缸为例:无杆腔进油时 有杆腔进油时 如果初步选取回油压力为,则上面两式可简化为: 无杆腔进油时 有杆腔进油时 其中F1,F2是油缸的预荷力 其中是材料屈服强度 是棒料直径 是下料长度 是切口深度 (2) 选定的液压泵流量和执行机构的速度要求来确定 无杆腔进油时: 有杆腔进油时: 计算所得液压缸的内径即所要求的活塞直径,应该圆整为标准系列值。 4.1.3 液压缸缸体长度L原则:由液压缸最大行程、活塞宽度(0.61.0)、活塞杆导向套长度、活塞杆密封长度及特殊要求的其它长度确定。其中,导向套长度由下表4-1确定:表4-1 导向套长度选取参照 注意:为了减小加工难度,一般液压缸缸体长度L不应大于内径的2030倍。4.2 液压缸的校核 4.2.1 缸体壁厚的校核 校核原则:中低压系统,无需进行校核 高压大直径时,必须进行校核 校核方法见下表4-2:表4-2 缸体壁厚的校核薄壁缸体(无缝钢管)后壁缸体(铸造缸体) 4.2.2 液压缸缸盖固定螺栓直径的校核 固定液压缸缸盖的螺栓在工作中会同时承受拉应力和剪切应力的影响 可按右式校核: 4.2.3活塞杆稳定性的验算当液压缸承受轴向压缩载荷时,对活塞杆的稳定性进行校核,校核方法见表4-3:表4-3 活塞杆稳定性的校核无须验算应该验算,可按材料力学有关公式进行4.3 动系统及元件缸内径及活塞杆外径选定标准 这里采用GB/T2348-93为依据选择了活塞杆外径标准。注意:本标准适用于液压拨动及元件用液压缸、气缸的情况,并规定了液压缸、气缸的缸内径和活塞杆外径。 4.3.1 液压缸的缸内径应符合下表4-4的规定7 表 4-4(mm)840125(280)10501403201263160(360)1680(180)40020(90)200(450)25100(220)50032(110)250 注:圆括号内尺寸为非优先选用项4.3.2 液压缸的活塞杆外径应符合下表4-5的规定 表 4-5(mm)205616052263180625702008288022010329025012361002801440110320164512536018501405 UG/Open API的介绍5.1 UG/Open API的基础知识UG/Open API(UG开放应用程序接口),也称作User Function(用户函数)。作为对于UG平台的二次开发软件的主要组成。其核心拥有大约2000个C函数,以此实现UG平台大部分的功能及操作。通过直接引用这些现存的C函数,UG的对象模型能够通过用户自编的程序进行查询并修改,处理使用者和UG界面的联动,控制UG的行为等。4 UG/Open API的常用功能包括: 使用户和UG对象模型之间的互动成为可能建立和编写用户自定义对象(UDO)理清UG各个对象间的联系,提供完整的方案以加强他们的显示与更新借助了UG菜单脚本和用户接口设计师,将所开发的程序集中整合到UG平台的菜单及对话框中,并能利用开发者设计UG的界面。通过用户程序自行构建Part文件,查询UG对象的数据,得出装配图及平面图等。UG/Open API被设计成能够实现UG与外部应用程序之间进行交互的接口。这些接口实质上是UG产生的多种函数与过程的整合,这些过程和函数可以通过C语言的编程来调用。8 其中Open C API包括:大部分的用户能够运用的过程和函数,可以用此来访问文件管理器、UG图形界面终端和UG本身的数据库.调用这些过程和函数还可以对对应的模型进行操作,包含UG模型的建立、编译、装配体的创建、遍历以及工程图的建立。一个UG内部的交互接口,可用以运行用户的应用程序。一般情况下,UG/Open API的函数和过程定义在$UG_BASE_DIRUGOPEN文件夹下的目录文件夹中。每个头文件都包含了一类函数用以实现一类功能。例如:在uf_disp.h头文件中包含了与显示相关及数据结构的定义。通常情况下,我们并不一定需要打开这些头文件来查看该文件所包含函数所具有的功能,这是因为UG的帮助文件提供了一种更为简便的查看方式。应用程序编写的进程中,运用“#include”指令将相应的头文件添加到源始程序中。因此,了解头文件所包含函数的功能还是十分重要的。如下图5-1列出了一些常用头文件的名称及描述:表5-1 常用头文件的名称及其描述头文件名称文件描述uf.hUG/Open API的公共类型和函数定义uf_assem.h与装配相关的函数和数据结构定义 续表5-1uf_attr.h与部件及对象属性相关的函数和数据结构定义uf_clear.h与间隙分析相关函数和数据结构定义uf_defs.hUG/Open API接口函数所需要的类型定义及结构定义uf_dirpath.h与目录及路径相关的函数及数据结构定义uf_disp.h与显示相关的函数及数据定义uf_draw.h与制图中中截面线(section lines),页面和视力等相关的函数和数据结构定义uf_drf.h与制图中符号,标注和尺寸等相关的函数和数据结构定义uf_exit.h与用户出口相关的函数和数据结构定义uf_fam.h与部件族相关的函数和数据结构定义uf_gdt.h与几何尺寸、公关相关的查询函数和断气结构定义uf_mb.h与MenuScript中对象的属性相关的函数和数据结构定义uf_modl.h与模型创建、查询相关的函数和数据结构定义uf_modl_features.h与特征建模相关的函数和数据结构定义uf_modl_general.h与普通建模相关的函数和数据结构定义uf_obj.h与UG对象及属性相关的函数和数据结构定义uf_object_types.hUG对象的类型定义uf_part.h与部件操作相关的函数和数据结构定义uf_styler.h与UIStyle相关的函数和数据结构定义uf_ui.h与用户界面功能相关的函数和数据结构定义uf_vec.h与向量操作相关的函数和数据结构定义uf_view.h与视图操作、查询相关的函数和数据结构定义 UG/Open API应用程序的源代码并不能被UG直接执行,和C程序一样必须通过编译形成动态链接库或可执行文件后才能发挥作用。针对程序运行的环境不同,UG/Open API程序又分为外部UG/Open API(External)和内部UG/Open API(Internal)两种形式。所有的UG/Open API函数都可用于内部UG/Open API方式,但不一定能够用于外部UG/Open API方式。如许多对屏幕显示特性操作的UG/Open API函数就只能用在内部UG/Open API方式下,在脱离UG Gateway的外部UG/Open API方式下运行时就会出错。区别UG/Open API函数适用的方式可以参考 UG/Open API Reference,其中对每个函数都有Internal和External的指明: Internal环境:以动态链接库的形式创建并编译内部UG/Open API 特点:结合UG Gateway 运行 形式:Uesr ExitUfuerUfsta 优点:采用动态链接库的形式,内部UG/Open API代码长度很短,能处UG的UI对象接口,和UG平台实行无缝连接并扩展了UG的功能。内部UG/Open API执行时的每一步都能从UG的窗口中得到相应的反应,因此客户能方便的通过UI对像与其进行交互,并能进行屏幕选取等的复杂操作。External环境:外部UG/Open API程序是可执行程序(.dll)特点:运行时通过Licence的支持,就可以由操作系统直接执行,不需启动UG Gateway优点:在UG Gateway之外运行,适用广缺点:不能和UG Gateway发生联系,无法利用UG平台的服务窗口即时的反馈运行结果 适用范围:多用于Part数据的建立、存取及管理或控制图形的输出,不是相互联系的几何形状的修改 5.1.1 UG/Open API应用程序的初始化与终止 任意的UG/Open API程序被规定必须正确进行初始化及中断以此确保获取及释放UG/Open API的执行及许可的权利。以下两个函数被提供用来进行此工作:UF_terminate()及UF_initialize()。程序中,为了获得执行及许可的权利,变量声明之后第一个被调用的UG/Open API函数一定是UF_initialize()。为了释放执行及许可的权利,最后一个调用的函数一定是UF_terminate()。同前述内部模式、外部模式应用程序的格式所示。 5.1.2 函数名称及参数规范UG/Open API中的函数有两类命名规范:一类是标准函数命名规范;另一类是固定函数命名规范。 (1) 标准函数命名规范: 标准函数的格式是UF_模块名_实现的功能 说明:不同级的字串间用“_”分开UF:表示UG/Open API函数.模块名_:通常是应用或模块首字母的缩写(abbreviation)。如:DISP和MODL分别是Display模块和Modeling功能首字母的缩写。实现的功能:是使用下划线侵害的描述性动词或名词,用心给出该函数功能或者作用的提示。例如:UF_MODL_create_cylinder()是Modeling模块中创建圆柱体或者作用的提示。 (2) 固定函数命名规范: 标准函数的格式是uc说明:为与老版本的UG程序兼容而保留uc表明是UG/Open API的C函数,通常是三位数或四位数接一个字母.例如:uc1601是状态栏或消息框中显示字符串信息。固定的命名规则不便于函数的查找。在一定的程序上影响了代码的可读性,而且这些函数正被标准函数所取代,因此在编写代码的过程中应该尽量使用标准函数。在实际操作过程中,对于有些固定函数,由于其参数少、使用方便等特点,仍然被广泛的使用。 (3) 参数约定 由于遵循ANSI/ISO C的标准,UG/Open API所对应的头文件中都有函数的原型。函数的格式一般如下: (变量列表) “回复的数据类型”一般指是C语言数据类型或者由UG/Open API所定义的数据的类型。参数一共有三种方式进行输入与输出:I、O或者OF,说明见下表5-2表5-2 参数输入方式说明元素描述I代表参数是一种输入方式,在使用前必须对其赋值O代表参数是一种输出方式,无需在使用前对其赋值OF代表参数是一种输出方式,使用结束后要释放内存。用于释放内存的函数有UF_free()、UF_free_string()和UF_STYLER_free_value()等,要根据实际情况选择使用哪个函数。名称:UF_PART_open 使用环境: Internal(内部模式) & External(外部模式) 语法格式: Int UF_PART_open( char *part_name, tag_t *part, UF_PART_load_status_t *error_status ); 描述:将UG文件加载到对应的UG环境中,并对它进行相应的设定。该函数的描述见下表5-3:表5-3函数UF_PART_open()参数描述参数输入输出类型描述part_name输入char *要打开的部件文件名part输出tag_t *打开部件的标识,当打开部件文件失败时为NULL_TAG 续表 5-3 error_status输出UF_PART_load_status_t *当加载部件失败时该结构中将包含错误代码和部件文件名称,使用结束后应使用函数UF_free_string_arry()和UF_free()释放内存return输出int返回代号: 为0时表示正常; 非0时表示错误代号 (4) 数据类型 数据类型除了C语言的数据类型外,还包括一些自定义的数据类型,如tag_t类型、结构类型(structure type)、枚举类型(enum type)、联合类型(union type)与指针类型(pointer type)等,统一利用后缀“_t”表示,并且这些数据类型的指针用反缀“_p_t”命名表示。数据类型约定如下表5-4所示:表5-4 数据类型约定后缀描述_t数据类型_p_t数据类型的指针_s结构标识_u_t联合类型_u_p_t联合类型的指针_f_t函数指针 tag_t数据类型tag_t是在UG/Open API中运用最广的数据形式 ,UG/Open API的uf_defs.h中定义如下: typedef unsigned int tag_t ,*tag_p_t; 在UG环境中,tag_t 是UG对象的句柄,并作为辨别UG对象模型的唯一标志。作为无重复且没符号的数值,绝大多数用以标识应用程序里的对象,如部件、草图、曲线等。程序只能访问句柄,句柄所指代的实际对象无法被直接访问。获取句柄一般通过直接调用API函数,并在别的API函数中直接调用此句柄,以引入它所指代的对象。这个过程中,句柄的实际值对程序并无影响。此外,tag_p_t是指向tag_t数据类型的指针。 这里以如下代码为例来说明tag_t的使用方法:tag_t disp_part_tag;int part_units;char part_nameMAX_FSPEC_SIZE;disp_part_tag=UF_PART_ask_display_part();UF_PART_ask_units(disp_part_tag,&part_units);UF_PART_ask_part_name(disp_part_tag,part_name); 这段代码中首先通过UF_PART_ask_display_part()函数获得显示部件的tag_t,之后再使用该tag_t,调用函数UF_PART_ask_units()和UF_PART_ask_part_name()获得部件的单位和文件名。 5.1.3 UG对象类型及操作 UG中的所有对象都是通过唯一的tag_t值进行标识,对象的类型大致可分为以下三类:部件对象 (Part object); UF对象 (UF objects);表达式 (Expressions); (1) 部件对象: 部件对象包含了零件大量的几何信息与非几何信息,是UG最基本的操作对象之一。其中,非几何信息包括:计算机的类型;保存部件所运用的UG版本;部件所包含的历史信息;部件中所包含的各种永久性的信息。 表5-5 对部件对话操作的函数函数描述UF_OBJ_cycle_objs_in_part()在部件中查询对象UF_ATTR_ask_part_attrs()访问部件的属性UF_PART_close() UF_PART_reopen()关闭和再打开部件UF_PART_ask_part_name()获取部件的文件名 UF_PART_ask_customer_area() UF_PART_ask_description() UF_PART_ask_status()查询其他信息,包括:查询用户定义的数据、部件文件的描述信息,部件文件的状态信息 UF_PART_ask_part_history()查询部件文件的历史UF_PART_ask_compression_flags() UF_PART_set_compression_flags()查询及设置部件文件的压缩标记 (2) UF对象: UF对象是那些具有标识的实体、包括几何对象和非几何对象。几何对象包括点、线、面、实体等;非几何对象有坐标系、矩阵、尺寸等。UG中所有具有标识的实体,如点、线、面、基准等,都可以称为对象。模型中包含的对象包括几何实体对象、非几何对象。UF利用类型与子类型来辨别部件文件中的不同对象。每个UF对象都有一种类型,在头文件uf_object_types.h中,对象类型和子类型都被进行了完整的定义,UF对象可以通过子类型进行详细的描绘,但子类型并不是普遍存在的。 UG/Open API提供的访问和操作UF对象的函数包括UF对象的查询、遍历、等。对象操作函数请参考头文件uf_obj.h中的定义。表5-6 UF对象基本操作属性函数描述UF_OBJ_set_name() UF_OBJ_ask_name() UF_OBJ_delete_name()指定、查问及删除单个对象的名称 UF_OBJ_cycle_objs_in_part() UF_OBJ_cycle_all() UF_OBJ_cycle_by_name() UF_LAYER_cycle_by_layer()查询遍历对象,可以在指定部件中遍历对象,在当前工作部件中遍历对象,通过对象名称和图层查询对象 UF_MODL_delete_exp() UF_MODL_delete_feature() UF_OBJ_delete_object() UF_OBJ_delete_array_of_objects() 对象删除UF_UI_select_single() UF_UI_select_by_class() UF_UI_select_feature() UF_UI_select_sketch()对话选择 对象状态 对象的状态可通过使用函数UF_0BJ_ask_status()来查询。对象共有下列几种状:表5-7 up对象状态标识状态标识描述UF_OBJ_DELETED被删除的状态UF_OBJ_TEMPORARY临时状态。例如临时坐标系由UF_CSYS_create_temp_csys函数创建,不会被保存 续表 5-7UF_OBJ_CONDEMNED 不正常状态。一般由于对象被删除,但它是其它对象的参考,只有所有的这些参考被删除后,该对象才从模型中被删除,该状态的对象永远不被显示UF_OBJ_ALIVE激活状态 对象访问 在创建对象时,可以直接得到对象标识。多数情况下需要查询存在于文件中的现存对象。一般可能通过以下两种方法来确定UF对象的标识:一是循环法。即可在获取目标体上面标识的循环过程中,插入下段程序。程序会显示于目标上方并出现一个要用户确定的对话框,其中显现对象的标志。其中tem_tag为目标体上表面的标识。 UF_DISP_set_highlight(tem_tag,1); Sprintf(mess, The object is %d!, i); uc1601(mess, 1); UF_DISP_set_highlight(tem_tag,0);二是参数法。即可利用函数UF_MODL_ask_face_data获得目标体上表面的参数,包括表面的法向和表面的原点等信息。 设置可显示的UF对象信息的函数。 UG/Open API提供了对可显示的UF对象的层、颜色、线型等属性进行设置和查询的接口。注意除了高亮状态外,其他信息都可以保存到part文件中。表5-8 设置可显示up对象函数函数描述UF_OBJ_ask_display_properties()用于查询可显示UF对象的显示属性 UF_OBJ_set_layer()用于设置可显示UF对象的层 UF_0BJ_set_color()用于设置可显示UF对象的颜UF_0BJ_set_blank_status()用于设置可显示UF对象的blank状态UF_OBJ_set_line_width()用于设置可显示UF对象的线型UF_OBJ_set_font()用于设置可显示UF对象的字体UF_DISP_set_highlight()用于设置可显示UF对象的高亮(highlight)状态 (3) 表达式:表达式的定义:表达式提供UG中的参数化建模的机制,表达式能控制特征,特征也随表达式的变化而改变。 表达式的形式一般是:“name = value”。 表达式名的首字符必须用字母表示,其他的字符可以用数字、字母、下划线等代替。表达式名是大小写敏感的,一个部件文件中的表达式名应唯。表达式值可以是数字和条件等式,表达式名可以用于表达式值中。 表达式的使用:UF函数允许用户创建、查询和编辑表达式和几何表达式,对表达式进行各种操作的函数包含在头文件uf_modl.h中,对几何表达式进行各种操作的函数包含在头文件uf_gexp.h中。 如果表达式串中,仅仅提供表达式值,UG软件会自动给它个名字。如表达式串定义如下: “diameter2” UG会赋给它一个类似“p0”的名字。建议按下列形式赋值 “radius = diameter2 ” 可以用函数UF_MODL_create_exp()创建表达式;当需要得到创建的表达式的标签时,使用函数UF_MODL_create_exp_tag()。常用表达式操作函数如表5-9所示:表5-9 常用表达式操作函数函数描述UF_MODL_create_exp()创建表达式,没有返回UF_MODL_create_exp_tag()创建表达式,返回新建表达式的标识UF_MODL_import_exp()从文件输入表达式,即可引用其它部件的表达式文件,操作完成后必须用函数UF_MODL_update()更新数据库UF_MODL_dissect_exp_string()分解名字和值返回名字、值和表达式的标UF_MODL_eval_exp()输入表达式的名,返回表达式的值UF_MODL_edit_exp()用新的值替换表达式中原有的值。使用后应用函数UF_MODL_update()来更新模型UF_MODL_rename_exp()给已有表达式赋新的名称UF_MODL_ask_exp()返回表达式名和表达式值UF_MODL_ask_exps_of_feature()返回制约某特征的所有表达式的标识UF_MODL_ask_exps_of_part()返回某部件文件的所有表达式的标识UF_MODL_ask_exp_tag_string()输入表达式标识,返回该表达式串UF_MODL_ask_exp_tag_value()通过表达式标识获得表达式值 6 创建UG应用程序的用户界面 通过上面的一些介绍,我们对液压缸的结构、组成、设计原则以及UG建模、UG/Open API 函数有了初步了解。在些基础上,我们就可以用Visual C+在UG平台上对有关液压缸的建模操作进行参数化设计的二次开发.下面将详细说明如何运用MenuScript 菜单技术和UIStyle对话框技术对液压缸的参数化设计进行用户界面的设计。6.1 MenuScript菜单技术 6.1.1 简介 UG/Open MenuScript是UG/Opend的一个重要的构成成分,支持UG平台中菜单的构建与修改,并可利用它改变菜单格局、增加新的工具条和菜单项,将用户所需的功能集成于所生成的菜单中,通过以下两种途径可以实现利用MenuScript而对用户菜单进行定制: 创建并编辑纯文本的菜单脚本文件(.men),修整UG主菜单和下拉菜单,从而不需要开发对应的C语言程序。 通过C/C+语言编译功能调用UG/Open API提供的MenuScript API函数和程序开发来制定用户菜单。MenuScript同时也提供了一个菜单栏报告工具,以帮助用户查看菜单的极意,诊断错误项。自定义可分为下面三种类型: 自定义UG功能许可个人用户、管理人员或者添加准确的UG功能,并且加载自己定义的各项功能。 自定义菜单个人用户或者管理员可以被允许重新安排UG的功能,除去开发中多余的功能。该自定义不需要通过编程来实现。 用户自定义应用的添加该级别的自定义可以将应用程序集中于用户或者第三方的开发商所开发的应用程序中。该自定义可以通过编程将其实现。 UG的菜单文件为扩展名为.men的纯文本文件,可以通过Windows系统中的记事本对其进行编辑。MenuScript提供了一套用于用户自定义UG菜单的脚本语言。UG作为主菜单、快捷菜单提供了系统极意文件,这些文件默认情况下都在UGII_BASE_DIR/ugii/menus文件夹下。 6.1.2 菜单脚本文件及其语法 我们采用以下语句来建立MenuScript,并以此作为例子说明菜单脚本文件的语法: VERSION 120EDIT UG_GATEWAY_MAIN_MENUBARBEFORE UG_HELPCASCADE_BUTTON CUSTOM_UI_MENULABEL 油缸参数化设计END_OF_BEFOREMENU CUSTOM_UI_MENUCASCADE_BUTTON canshuhuashejiLABEL 参数化设计BUTTON PresetLABEL 载荷预设置. ACTIONS yougangcanshuhuasheji.dlg END_OF_MENUMENU canshuhuashejiBUTTON child1LABEL 缸筒的参数化设计. ACTIONS gangtong.dlg BUTTON child2LABEL 活塞的参数化设计. ACTIONS huosai.dlg BUTTON child3LABEL 卡键帽的参数化设计. ACTIONS kajianmao.dlg END_OF_MENU 用Windows的记事本建立以上字符的.men文件。 表6-1 MenuScript关键词声明语句说明VERSION 120菜单脚本文件的版本信息EDIT UG_GATE_WAY_MAIN_MENUBAR编辑UG系统菜单文件BEFORE UG_HELP之后定义的内容将位于“帮助“菜单之前CASCADE_BUTTON CUSTOM_UI_MENU定义CASCADE按钮,点击这种按钮将弹出下拉菜单,该按钮的名称为“CUSTOM_UI_MENU “,该名称必须出现在相应的MENU声明中LABEL 油缸参数化设计系统CASCADE按钮的标题为“油缸参数化设计系统”END_OF_BEFORE结束BEFORE定义,与BEFORE UG_HELP相对应MENU CUSTOM_UI_MENU声明要定义名为CUSTOM_UI_MENU菜单,其名称与之前的CASCADE按钮的名称相对应CASCADE_BUTTON canshuhuasheji定义CASCADE按钮,点击这种按钮将弹出下拉菜单,该按钮的名称为“canshuhuasheji “,该名称必须出现在相应的MENU声明中LABEL参数化设计定义canshuhuasheji的标题为“参数化设计”BUTTON Preset定义按钮Preset,定义按钮的名称为PresetLABEL 载荷预设置.定义Preset标题为“载荷预设置”ACTIONS yougangcanshuhuasheji.dlg定义点击Preset的相应行为,激发yougangcanshuhuasheji.dlg对话框END_OF_MENU结束MENU定义MENU canshuhuasheji声明要定义名为canshuhuasheji菜单,其名称与之前的CASCADE按钮的名称相对应BUTTON child1定义按钮child1,定义按钮的名称为child1 LABEL 缸筒的参数化设计.定义child1标题为“缸筒的参数化设计”ACTIONS gangtong.dlg定义点击child1的相应行为,激发gangtong.dlg对话框BUTTON child2定义按钮child2,定义按钮的名称为child2LABEL 活塞的参数化设计.定义child2标题为“活塞的参数化设计”ACTIONS huosai.dlg定义点击child2的相应行为,激发huosai.dlg对话框BUTTON child3定义按钮child3,定义按钮的名称为child3LABEL 卡键帽的参数化设计.定义child3标题为“卡键帽的参数化设计”ACTIONSkajianmao.dlg定义点击child3的相应行为,激发kajianmao.dlg对话框END_OF_MENU结束MENU的定义 其中,CASCADE_BUTTON、VERSION、HIDE和LABEL等都属于UF/Open MenuScript脚本语言的关键词。这些关键词的作用在表6-1中已经作出说明。除了以上关键词声明之外,UG/Open MenuScript另外还饯行一些其他关键词,这些关键词的作用如下表6-2所示:表6-2 其他MenuScript关键词声明关键词声明说明CREATE指定菜单文件为创建模式,另外一种模式为EDIT编辑模式TITLE用于以工具栏指定标题TOP_MENU添加一系列的按钮到顶层菜单,对于顶层CASCADE按钮END_OF_TOP_MENU与TOP_MENU相对应,说明顶层菜单定义的结束MODIFY对于存在的按钮的修改其标题、行为等,不改变其位置AFTER在一指定的BUTTON后添加一系列的BUTOONEND_OF_AFTER与AFTER相对应,AFTER声明的结束SHOW隐藏指定的BUTTONHIDE与SHOW相反,显示指定的BUTTONAPPLICATION_BUTTON定义应用按钮 6.1.3 按钮的行为 菜单脚本文件通过ACTIONS声明来指定菜单项所对应的响应行为,这些行为包括GRTIP程序、UG/Open API程序、UG对话框以及用户工具定义文件等。这其中最常用的相应行为是UG/Open API程序和UG对话框。菜单响应UG/Open API程序为了给某个按钮添加UG/Open API响应,可以在应用程序中添加如下代码:UF_MB_cb_sbtatus_tUSER_Menu_Callback(UF_MB_widget_t,UF_MB_data_t,UF_MB_activated_button_p_t);static UF_MB_actions actionTable= “USER_MENU_ACTION”,USER_Menu_Callback,NULL NULL,NULL,NULL;extern “C”DllExport void ufsta(char*param,int*returnCode,int rlen) /Initalize the API environment int errorCode= UF_initialize(); if|(0!=errorCode) return; UF_MB_add_actions(actionTable); UF_terminate();可以看到,在菜单文件中定义该按钮的ACTIONS为USER_MENU_ACTION,在代码中定义了函数USER_Menu_Calback()。在代码的actionTable中,按钮的ACTION与回调函数被联系了起来。actionTable是以NULL结尾的UF MB_action_t结构数组。 (1) 缸筒按钮直接设置按钮的ACTIONS为某个对话框文件,如ACTIONS GANGTONG.dlg。点击该菜单按钮,可以直接打开一对话框.此时应用程序中相关的代码为: static UF_STYLER_callback_info_t GANGTONG_cbsGANGTONG_CB_COUNT = /对话框及其控件所对应的回调函数 UF_STYLER_DIALOG_INDEX, UF_STYLER_DESTRUCTOR_CB,0,GANGTONG_destory, UF_STYLER_DIALOG_INDEX, UF_STYLER_CANCEL_CB,0,GANGTONG_cancel, UF_STYLER_NULL_OBJECT, UF_STYLER_NO_CB,0,0 ; static UF_MB_styler_actions_t act3 = gangtong.dlg, NULL, GANGTONG_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); printf ( %sn, fail_message ); UF_terminate();此处以调用GANGTONG.dlg为例进行了说明。与菜单调用API应用相似,ACTIONS是以NULL结尾的UF_MB_styler_actions_t结构数组,GANGTOGN_cbs是对话框中注册的回调函数。极意按钮的ACTIONS直接指向某一对话框文件,系统会直接从相应的applications文件查找并显示该对话框,在ufsta()入口函数中使用函数UF_MB_add_styler_actions()注册了对话框包含的回调函数,至此占地对话框的相应控件即可激活对应的回调函数.实际上,在使用UG的UIStyle模块创建对话框时可以指定其是否从菜单激活,如果是,UG会自动生成以上代码,不需要手工添加。 (2) 活塞按钮 static UF_STYLER_callback_info_t HUOSHAI_cbsHUOSHAI_CB_COUNT = /对话框及其控件所对应的回调函数UF_STYLER_DIALOG_INDEX, UF_STYLER_DESTRUCTOR_CB,0,HOUSAI_destory,UF_STYLER_DIALOG_INDEX, UF_STYLER_CANCEL_CB ,0,HOUSAI_cancel,UF_STYLER_NULL_OBJECT, UF_STYLER_NO_CB,0, 0 ;static UF_MB_styler_actions_t act1 = huosai.dlg, NULL, HUOSAI_cbs, UF_MB_STYLER_IS_NOT_TOP , NULL, NULL, NULL, 0 /* This is a NULL terminated list */;if ( (error_code = UF_MB_add_styler_actions ( act1) ) != 0 ) char fail_message133; UF_get_fail_message(error_code, fail_message); printf ( %sn, fail_message ); UF_terminate(); (3) 卡键帽按钮 static UF_STYLER_callback_info_t KAOJIANMAO_cbsKAOJIANMAO_CB_COUNT = /对话框及其控件所对应的回调函数UF_STYLER_DIALOG_INDEX,UF_STYLER_DESTRUCTOR_CB ,0,KAJIANMAO_destory,UF_STYLER_DIALOG_INDEX,UF_STYLER_CANCEL_CB ,0,KAJIANMAO _cancel,UF_STYLER_NULL_OBJECT, UF_STYLER_NO_CB, 0, 0 ;static UF_MB_styler_actions_t act4 = kaojianmao.dlg, NULL, KAOJIANMAO_cbs, UF_MB_STYLER_IS_NOT_TOP , NULL, NULL, NULL, 0 /* This is a NULL terminated list */;if ( (error_code = UF_MB_add_styler_actions ( act4) ) != 0 ) char fail_message133; /* Get the user function fail message based on the fail code.*/ UF_get_fail_message(error_code, fail_message); printf ( %sn, fail_message ); UF_terminate(); 6.2 UIStyle对话框技术 UG/Open UIstyle模块为用户提供了强大的可视化制作UG风格对话框的功能。不仅可以精准的生成所需要的对话框,系统还可以自动对应相应的对话框生成相对应的C语言模板文件,使得开发对话框的应用变得简单、快捷。在UG中,单击下拉菜单【开始】【所有应用模块】【用户界面样式编辑器】,进入UIStyle模块。至此我们可以建立UG API应用程序对话框。 6.2.1 缸筒的参数化设计的对话框 如图6-1进行“缸筒”对话框的属性及回调函数的设置: 图6-1 对话框的属性及回调函数 对话框的属性与回调函数设置如下表6-1: 表6-1 “缸筒”对话框的属性与回调函数属性属性值回调函数对话框标题缸筒应用:GANGTONG_apply线索根据输入参数值建模缸筒确定:GANGTONG_ok前缀GANGTONG取消:GANGTONG_cancel对话框类型全部构造器:GANGTONG_construct调用对话框,自回叫按钮式样选项确定、应用和取消允许重设对话框大小 如图6-2添加图形图像到对话框(位图为图片所在路径): 图6-2 对话框的属性及回调函数 如图6-3在对话框中依次创建多个接受实数的输入字段(初始实型值见图6-5): 图6-3 对话框中依次创建多个接受实数的输入字段 对于其中一些重要控件的属性设置如下图6-4: 图6-4 对话框中的控件 对于对话框中重要控件的布局设置描述如表6-2所示: 表6-2 对话框中的控件的布局设置控件ID和标签俯视图左右GANGTONG_BITMAP_0对话框对话框无GANGTONG_STR_1长度1对话框对话框对话框GANGTONG_STR_2长度2GANGTONG_STR_1_ITEM对话框对话框GANGTONG_STR_3长度3GANGTONG_STR_2_ITEM对话框对话框GANGTONG_STR_4长度4GANGTONG_STR_3_ITEM对话框对话框 续表 6-2GANGTONG_STR5角度1GANGTONG_STR_4_ITEM对话框对话框GANGTONG_STR6角度2GANGTONG_STR_5_ITEM对话框对话框GANGTONG_STR7直径1GANGTONG_STR_6_ITEM对话框对话框GANGTONG_STR8直径2GANGTONG_STR_7_ITEM对话框对话框GANGTONG_STR9直径3GANGTONG_STR_8_ITEM对话框对话框 如图6-5设计对话框界面样式及其中所包含的控件: 图6-5 缸筒的参数化设计的对话框 创建好对话框后,将其保存为文件名为gangtong.dlg的文件,此时系统会自动生成gangtong_template.c和gangtong.h两个头文件,分别更名为gangtong.cpp和gangtong.h备用。 6.2.2 活塞的参数化设计的对话框 对话框的属性及各重要控件的设置可参照上面所提到的“缸桶”的设置步骤 对话框的属性与回调函数设置如下表6-3: 表6-3 “活塞”对话框的属性与回调函数属性属性值回调函数对话框标题活塞应用:HUOSAI _apply构造器:HUOSAI _construct前缀HUOSAI取消:HUOSAI _cancel对话框类型全部调用对话框,自回叫按钮式样选项确定、应用和取消允许重设对话框大小是 对于其中一些重要控件的属性设置如图6-6所示: 图6-6 活塞对话框中的控件 其中的布局设置描述如表6-4所示:表6-4 活塞对话框中的控件的布局设置控件ID和标签俯视图左右HUOSAI _BITMAP_0对话框对话框无HUOSAI_STR_1长度L1HUOSAI_BITMAP_0_ITEM对话框对话框HUOSAI_STR_2长度L2HUOSAI_BITMAP_1_ITEM对话框对话框HUOSAI_STR_3长度L3HUOSAI_BITMAP_2_ITEM对话框对话框HUOSAI_STR_4长度L4HUOSAI_BITMAP_3_ITEM对话框对话框HUOSAI_STR_5长度L5HUOSAI_BITMAP_4_ITEM对话框对话框HUOSAI_STR_6长度L6HUOSAI_BITMAP_5_ITEM对话框对话框HUOSAI_STR_7长度L7HUOSAI_BITMAP_6_ITEM对话框对话框HUOSAI_STR_8长度L8HUOSAI_BITMAP_7_ITEM对话框对话框HUOSAI_STR_9半径dw1HUOSAI_BITMAP_8_ITEM对话框对话框HUOSAI_STR_10半径dw2HUOSAI_BITMAP_9_ITEM对话框对话框HUOSAI_STR_11半径dw3HUOSAI_BITMAP_10_ITEM对话框对话框HUOSAI_STR_12半径dw4HUOSAI_BITMAP_11_ITEM对话框对话框HUOSAI_STR_13半径dw6HUOSAI_BITMAP_12_ITEM对话框对话框HUOSAI_STR_14角度a1HUOSAI_BITMAP_13_ITEM对话框对话框 如下图6-7所示设计对话框界面样式及对话框所包含的控件: 图6-7 活塞的参数化设计的对话框 创建好对话框后,将其保存为文件名是huosai.dlg的文件,此时系统会自动生成huosai_template.c和huosai.h两个头文件,分别将其更名为huosai.cpp和huosai.h备用。 6.2.3 卡键帽的参数化设计的对话框 对话框的属性及各重要控件的设置也可参照上面所提到的“缸桶”的设置步骤 对话框的属性与回调函数设置如下表6-5所示:表6-5 “卡键帽”对话框的属性与回调函数属性属性值回调函数对话框标题卡键帽应用:KAJIANMAO_apply确定:KAJIANMAO_ok前缀KAJIANMAO对话框类型全部构造器:KAJIANMAO_construct调用对话框,自回叫按钮式样选项确定、应用和取消允许重设对话框大小是 如图6-8所示为对其中一些重要控件的属性设置:图6-8 对话框中的控件的布局设置其中的布局设置描述如表6-6所示:表6-6 卡键帽对话框中的控件的布局设置控件ID和标签俯视图左右KAJIANMAO_BITMAP_0对话框对话框无KAJIANMAO_STR_0角度a1KAJIANMAO_BITMAP_0_ITEM对话框对话框KAJIANMAO_STR_2角度a2KAJIANMAO_STR_0_ITEM对话框对话框KAJIANMAO_STR_3长度L1KAJIANMAO_STR_2_ITEM对话框对话框KAJIANMAO_STR_4长度L2KAJIANMAO_STR_3_ITEM对话框对话框 续表 6-6KAJIANMAO_STR_5长度L3KAJIANMAO_STR_4_ITEM对话框对话框KAJIANMAO_STR_6长度L4KAJIANMAO_STR_5_ITEM对话框对话框KAJIANMAO_STR_7半径dw1KAJIANMAO_STR_6_ITEM对话框对话框KAJIANMAO_STR_8半径dw2KAJIANMAO_STR_7_ITEM对话框对话框KAJIANMAO_STR_9半径dw3KAJIANMAO_STR_8_ITEM对话框对话框 如下图6-9设计对话框界面样式及所包含的控件:图6-9 卡键帽的参数化设计的对话框 创建好对话框后,将其保存为文件名是kajianmao.dlg的文件,此时系统会自动生成kajianmao_template.c和kajianmao.h两个头文件,分别将其更名为kajianmao.cpp和kajianmao.h备用。 至此,三个主要对话框建立成功。下一步,是将.cpp和.h复制到oildesign文件夹下,再把他们添加到VC+程序中,在其中增加和修改语句,以实现调用函数的建模功能。 6.2.4 载荷预设值的对话框 如图6-10所示为对其中一些重要控件的属性设置(设置方法可参照上面各步骤):图6-10 对话框中的控件的布局设置 如下图6-11设计对话框界面样式及所包含的控件:图6-11 载荷预设值的对话框 说明:控件的设置与缸筒、活塞、卡键帽的设置相同.在原始设计参数栏中输入油缸的原始设计参数,然后可以得到油缸的其他尺寸参数。将生成的yougang_template.c和yougangcanshuhuasheji.h两个头文件,分别将其更名为yougangcanshuhuasheji.cpp和yougangcanshuhuasheji.h.将这两个文件复制到oildesign文件夹下,再把他们添加到VC+程序中,在其中修改和增加语句,以实现由原始参数通过调用函数得出其他所需参数的功能。7 编译环境设置7.1 创建VC+启动VC选择 文件新建 在工程名称中输入要建立的工程名,选择Unigraphics NX AppWizard V1点击确定 再选择内部应用点击完成 再File View视图窗口中添加工程中的源程序及其头文件,VC+项目创建成功7.2 配置调试环境 进入工程设置C/C+页 把“分类”设定为Code Generation,把Use run-time library设定为Multithreaded DLL 选择“连接”页,在“输出文件名”文本框中输入最终编译链接成的DLL文件名,在“对象/库模块”文本框中,加入需要的库名:UG NX外部UF,需输入libufun lib;内部UF需要加入libugopenint.lib 进入“工具”选项目录 把目录设定为Include files,在路径中添加UG/OPEN API头文件的所有目录 对于UG/OPEN API的内部形式,方便于程序的调试,进入工程设置调试页,将UG NX主执行文件ugraf.exe加入到“可执行调试对话”文本框中8 编写UG/Open API程序8.1简介 UG中的对象包括几何对象和非几何对象,在UG内部使用标识进行引用.几何对象包括实体(body)、特征(feature)、面(face)和边(edge)等.非几何对象包括坐标系、矩阵、尺寸等。8.2 创建应用程序主体函数建模函数 本次设计中均采用草图拉伸(或草图旋转),需事先对相关液压缸的结构作了分析,提取出结构中的关键尺寸,以供用户定义,这样节省了用户操作量,提高了工作效率。 8.2.1 缸筒建模函数10 double radius,PointY9,PointZ9; / 定义YZ平面内的9个点 double orgin3=0,0,0,direction3=0.0,1.0,0.0;以Y轴为旋转轴uf_list_p_t list,feature_list;UF_CURVE_line_t line_coords;tag_t line9; / 得到9条线的标示.详细可见附录 8.2.2 卡键帽的建模函数 double radius,PointY8,PointZ8;double orgin3=0,0,0,direction3=0.0,1.0,0.0;uf_list_p_t list,feature_list;UF_CURVE_line_t line_coords;tag_t line8;.详细可见附录 8.2.3 活塞的建模函数 double radius,PointY20,PointZ20;double orgin3=0,0,0,direction3=0.0,1.0,0.0;uf_list_p_t list,feature_list;UF_CURVE_line_t line_coords;.详细可见附录 8.2.4 预荷油缸参数化设计函数 #define YOUGANG_REAL_1 (REAL_1)UF_STYLER_item_value_type_t data;data.item_attr=UF_STYLER_VALUE;data.item_id=YOUGANG_REAL_1;UF_STYLER_ask_value(dialog_id,&data);.详细可见附录 8.2.5 传递函数 (1)将YOUGANG_REAL_6中的值传递给GANGTONG_STR_8中也就是将middledata传递给GANGTONG_STR_8. 在gangtong.cpp文件中线定义extern int middledata;外部变量 char* value100; UF_STYLER_item_value_type_t data; data.item_attr=UF_STYLER_VALUE; data.item_id=GANGTONG_STR_8;.详细可见附录 8.3 应用程序的自动加载 8.3.1 应用程序的自动加载这里介绍两种自动加载的方法: 找到C:Program FilesUGSNX 6.0UGIImenus中的,如下图8-1在其中加入程序所在的目录,保存即可。图8-1 找到C:Program FilesUGSNX 6.0UGII中的,如下图8-2在其中加入程序所在目录,保存即可。图8-2此时,启动UG时就可以自动加载应用程序。8.4 应用程序的运行结果 8.4.1 应用程序的运行结果启动UG后程序自动加载显示功能模块如图8-3所示图8-3 选取相应功能即可生成对应图像: 图8-4 缸筒图8-5 活塞图8-6 卡键帽9 结论与展望9.1 结论 通过这次设计的过程,学习到了如何对UG平台进行二次开发,并认识到了经过二次开发的UG系统软件可以快捷的读取所需油缸各部件的参数,快速的建立油缸的参数化模型,在个别参数发生变化的情况下也能快速重新生成新的模型,提高了机械设计的效率。9.2 不足之处及未来展望通过这次设计也从中认识到了许多不足之处,由于对于UG各项功能的不熟悉,在进行对话框的设计过程中也出现了许多问题,例如对话框中的各控件排布混乱及控件参数发生错误等。另一方面,由于VC语言方面比较薄弱,在程序的编译过程中遇到了许多困难,输入的参数不是很精确导致最终程序无法成功运行。由此可以看出,此次对于油缸的参数化设计只是在UG二次开发道路上的一个起步,想要在此方面更进一步还需要进行更多的学习与联系。致 谢 由于VC语言编程与UG方面的知识较为薄弱,在设计的过程中遇到了许多不懂得地方导致设计进程的暂时中断,在这里要特别感谢我的指导老师俞经虎副教授,能在我不懂的时候及时的提点我!同时也要感谢我的同学能在我不懂的地方帮助我! 55基于UG平台的油缸的参数化设计参考文献 1 李志国,邵立新,孙江宏.UG NX6.0中文版基础教程M.北京:清华大学出版社,2003:3-6.2 谭浩强.C程序设计(第三版)M.北京:清华大学出版社,2001:6-7.3 濮良贵,纪名刚.机械设计(第八版)M.北京:高等教育出版社,2003:9-124 赵韩,朱可.基于UG二次开发的参数化零件族系统 N .合肥工业大学学报 ,2006:18-205 冯之敬.机械制造工程原理(第二版)M.北京:清华大学出版社,2002:15-176 孟少农.机械加工工艺手册M.北京:机械工业出版社 ,1992:13-147 王文斌 .机械设计手册M.北京:机械工业出版社,2004:17-188 李玉胜,孙殿柱,刘信奎.UG 软件的二次开发研究与应用N.山东:淄博学院学报,2002:19-21 9 孙鑫,余安萍.VC+ 深入详解M.北京:电子工业出版社,2006:7-8 10 胡峪,刘静.VC+ 编程技巧与示例M.西安:西安电子科技大学出版社,2000:55-5711 Y ZHANG,X LUO.Development of Parametric Standard Parts Library Based on UG/Open API TechnologyJ.Computer Engineering,200212 L WANG.The Study of Secondary Development of UG by the UG/Open APIJ.Development & Innovation of Machinery,200013 LI Yu-sheng.Study and Application of the Second Development Based on UGJ.Journal of Zibo University,200414 Z CHEN.Research about How to Use MFC in the Second Development of UGJ.Machine Tool & Hydraulics .200615 QIN Jianzhou. Feasible zone of punching direction of automobile Panel by UG/Open API prograedngJ.Metalforming Machinery.2002 附 录 8.2.1 缸筒建模函数 double radius,PointY9,PointZ9; / 定义YZ平面内的9个点 double orgin3=0,0,0,direction3=0.0,1.0,0.0;以Y轴为旋转轴uf_list_p_t list,feature_list;UF_CURVE_line_t line_coords;tag_t line9; / 得到9条线的标示 tag_t m_ext_tag; tag_t m_chamfer_tag,m_revolve_tag,m_mirror_tag; tag_t m_part_tag; tag_t p_hole_tag;char *limit2=0.0,360.0;/旋转界面:0.0为起始角,360.0为终止角int err,i;double d1,d2;/定义缸筒的相关尺寸参数double d3;double L1;double L2,L3,L4;double pi,a1,a2;pi=3.1415926; UF_PART_new (c:nut2.prt,1,&m_part_tag); /创建一个part/* - Enter your callback code here - */ UF_STYLER_item_value_type_t data;char* GANGTONG_value100;data.item_attr=UF_STYLER_VALUE; data.item_id=GANGTONG_STR_1;UF_STYLER_ask_value(dialog_id,&data);GANGTONG_value1 = data.value.string;L1=data.value.real;/获得L1data.item_attr=UF_STYLER_VALUE;data.item_id=GANGTONG_STR_2;UF_STYLER_ask_value(dialog_id,&data); GANGTONG_value2 = data.value.string; L2=data.value.real;/获得L2data.item_attr=UF_STYLER_VALUE;data.item_id=GANGTONG_STR_3;UF_STYLER_ask_value(dialog_id,&data);GANGTONG_value3 = data.value.string;L3=data.value.real;/获得L3 data.item_attr=UF_STYLER_VALUE;data.item_id=GANGTONG_STR_4;UF_STYLER_ask_value(dialog_id,&data);GANGTONG_value4 = data.value.string;L4=data.value.real;/获得L4 data.item_attr=UF_STYLER_VALUE;data.item_id=GANGTONG_STR_5;UF_STYLER_ask_value(dialog_id,&data);GANGTONG_value5 = data.value.string; a1=data.value.real;/获得a1data.item_attr=UF_STYLER_VALUE;data.item_id=GANGTONG_STR_6;UF_STYLER_ask_value(dialog_id,&data);GANGTONG_value6 = data.value.string;a2=data.value.real;/获得a2data.item_attr=UF_STYLER_VALUE;data.item_id=GANGTONG_STR_7;UF_STYLER_ask_value(dialog_id,&data);GANGTONG_value7 = data.value.string;d1=data.value.real;/获得d1data.item_attr=UF_STYLER_VALUE;data.item_id=GANGTONG_STR_8;UF_STYLER_ask_value(dialog_id,&data);GANGTONG_value8 = data.value.string;d2=data.value.real;/获得d2 data.item_attr=UF_STYLER_VALUE;data.item_id=GANGTONG_STR_9;UF_STYLER_ask_value(dialog_id,&data);GANGTONG_value9 = data.value.string;d3=data.value.real;/获得d3 /* - Enter your callback code here - */UF_LAYER_set_status(1,UF_LAYER_ACTIVE_LAYER); /设定工作层UF_LAYER_set_status(101,UF_LAYER_WORK_LAYER);PointY0=0;PointZ0=0.5*d2;PointY1=0.5*(d1-d2)*tan(a1*pi/180);PointZ1=0.5*d1;PointY2=L1;PointZ2=PointZ1;PointY3=PointY2;PointZ3=0.5*d2+L2*tan(a2*pi/180);PointY4=L1-L2;PointZ4=0.5*d2;PointY5=L1-L3;PointZ5=PointZ4;PointY6=PointY5;PointZ6=0.5*d3;PointY7=L1-L3-L4;PointZ7=PointZ6;PointY8=PointY7;PointZ8=PointZ0; /得到9个点的坐标 UF_MODL_create_list(&list);for(i=0;i9;i+)line_coords.start_point0=0.0;line_coords.start_point1=PointYi;line_coords.start_point2=PointZi;line_coords.end_point0=0.0;line_coords.end_point1=PointY(i=8)?0:i+1;line_coords.end_point2=PointZ(i=8)?0:i+1;UF_CURVE_create_line(&line_coords,&linei); /通过这9个点创建直线 UF_MODL_put_list_item(list,linei); UF_LAYER_set_status(1,UF_LAYER_WORK_LAYER);err=UF_MODL_create_revolved(list,limit,orgin,direction,UF_NULLSIGN,&feature_list);if(err) return err;UF_MODL_ask_list_item(feature_list,0,&m_revolve_tag);UF_MODL_delete_list(&feature_list);UF_LAYER_set_status(101,UF_LAYER_INACTIVE_LAYER);UF_terminate (); 8.2.2 卡键帽的建模函数 double radius,PointY8,PointZ8;double orgin3=0,0,0,direction3=0.0,1.0,0.0;uf_list_p_t list,feature_list;UF_CURVE_line_t line_coords;tag_t line8; tag_t m_ext_tag;tag_t m_chamfer_tag,m_revolve_tag,m_mirror_tag;tag_t m_part_tag; tag_t p_hole_tag;char *limit2=0.0,360.0;int err,i;double dw1,dw2;double dw3;double L1,double L2,L3,L4;double pi,a1,a2;pi=3.1415926; UF_PART_new (c:nut1.prt,1,&m_part_tag); /* - Enter your callback code here - */UF_STYLER_item_value_type_t data;char* KAJIANMAO_value100;data.item_attr=UF_STYLER_VALUE;data.item_id=KAOJIANMAO_STR_0;UF_STYLER_ask_value(dialog_id,&data);KAJIANMAO_value0 = data.value.string;/m_data.DH = atof(data.value.string);a1=atof(data.value.string);/获得a1data.item_attr=UF_STYLER_VALUE;data.item_id=KAOJIANMAO_STR_2;UF_STYLER_ask_value(dialog_id,&data);KAJIANMAO_value2 = data.value.string;a2=atof(data.value.string);/获得a2data.item_attr=UF_STYLER_VALUE;data.item_id=KAOJIANMAO_STR_3;UF_STYLER_ask_value(dialog_id,&data);KAJIANMAO_value3 = data.value.string;L1=atof(data.value.string);/获得L1data.item_attr=UF_STYLER_VALUE;data.item_id=KAOJIANMAO_STR_4;UF_STYLER_ask_value(dialog_id,&data);KAJIANMAO_value4 = data.value.string;L2=atof(data.value.string);/获得L2data.item_attr=UF_STYLER_VALUE;data.item_id=KAOJIANMAO_STR_5;UF_STYLER_ask_value(dialog_id,&data);KAJIANMAO_value5 = data.value.string;L3=atof(data.value.string);/获得L3data.item_attr=UF_STYLER_VALUE;data.item_id=KAOJIANMAO_STR_6;UF_STYLER_ask_value(dialog_id,&data);KAJIANMAO_value6 = data.value.string;L4=atof(data.value.string);data.item_attr=UF_STYLER_VALUE;data.item_id=KAOJIANMAO_STR_7;UF_STYLER_ask_value(dialog_id,&data);KAJIANMAO_value7 = data.value.string;dw1=atof(data.value.string);data.item_attr=UF_STYLER_VALUE;data.item_id=KAOJIANMAO_STR_8;UF_STYLER_ask_value(dialog_id,&data);KAJIANMAO_value8 = data.value.string;dw2=atof(data.value.string);data.item_attr=UF_STYLER_VALUE;data.item_id=KAOJIANMAO_STR_9;UF_STYLER_ask_value(dialog_id,&data);KAJIANMAO_value9 = data.value.string;dw3=atof(data.value.string);/* - Enter your callback code here - */UF_LAYER_set_status(1,UF_LAYER_ACTIVE_LAYER);UF_LAYER_set_status(101,UF_LAYER_WORK_LAYER); PointY0=L2;PointZ0=dw3;PointY1=0; PointZ1=PointZ0;PointY2=PointY1;PointZ2=dw2-L3/tan(a1*pi/180);PointY3=L3;PointZ3=dw2;PointY4=L1;PointZ4=PointZ3;PointY5=PointY4;PointZ5=dw1+L4*tan(a2*pi/180);PointY6=PointY5-L4;PointZ6=dw1;PointY7=PointY0;PointZ7=dw1;UF_MODL_create_list(&list);for(i=0;i8;i+)line_coords.start_point0=0.0;line_coords.start_point1=PointYi;line_coords.start_point2=PointZi;line_coords.end_point0=0.0;line_coords.end_point1=PointY(i=7)?0:i+1;line_coords.end_point2=PointZ(i=7)?0:i+1;UF_CURVE_create_line(&line_coords,&linei);UF_MODL_put_list_item(list,linei); UF_LAYER_set_status(1,UF_LAYER_WORK_LAYER);err=UF_MODL_create_revolved(list,limit,orgin,direction,UF_NULLSIGN,&feature_list);if(err) return err; UF_MODL_ask_list_item(feature_list,0,&m_revolve_tag);UF_MODL_delete_list(&feature_list);UF_LAYER_set_status(101,UF_LAYER_INACTIVE_LAYER); 8.2.3 活塞的建模函数 double radius,PointY20,PointZ20;double orgin3=0,0,0,direction3=0.0,1.0,0.0;uf_list_p_t list,feature_list;UF_CURVE_line_t line_coords;tag_t line20;tag_t m_ext_tag;tag_t m_chamfer_tag,m_revolve_tag,m_mirror_tag;tag_t m_part_tag;tag_t p_hole_tag;char *limit2=0.0,360.0;int err,i;double dw1,dw2;double dw3,dw4,dw6;double L1;double L2,L3,L4,L5,L6,L7,L8;double pi,a1;pi=3.1415926; UF_PART_new (c:nut.prt,1,&m_part_tag); UF_PART_new (c:nut.prt,1,&m_part_tag); /* - Enter your callback code here - */UF_STYLER_item_value_type_t data;char* HUOSHAI_value100;data.item_attr=UF_STYLER_VALUE;data.item_id=HUOSHAI_STR_1;UF_STYLER_ask_value(dialog_id,&data);HUOSHAI_value1 = data.value.string;/m_data.DH = atof(data.value.string);L1=atof(data.value.string);/获得L1data.item_attr=UF_STYLER_VALUE;data.item_id=HUOSHAI_STR_2;UF_STYLER_ask_value(dialog_id,&data);HUOSHAI_value2 = data.value.string;L2=atof(data.value.str
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:基于UG的油缸的参数化设计【带参数化设计文件】
链接地址:https://www.renrendoc.com/p-273128.html

官方联系方式

2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

网站客服QQ:2881952447     

copyright@ 2020-2025  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知人人文库网,我们立即给予删除!