proe二次开发标准件库齿轮参数化设计毕业设计_第1页
proe二次开发标准件库齿轮参数化设计毕业设计_第2页
proe二次开发标准件库齿轮参数化设计毕业设计_第3页
proe二次开发标准件库齿轮参数化设计毕业设计_第4页
proe二次开发标准件库齿轮参数化设计毕业设计_第5页
已阅读5页,还剩99页未读 继续免费阅读

下载本文档

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

文档简介

前言

0基于Pro/EWildfire建立常用件参数化模型库

1第一章

绪论

31.1引言

31.2课题的提出及意义

41.3本章小节

4第二章二次开发总体方案的确定

42.1二次开发语言(Pro/TOOLKIT)

42.2开发工具的确定

52.3开发环境

72.3.1硬件开发环境

72.3.2软件开发环境

72.4总体设计框架

10第三章菜单的设计开发

123.1菜单的设计

123.1.1编写菜单信息资源文件

133.1.2编写菜单操作源程序

193.1.3注册运行

22第四章建立参数化模型库

244.1国家标准

244.2参数化建模

264.3对话框的设计

284.4参数值的传递

464.5编写注册文件

714.6编译程序并执行

71第五章总结与展望

775.1论文总结

775.2后续发展方向

77致谢

78参考文献

79

前言毕业设计是我们综合运用所学的理论知识和实践相结合的重要环节。是对我们大学四年所学知识的一次全面检验和应用;首先,毕业设计能培养我们分析实际问题的能力,运用所学知识动手解决实际问题的能力,从而巩固深化所学的理论知识,为即将走向工作岗位打下坚实的基础。其次,毕业设计培养我们深入实际,调查研究,解决在现实问题中可能出现各种问题,所以我们在设计中必须学会分析问题和解决问题的方法,要抓住主要问题,按安全可靠,经济实用的原则设计。再次,毕业设计培养了我们熟悉有关技术政策,运用国家标准规范,手册,图册等工具书,独立进行设计计算,数据处理,编写技术文件的工作能力。在毕业设计中,我们必须培养认真、负责、细致、踏实的工作作风,养成保质保量、按时按量完成任务的习惯,要达到这一目的,我们在设计中必须应做到:(1)随时准备各种资料,为毕业设计做好充分的准备。(2)认真计算和检验,保证计算结果的准确性。(3)仿真建模和CAD制图要认真、仔细和不断反复检查,以保证图纸的质量。(4)劳逸结合,提高工作效率,按时完成自己的设计任务。这次毕业设计不仅关系着每个人的学业成绩,更重要的是它体现了每个人对待设计的认真程度和实际能力。固然每个人的能力不同,设计有好有劣,但我们还是力求向好的方面努力,使设计既符合实际,更加完善完美。我想这与指导老师和领导的要求也是一致的。不过由于对一些实践性知识了解甚少,加上本次设计时间紧、任务重、图纸多,很难百分之百的达到毕业设计的要求。所以这次毕业设计也只能是一个尝试,但对我将来的工作必将是一个很大的帮助,相信通过这次毕业设计能达到预期目的,各方面都有所提高。由于经验不足、水平有限加之时间仓促,本次毕业设计一定存在不少错误,欢迎各位老师和同学批评指正。基于Pro/EWildfire建立常用件参数化模型库摘要:本课题针对多种类型通用零件,提出基于Pro/E平台进行二次开发的一种可行方案。并且成功开发设计出能满足用户要求的零件模型库。本文首先简单介绍了与本课题相关的Pro/E二次开发功能,包括自定义菜单的生成、对话框的制作、Pro/TOOLKIT应用程序的执行。其次根据本课题的要求,分析了零件二次开发的整体设计思路。然后以标准件为例,较详细地说明了利用Pro/TOOLKIT及VisualStudio2005在Pro/E二次开发中的应用,并给出了测试实例。最后对开发的三维建模程序进行测试。结果表明:开发程序正确无误,建模迅速,大大提高了这类通用件在Pro/E平台上的设计效率。关键词:Pro/E、二次开发、Pro/TOOLKIT、VisualStudio2005TheSecondaryDevelopmentofcommonpartsBasedonPro/EAbstract:ThisarticleintroducesafeasiblemethodofsecondarydevelopmentbasedonPro/Eagainstsomekindsofparts.Andthespringpartslibraryissuccessfullydesignedmeettotheuserrequirements.Firstly,thisarticlesimplyintroducesthesecondarydevelopmentfunctionsofPro/Ereferringtothistaskwhichincludesthecreationofmenu,thecreationofthedialogue,thePro/TOOLKITprocedureexecution.Thentheprecepttotheoveralldesignwayofpartssecondarydevelopmentisanalyzed.WithanexampleofaStandardpartsindetail,itparticularlydescribestheapplicationofPro/TOOLKITandVisualStudio2005inthesecondarydevelopmentbaseonPro/E,andtestexamples.Atlast,thetestofallprocessofthree-dimension-part-modeldrivenbydatabaseisperformedindicatesthattheprogramisright,andthemoldcanbesetupquickly.TheefficiencyforthedesignofinterchangeablepartbasedonPro/Ecanbeincreased.Keywords:Pro/E、SecondaryDevelopment、Pro/TOOLKIT、VisualStudio2005第一章绪论1.1引言(1)参数化技术正当实体造型技术在CAD系统中广泛运用时,出现了一种比无约束自由造型更好的算法-参数化实体造型方法。它主要的特点是:基于特征、全尺寸约束、全数据相关、尺寸驱动设计修改。参数化技术彻底克服了自由缄默的无约束状态,由尺寸决定实体造型的几何形状。尺寸驱动已经成为当今造型系统的基本功能。如果想修改零件形状的话,只需修改一下尺寸的数值就可以实现形状上的改变。这种新构想最先在PTC公司(ParametricTechnologyCorp)的软件PRO/ENGINEER中成为现实。由于参数化技术的成功应用,使得它很快成为CAD业界的标准,许多软件厂商纷纷追赶。(2)变量化技术变量化造型技术保留了参数化技术基于特征、全数据相关、尺寸驱动设计修改的优点,但是在约束定义方面做了一定的改变。变量化造型技术将所需定义的尺寸“参数”进一步区分为形状约束和尺寸约束,而不仅仅是用尺寸来约束全部几何。通常在新产品开发的概念设计阶段,设计者首先考虑的是设计思想及概念,并将其体现在某些几何形状之中。但是这些几何形状的严格的尺寸定位关系并不能在设计的初始阶段完全确定,所以希望在初始阶段能够允许欠尺寸约束的存在。(3)二次开发研究Pro/ENGIEER提供了强大的三位几何造型功能,使我们能够创建各种复杂的几何零件模型,但有时这些功能并不能满足我们的要求。例如标准零件系列,它们的结构都是相同的,区别只在与尺寸,如果标准零件系列通过三维建模的方式来实现,那么工作量将是非常巨大的。最有效的方法使利用标准零件的相似性,发挥Pro/ENGEER参数化建模的特长,使用二次开发工具,如族表工具、用户定义特征(UDF)、Pro/Program、J-link、Pro/Toolkit等来实现。1.2课题的提出及意义产品的三维设计离不开CAD/CAM系统的支持,具有技术成熟、功能强大的Pro/ENGINEER参数化造型系统在设计和制造业中引起了人们的重视,并得到了日益广泛的应用。Pro/ENGINEER提供了强大的三维几何造型功能,使我们能够创建出各种复杂的几何模型,作为通用的三维CAD/CAM系统在功能上基本能够满足产品三维设计要求,但有时这些功能并不能满足我们的需求。例如标准零件系列,它们的结构都是相同的,区别只在于尺寸,如果标准零件系列都通过三维建模的方式来实现,那么工作量将非常巨大。虽然Pro/ENGINEER自身也有一些模型库,但是这远远满足不了用户的要求。因此,也就有了本课题研究开发的必要。机械产品的开发过程中会用到大量的通用零件、标准件、相似件。如何建立这些常用零部件的库,利用已有的资源,花费较少的时间完成产品设计是用户非常关心的问题。建立这些通用件、标准件、相似件零件库作为一项可行方案,一方面可以避免不同设计者的重复劳动,提高设计效率,提高设计的标准化程度,减少错误发生率,缩短产品开发周期;另一方面还可以基于该软件的三维实体模型进行更深层次的分析(如有限元分析等),以确保机械设计结果安全可靠。综上,对某些特殊零件进行二次开发是非常有必要的。因此也就有了本课题的提出。1.3本章小节本章介绍了现代CAD技术中的发展及其需求,并分析了参数和变量化技术的应用前景,确定了Pro/ENGINEER二次开发的必要性和方便性,确定了课题的主要研究内容和方向:利用Pro/ETOOLKIT进行零件的参数化建模,以及需要用到的相关技术。第二章二次开发总体方案的确定2.1二次开发语言(Pro/TOOLKIT)Pro/TOOLKIT是美国ParametricTechnologyCorporation(PTC)公司为Pro/ENGINEER软件提供的开发工具包,其主要目的是让用户或第三方通过C程序代码扩充Pro/ENGINEER系统的功能,开发基于Pro/ENGINEER系统的应用程序模块,不仅如此,还可以利用Pro/TOOLKIT提供的UI对话框、菜单以及VC的可视化界面技术,设计出方便实用的人机交互界面,从而大大提高系统的使用效率。Pro/TOOLKIT是Pro/ENGINEER的一个应用程序接口(API),它的编程语言是C语言,可以对Pro/ENGINEER进行功能扩展,满足PTC客户的特定需求。而且,Pro/TOOLKIT提供了定制标准Pro/ENGINEER用户界面的能力,自动执行重复性的程序,通过Pro/ENGINEER集成的内部程序(Dll)或外部应用程序(Exe)可以为造型用户提供自定义的应用程序、设计规划和绘图自动化。Pro/TOOLKIT工具包提供了开发Pro/ENGINEER所需的函数库文件和头文件,使用户编写的应用程序能够安全地控制和访问Pro/ENGINEER,并可以实现应用程序模块与Pro/ENGINEER系统的无缝集成。Pro/TOOLKIT工具包是随Pro/ENGINEER安装盘一起提供的,安装时在“元件”列表框中选中“APIToolkits”复选框,并在“子元件”列表框中选中“Pro/TOOLKIT”复选框,这样将在Pro/ENGINEER系统的默认目录下自动创建两个下级目录:protoolkit和prodevelop。Pro/TOOLKIT采用面向对象的程序设计方法(Object_OrientedProgramming)。在Pro/ENGINEER和应用程序之间主要是通过特定的数据结构来传递信息,以应用程序来说这种数据结构并不是直接访问的,而只能通过Pro/TOOLKIT提供的函数来访问。2.2开发工具的确定Pro/ENGINEER软件本身自带了一些二次开发工具,如族表工具、用户定义特征(UDF)、Pro/Program、J-link、Pro/Toolkit等。以下简单介绍上述几种二次开发工具:族表(FamilyTable)通过族表可以方便地管理具有相同或相近结构的零件,特别适用于标准零件的管理。族表工具是通过建立一个通用零件作为父零件,然后在其基础上对各参数加以控制生成派生零件。整个族表是通过电子表格来实现的,因此可以称其为表格驱动。用户定义特征(UDF)用户定义特征是将若干个系统特征整合为一个自定义特征,使用时作为一个整体出现。UDF适用特定产品的特定结构,有利于设计者根据产品特征快速生成几何模型。Pro/ProgramPro/ENGINEER软件对于每个模型都有一个主要设计步骤和参数列表Pro/Program,它是由类似BASIC的高级语言构成,用户可以根据设计需要来编辑该模型的Program,使其以一个程序来工作。通过运行该程序,系统通过人机交互的方法来控制系统参数、特征出现与否以及特征的具体尺寸等。J-linkJ-link是Pro/ENGINEER中自带的基于JAVA语言的二次开发工具,是一种面向对象、独立于操作系统平台的开发工具。用户通过JAVA编程实现向Pro/ENGINEER软件添加功能。Pro/TOOLKITPro/TOOLKIT同J-link一样也是Pro/ENGINEER自带的二次开发工具。在Pro/TOOLKIT中,PTC向用户提供了大量的C语言函数库,函数采用面向对象的风格。通过调用这些底层函数,用户能方便而又安全地访问Pro/ENGINEER的数据库及内部应用程序,进行二次开发,扩展一些特定功能。上述各种二次开发工具集中在Pro/ENGINEER的“工具”菜单中,如图2-1所示。其中“辅助应用程序”主要用来调用Pro/TOOLKIT程序。图2-1由于Pro/TOOLKIT具有函数简单,应用方便等优点,本课题将使用Pro/TOOLKIT进行二次开发研究。2.3开发环境开发环境包括两部分:即硬件开发环境和软件开发环境。2.3.1硬件开发环境本课题是基于Pro/EngineerWildfire4.0的二次开发,因此只要能够安装支持Pro/EWildfire4.0版本即可。建议配置如表2-1所示。表2-1

计算机配置项目推荐配置CPU2.53GHz内存2GB显卡显存256MB以上,推荐使用ATIHD3470以上的显卡网卡必须安装网卡(或使用虚拟网卡)

2.3.2软件开发环境操作平台:Windows2000/XP/NT;开发平台:Pro/ENGINEERWildfire4.0;开发语言:VisualStudio2005.对于PROE4.0来讲,其文件结构与2.0是一致的,读者可参照前面的描述来回顾相关内容,下面请随我一起来配置这套组合下的二次开发环境。首先打开VS2005中的VC开发环境。依次选择文件—>新建—>项目,系统弹出项目对话框(图1-8)图2-2选择如图所示的MFCDLL项目,输入项目名称并设置项目路径,点击确定。在接下来的对话框中选择“使用共享MFCDLL的规则DLL”(默认的也是这个选项),点击完成后,与VC++6.0一样,系统自动为我们搭建了一个DLL的开发环境,现在,我们要在这个环境下配置TOOLKIT开发所需要的头文件和库文件路径。依次在菜单中选择:工具—>选项,系统弹出选项对话框。在该对话中选择“项目和解决方案”一栏中的“VC++目录”选项,并参照图1-9的方法设置头文件路径图2-3我的设置为:D:\ProgramFiles\proeWildfire4.0\protoolkit\includeD:\ProgramFiles\proeWildfire4.0\protoolkit\protk_appls\includesD:\ProgramFiles\proeWildfire4.0\prodevelop\includesD:\ProgramFiles\proeWildfire4.0\prodevelop\prodev_appls\includes仍旧在该对话框下,设置库文件路径,如图1-10:图2-4设置好头文件和库文件路径后,就还差最后一步了,现在我们要来指定使用中的具体库文件。图2-5点击“项目”—>“属性”,系统弹出该项目的属性对话框。按照图1-11的方法设置工程的连接属性。我的“附加依赖关系”中为:protk_dll.libprodev_dll.libmpr.libpsapi.lib(笔者这里一共用到了四个库,当然,读者可以根据自己需要,添加其他额外的库文件)在Release版本下忽略的库文件为:msvcrtd.lib(与VC++6.0中是不一样的)。设置完毕后,在Release版本下编译连接完全没有问题,至此,环境设置便讲完了。2.4总体设计框架本二次开发是基于Pro/ENGINEER的关于标准件、正齿轮、锥齿轮、蜗轮、标准件的参数化设计。设计的对象是标准件。本任务将设计多种类型的标准件,要求用户只需选择或输入相关参数,就能自动生成所需的通用零件。标准件的类型非常多,这里将以螺栓与正齿轮为例进行二次开发设计过程说明。本开发的总体设计流程如图2-2所示,调用响应图如图2-3所示。图2-6第三章菜单的设计开发3.1菜单的设计菜单是Pro/ENGINEER的主要用户界面。Pro/TOOLKIT提供了一系列菜单操作函数,允许应用程序创建和管理菜单。Pro/ENGINEER菜单包括菜单栏、菜单、菜单项(按钮)、筛选按钮、单选按钮等等,如图4-1示。图3-1Pro/TOOLKIT可以向Pro/ENGINEER菜单中添加上述类型的菜单。添加菜单的大致过程如下:编写信息资源文件(信息资源文件用于提供菜单的标签文本和帮助信息);使用Pro/TOOLKIT的函数编写源程序,给菜单按钮设置调用函数(动作函数);注册运行程序。下面介绍菜单的相关术语:●菜单条(Menubar)Pro/ENGINEER界面顶部菜单栏中的菜单,如File、Edit和View等均称为菜单条;●菜单条菜单(Menubarmenu)菜单条的下级子菜单。即多层菜单的次级菜单;●菜单的按钮(Pushbutton)下拉菜单中用来启动一组指令的菜单项,如File菜单条中的Edit按钮;●菜单的复选按钮(Checkbutton)下拉菜单中用来执行开关动作的菜单项,如View菜单条中的ModelTree(模型树)显示或关闭菜单项;●菜单的单选按钮组(Radiogroup)下拉菜单的一组选项中只能设置其中一项的菜单项;●命令(Command)从菜单条或工具栏图标激活的一个执行过程;●命令标识号(Commandid)指向某一命令的指针。一般作为Pro/TOOLKIT函数的输入参数;●动作命令(Actioncommand)启动菜单按钮执行的一组指令;●选项命令(Optioncommand)基于界面元素的状态执行的一组指令。该命令由菜单筛选按钮和菜单单选按钮组启动本设计要求所设计的菜单风格与Pro/ENGINEER一致,即将菜单添加到Pro/ENGINEER的菜单栏,在其下拉菜单项菜单中要求有各种类型的标准件,如标准件库,包括螺钉,螺栓,垫片,键等。3.1.1编写菜单信息资源文件信息资源文件用于提供菜单的标签文本(包括其他语言版本的标签)和帮助信息,如果要向Pro/ENGINEER中添加菜单,就必须使用信息资源文本,否则所添加的菜单不会在Pro/ENGINEER菜单栏中出现。信息资源文件是一种ASCII码文件,用来定义菜单项、菜单项提示等信息,可以用记事本和写字板等文字处理软件建立,也可在VC的集成开发环境中建立,但必须与纯文本格式保存。在信息文件中以4行为一组,其含义为:第1行:Pro/ENGINEER系统可以识别的关键字。该关键字必须与使用该信息文件函数中的相关字符串相同。第2行:在菜单项或菜单项提示上显示的英语文本。第3行:另一种语言的译文或为空。这里为中文。第4行:当前的Pro/ENGINEER版本为空,“#”号。按第2行或第3行的语言取决于系统环境变量lang的设置。本设计中将向Pro/ENGINEER界面的顶部菜单栏中添加一个名为“通用件库”的Menubar类型的菜单,下属两个菜单项标准件库和齿轮库。名为“涡轮蜗杆”的下级子菜单又包含了:涡轮参数化设计、蜗杆参数化设计两个菜单项最终结果如图3-2(a)、3-2(b)所示。图4-2(a)“通用件库”菜单图4-2(b)“标准件库”菜单图4-2所示菜单的资源文件如下:StandardPartLibDesign通用件库##FirstButton双头螺柱参数化设计##thisbuttonwillgenerateadoublescrew_boltthisbuttonwillgenerateadoublescrew_bolt##SecondButton垫片参数化设计##thisbuttonwillgenerateashimthisbuttonwillgenerateashim##ThirdButton螺栓参数化设计##thisbuttonwillgenerateaboltthisbuttonwillgenerateabolt##FourthButton螺母参数化设计##thisbuttonwillgeneratenutthisbuttonwillgeneratenut##FifthButton键参数化设计##thisbuttonwillgenerateakeythisbuttonwillgenerateakey##SixthButton螺钉参数化设计##thisbuttonwillgenerateanut_boltthisbuttonwillgenerateanut_bolt##seventhButton人字型齿轮参数化设计##thisbuttonwillgenerateaHerringbone_gearthisbuttonwillgenerateaHerringbone_gear##eigthButton轴参数化设计##thisbuttonwillgenerateashaftthisbuttonwillgenerateashaft##SubMenu1齿轮参数化设计##SubMenu2标准件库##SubMenu3蜗轮蜗杆参数化设计##ninthButton锥齿轮参数化设计##thisbuttonwillgenerateabevel_gearthisbuttonwillgenerateabevel_gear##tenthButton蜗轮参数化设计##thisbuttonwillgenerateaworm_gearthisbuttonwillgenerateaworm_gear##eleventhButton蜗杆参数化设计##thisbuttonwillgenerateawormthisbuttonwillgenerateaworm##twelthButton正齿轮参数化设计##thisbuttonwillgenerateaspur_gearthisbuttonwillgenerateaspur_gear##在记事本编辑完以上资源后,保存为纯文本格式(.txt),并且命名为Message。将Message.txt文件存放在Text\Release\text\chinese_cn目录下3.1.2编写菜单操作源程序图3-3新建项目,名称standard编写完菜单信息资源文本后,还须使用Pro/TOOLKIT提供的菜单操作函数来实现每个菜单的功能,即编写菜单项菜单的动作函数。首先,必须列出VC程序将用到的相关头文件,如#include"ProMenu.h"#include"ProUtil.h"#include"ProMenubar.h"#include<ProMessage.h>其次,必须对用到的函数进行声明,否则将会出错,如voiddrawdoublescrew_bolt(){}voiddrawshaft(){}voiddrawHerringbone_gear(){}voiddrawshim(){}voiddrawbolt(){}voiddrawnut(){}voiddrawkey(){}voiddrawworm_gear(){}voiddrawworm(){}voiddrawnut_bolt(){}voiddrawbevel_gear(){}voiddrawspur_gear(){}CstandardApp::CstandardApp(){}CstandardApptheApp;BOOLCstandardApp::InitInstance(){CWinApp::InitInstance();returnTRUE;}staticuiCmdAccessStateAccessDefault(uiCmdAccessModeaccess_mode){return(ACCESS_AVAILABLE);}最后才编写程序主体部分。下面介绍说明菜单程序中用到的Pro/TOOLKIT函数。user_initializ()函数是Pro/TOOLKIT应用程序的初始化函数,主要用来对同步模式的Pro/TOOLKIT应用程序进行初始化,任何同步模式的应用程序要在Pro/ENGINEER系统中加载都必须包含该函数。其格式如程序所示。user_terminate()函数在Pro/ENGINEER终止同步模式的Pro/TOOLKIT应用程序时调用(如退出Pro/ENGINEER将终止应用程序的运行),该函数由用户定义,其中可以不执行任何动作。ProMenubarMenuAdd()函数的作用是向Pro/ENGINEER添加所需的菜单,包含头文件为:#include<ProMenuBar.h>。函数的返回值类型为ProError,调用成功返回PRO_TK_NO_ERROR(0),否则返回PRO_TK_GENERAL_ERROR(-1)。函数如下:ProMenubarMenuAdd("UserMenuBar","UserMenu","Utilities",PRO_B_TRUE,MsgFile)其中"UserMenuBar"为菜单项名,作为调用其他菜单函数的输入参数;"UserMenu"为菜单标签名,即该菜单条的关键字。必须与信息文件该段的标识关键字相同。"Utilities",PRO_B_TRUE表示该菜单加在“工具”菜单的右侧。MsgFile为菜单信息文件名,这里定为"Message"。ProMenubarmenuMenuAdd()函数的作用是向菜单添加下级子菜单。注意,在生成的下级子菜单中必须至少包含一项菜单项,否则将不显示下级子菜单。该函数可以创建多层下级子菜单,只需用不同层次的菜单名标识作为们菜单名即可。其函数如下:ProMenubarmenuMenuAdd("UserMenuBar","SubMenu1","SubMenu1",NULL,PRO_B_TRUE,MsgFile)"UserMenuBar"表示这个下级菜单是挂接在此菜单项名下。"SubMenu1"为菜单标签名,必须与信息文件中对应标识关键字相同。ProMenubarmenuPushbuttonAdd()函数的作用是添加菜单按钮。其函数如下:ProMenubarmenuPushbuttonAdd("SubMenu1","PushButton1","PushButton1","AddingapushbuttontotheProEmenubar",NULL,PRO_B_TRUE,PushButton_cmd_id1,MsgFile)"SubMenu1"表示此菜单是菜单名为“SubMenu1”的下级子菜单,"PushButton1"是菜单标签名,与信息文件中对应一致。"AddingapushbuttontotheProEmenubar"是提示信息,必须与信息文件中一致。程序中用到了菜单条、菜单条菜单、下级子菜单、菜单按钮等。将上面编辑的资源信息文件放入“Text\Release\text\chinese_cn”文件夹内。3.1.3注册运行编写调试完应用程序后,将整个VC工程文件拷贝到工作目录下,用记事本编写注册文件,并保存为“Protk.dat”。注册文件内容如图4-9所示。图3-4注册文件这里的“.\”代表相对路径方式,即起始目录为Pro/ENGINEER的工作目录。用相对路径方式的优点在于具有可移植性。即此二次开发程序只要存放在Pro/ENGINEER设置的工作目录下,便能自动运行,而不要求用户更改设置,大大地方便了用户的使用。图4-9中各字段及其意义如表4-1所示。表4-1注册表字段及意义字段名意义Name外部程序标识名,该标识名不一定要与可执行程序名相同Exec_file可执行程序名(包括路径)Text_dir指定外部程序的text目录树的全路径Startup这里取dll(动态连接库)Allow_stop如设为TRUE,在Pro/ENGINEER工作时可以终止应用程序,如设为FALSE则不能终止应用程序Delay_start若设为TRUE,Pro/ENGINEER在启动时不调用Pro/TOOLKIT应用程序,但可以手工启动,若设为FALSE,则系统将自动启动。Revision指定Pro/TOOLKIT版本号End段结束标志

注意,将DELAY_START字段内容设为FALSE,这样打开Pro/ENGINEER时使自动注册运行该应用程序。即启动Pro/ENGINEER后,自定义菜单使自动挂接到Pro/ENGINEER菜单条上。不必再手动注册和运行。这样,所创建的“通用件库”菜单便如同Pro/ENGINEER菜单栏中的一项菜单,即当运行Pro/ENGINEER,“通用件库”菜单项将自动连接上去。第四章建立参数化模型库在使用CAD产品进行产品建模时,设计人员经常要选用标准件或者选择通用件。若每次设计人员都需要重新对这些零件进行造型,设计人员必然要做许多重复性的劳动。本课题所建模型库包括螺栓,螺钉,螺母,螺柱,键,垫片,正齿轮,涡轮,蜗杆,等下面以六角螺栓为例详细说明,其他源程序见附录4.1国家标准

六角螺栓GB5782-86M5M6M8M10M12M14M16M18M20M24螺栓长度≤125时的螺纹长度L16+2.0018+2.5022+3.0026+3.5030+4.0034+4.5038+4.5042+5.0046+5.0054+5.00螺栓长度≥125-≤200时L22+2.0024+2.5028+3.0032+3.5036+4.0040+4.5044+4.5048+5.0052+5.0060+5.00螺栓长度>200时L45+3.5049+4.0053+4.5057+4.5061+5.0065+5.0073+5.00<此项长度允许全螺纹制造L25.0030.0035.0040.0045.0050.0055.0065.0065.0070.00搓丝坯(6g级)DMAX4.425.307.108.9010.7012.5514.5516.2018.20MIN4.385.257.058.8510.6512.5014.5016.1518.15粗杆直径D3MAX5.006.008.0010.0012.0014.0016.0018.0020.0024.00MIN4.825.827.789.7811.7313.7315.7317.7319.6723.67六角对边SMAX8.0010.0013.0016.0018.0021.0024.0027.0030.0036.00MIN7.789.7812.7315.7317.7320.6723.6726.6729.6735.38头部直径HMAX3.654.155.456.587.688.9810.1811.7212.7215.22MIN3.353.855.156.227.328.629.8211.2812.2814.78垫圈直径D2MIN6.908.9011.6014.6016.6019.6022.5025.3028.2033.60

4.2参数化建模拉伸,如下图图4-1图4-2螺栓如上关系如上图4-3设置参数图4-44.3对话框的设计下面以六角螺栓为例介绍说明螺栓对话框的创建全过程。1.新建对话框如图4-1图4-5点击新建按钮出现下图4-2图4-6右键单击属性弹出如图对话框弹出4-7图4-7更改对话框名称为“螺栓参数化设计”如下图4-4图4-8向对话框中拖入控件在dialog上右键,添加资源出现如下对话框4-9图4-9点击导入图片,整理对话框如下4-10图4-10选中对话框单击右键选择“添加类”4-11图4-11对话框添加完毕2.插入图片在资源视图中右键,添加资源,导入图片如下图所示图4-12导入后的图片都有唯一的图片ID如下图4-13图4-133.完成对话框的设计如图4-8至4-12螺钉参数化设计对话框4-8螺栓参数化设计对话框4-9键参数化设计4-10双头螺柱参数化设计4-11螺母参数化设计4-12垫片参数化设计4-134.对话框的调用先定义一个函数当点击菜单时会触发这个函数这个函数的内容是调用对应的对话框

具体实现过程如下名称Cboltdlg,在standard.cpp中添加如下程序段//standard.cpp:定义DLL的初始化例程。#include"stdafx.h"#include"standard.h"#include"Beardlg.h"#include"shimdlg.h"#include"Protoolkit.h"#include"user_tk_error.h"#include"pro_wchar_t.h"#include"ProMdl.h"#include"ProMenu.h"#include"ProMenuBar.h"#include"ProMessage.h"#include"ProNotify.h"#include"ProObjects.h"#include"ProUtil.h"#include"ProUiCmd.h"#include"TestError.h"#include"boltdlg.h"#include"keydlg.h"#include"Herringbone_geardlg.h"#include"shaftdlg.h"#include"bevel_geardlg.h"#include"nutdlg.h"#include"nut_boltdlg.h"#include"wormdlg.h"#include"worm_geardlg.h"#include"spur_gear.h"#include"doublescrew_boltdlg.h"//spur_gear.h忘了dlg后缀了注意!!#ifdef_DEBUG#definenewDEBUG_NEW#endif////TODO:如果此DLL相对于MFCDLL是动态链接的,//

则从此DLL导出的任何调入//

MFC的函数必须将AFX_MANAGE_STATE宏添加到//

该函数的最前面。////

例如:////

extern"C"BOOLPASCALEXPORTExportedFunction()//

{//

AFX_MANAGE_STATE(AfxGetStaticModuleState());//

//此处为普通函数体//

}////

此宏先于任何MFC调用//

出现在每个函数中十分重要。这意味着//

它必须作为函数中的第一个语句//

出现,甚至先于所有对象变量声明,//

这是因为它们的构造函数可能生成MFC//

DLL调用。////

有关其他详细信息,//

请参阅MFC技术说明33和58。//CstandardAppBEGIN_MESSAGE_MAP(CstandardApp,CWinApp)END_MESSAGE_MAP()voiddrawdoublescrew_bolt(){AFX_MANAGE_STATE(AfxGetStaticModuleState());Cdoublescrew_boltdlgdlg;dlg.DoModal();}voiddrawshaft(){AFX_MANAGE_STATE(AfxGetStaticModuleState());Cshaftdlgdlg;dlg.DoModal();}voiddrawHerringbone_gear(){AFX_MANAGE_STATE(AfxGetStaticModuleState());CHerringbone_geardlgdlg;dlg.DoModal();}voiddrawshim(){AFX_MANAGE_STATE(AfxGetStaticModuleState());Cshimdlgdlg;dlg.DoModal();}voiddrawbolt(){AFX_MANAGE_STATE(AfxGetStaticModuleState());Cboltdlgdlg;dlg.DoModal();}voiddrawnut(){AFX_MANAGE_STATE(AfxGetStaticModuleState());Cnutdlgdlg;dlg.DoModal();}voiddrawkey(){AFX_MANAGE_STATE(AfxGetStaticModuleState());Ckeydlgdlg;dlg.DoModal();}voiddrawworm_gear(){AFX_MANAGE_STATE(AfxGetStaticModuleState());Cworm_geardlgdlg;dlg.DoModal();}voiddrawworm(){AFX_MANAGE_STATE(AfxGetStaticModuleState());Cwormdlgdlg;dlg.DoModal();}voiddrawnut_bolt(){AFX_MANAGE_STATE(AfxGetStaticModuleState());Cnut_boltdlgdlg;dlg.DoModal();}voiddrawbevel_gear(){AFX_MANAGE_STATE(AfxGetStaticModuleState());Cbevel_geardlgdlg;dlg.DoModal();}voiddrawspur_gear(){AFX_MANAGE_STATE(AfxGetStaticModuleState());Cspur_geardlg;dlg.DoModal();}//CstandardApp构造CstandardApp::CstandardApp(){//TODO:在此处添加构造代码,//将所有重要的初始化放置在InitInstance中}//唯一的一个CstandardApp对象CstandardApptheApp;//CstandardApp初始化BOOLCstandardApp::InitInstance(){CWinApp::InitInstance();returnTRUE;}//定义菜单的可访问性staticuiCmdAccessStateAccessDefault(uiCmdAccessModeaccess_mode){return(ACCESS_AVAILABLE);}//=========================================//函数:user_initialize()//功能:用户初始化函数//=========================================extern"C"intuser_initialize(){ProErrorstatus;ProNamemsgfile;uiCmdCmdIdcmd_id1,cmd_id2,cmd_id3,cmd_id4,cmd_id5,cmd_id6,cmd_id7,cmd_id8,cmd_id9,cmd_id10,cmd_id11,cmd_id12;//在Help菜单的左边添加“标准件库”//设置信息文件名称ProStringToWstring(msgfile,"standard.txt");//在菜单栏上help左侧添加新菜单GearMenustatus=ProMenubarMenuAdd("标准件库菜单","StandardPartLibDesign","Help",PRO_B_FALSE,msgfile);//主菜单//在菜单栏ProMenubarmenuMenuAdd("标准件库菜单","SubMenu1","SubMenu1",NULL,PRO_B_TRUE,msgfile);ProMenubarmenuMenuAdd("标准件库菜单","SubMenu2","SubMenu2",NULL,PRO_B_TRUE,msgfile);ProMenubarmenuMenuAdd("SubMenu1","SubMenu3","SubMenu3",NULL,PRO_B_TRUE,msgfile);//设置按钮命令ProCmdActionAdd("命令一",(uiCmdCmdActFn)drawdoublescrew_bolt,uiCmdPrioDefault,AccessDefault,PRO_B_TRUE,PRO_B_TRUE,&cmd_id1);ProCmdActionAdd("命令二",(uiCmdCmdActFn)drawshim,uiCmdPrioDefault,AccessDefault,PRO_B_TRUE,PRO_B_TRUE,&cmd_id2);ProCmdActionAdd("命令三",(uiCmdCmdActFn)drawbolt,uiCmdPrioDefault,AccessDefault,PRO_B_TRUE,PRO_B_TRUE,&cmd_id3);ProCmdActionAdd("命令四",(uiCmdCmdActFn)drawnut,uiCmdPrioDefault,AccessDefault,PRO_B_TRUE,PRO_B_TRUE,&cmd_id4);ProCmdActionAdd("命令五",(uiCmdCmdActFn)drawkey,uiCmdPrioDefault,AccessDefault,PRO_B_TRUE,PRO_B_TRUE,&cmd_id5);ProCmdActionAdd("命令六",(uiCmdCmdActFn)drawnut_bolt,uiCmdPrioDefault,AccessDefault,PRO_B_TRUE,PRO_B_TRUE,&cmd_id6);ProCmdActionAdd("命令七",(uiCmdCmdActFn)drawHerringbone_gear,uiCmdPrioDefault,AccessDefault,PRO_B_TRUE,PRO_B_TRUE,&cmd_id7);ProCmdActionAdd("命令八",(uiCmdCmdActFn)drawshaft,uiCmdPrioDefault,AccessDefault,PRO_B_TRUE,PRO_B_TRUE,&cmd_id8);ProCmdActionAdd("命令九",(uiCmdCmdActFn)drawbevel_gear,uiCmdPrioDefault,AccessDefault,PRO_B_TRUE,PRO_B_TRUE,&cmd_id9);ProCmdActionAdd("命令十",(uiCmdCmdActFn)drawworm_gear,uiCmdPrioDefault,AccessDefault,PRO_B_TRUE,PRO_B_TRUE,&cmd_id10);ProCmdActionAdd("命令十一",(uiCmdCmdActFn)drawworm,uiCmdPrioDefault,AccessDefault,PRO_B_TRUE,PRO_B_TRUE,&cmd_id11);ProCmdActionAdd("命令十二",(uiCmdCmdActFn)drawspur_gear,uiCmdPrioDefault,AccessDefault,PRO_B_TRUE,PRO_B_TRUE,&cmd_id12);//在新菜单上添加按钮ProMenubarmenuPushbuttonAdd("SubMenu2","PushButton1","FirstButton","thisbuttonwillgenerateadoublescrew_bolt",NULL,PRO_B_TRUE,cmd_id1,msgfile);ProMenubarmenuPushbuttonAdd("SubMenu2","PushButton2","SecondButton","thisbuttonwillgenerateashim",NULL,PRO_B_TRUE,cmd_id2,msgfile);ProMenubarmenuPushbuttonAdd("SubMenu2","PushButton3","ThirdButton","thisbuttonwillgenerateabolt",NULL,PRO_B_TRUE,cmd_id3,msgfile);ProMenubarmenuPushbuttonAdd("SubMenu2","PushButton4","FourthButton","thisbuttonwillgeneratenut",NULL,PRO_B_TRUE,cmd_id4,msgfile);ProMenubarmenuPushbuttonAdd("SubMenu2","PushButton5","FifthButton","thisbuttonwillgenerateakey",NULL,PRO_B_TRUE,cmd_id5,msgfile);ProMenubarmenuPushbuttonAdd("SubMenu2","PushButton6","SixthButton","thisbuttonwillgenerateanut_bolt",NULL,PRO_B_TRUE,cmd_id6,msgfile);ProMenubarmenuPushbuttonAdd("SubMenu1","PushButton7","seventhButton","thisbuttonwillgenerateaHerringbone_gear",NULL,PRO_B_TRUE,cmd_id7,msgfile);ProMenubarmenuPushbuttonAdd("标准件库菜单","PushButton8","eigthButton","thisbuttonwillgenerateashaft",NULL,PRO_B_TRUE,cmd_id8,msgfile);ProMenubarmenuPushbuttonAdd("SubMenu1","PushButton9","ninthButton","thisbuttonwillgenerateabevel_gear",NULL,PRO_B_TRUE,cmd_id9,msgfile);ProMenubarmenuPushbuttonAdd("SubMenu3","PushButton10","tenthButton","thisbuttonwillgenerateaworm_gear",NULL,PRO_B_TRUE,cmd_id10,msgfile);ProMenubarmenuPushbuttonAdd("SubMenu3","PushButton11","eleventhButton","thisbuttonwillgenerateaworm",NULL,PRO_B_TRUE,cmd_id11,msgfile);ProMenubarmenuPushbuttonAdd("SubMenu1","PushButton12","twelthButton","thisbuttonwillgenerateaspur_gear",NULL,PRO_B_FALSE,cmd_id12,msgfile);returnstatus;}//=========================================//函数:user_terminate()//功能:用户中断函数//=========================================extern"C"voiduser_terminate(){return;}4.4参数值的传递由于螺栓为标准件有严格的国家标准故查阅相关标准知:螺杆长度L为一范围值,其他均为定值,因此采用了从vs2005中的CmboBox控件以及EditControl控件如下图零件规格处下拉菜单为ComboBox控件,输入参数L处为EditControl控件图4-14图4-15单击Combobox控件选中,右键弹出上图图4-15单击添加变量弹出上图,输入变量名m-combo完成图4-16再次选中combobox控件右键点击属性,在数据处键入M5;M6等用;分开选中editcontrol控件右键单击添加变量图4-17在类别中选择value型,在变量名中键入m_L完成图4-18选中确认按钮右键单击属性更改名称为生成模型如图4-18双击生成模型按钮,加入如下程序即完成了参数值的传递根据国标与参数化建模中的参数,源程序如下//boltdlg.cpp:实现文件#include"stdafx.h"#include"standard.h"#include"boltdlg.h"#include"ProToolkitErrors.h"#include"ProObjects.h"#include"ProUtil.h"#include<ProWindows.h>#include<ProSolid.h>#include<ProModelitem.h>#include<ProParameter.h>//Cboltdlg对话框IMPLEMENT_DYNAMIC(Cboltdlg,CDialog)Cboltdlg::Cboltdlg(CWnd*pParent/*=NULL*/):CDialog(Cboltdlg::IDD,pParent),m_L(0){}Cboltdlg::~Cboltdlg(){}voidCboltdlg::DoDataExchange(CDataExchange*pDX){CDialog::DoDataExchange(pDX);DDX_Text(pDX,IDC_EDIT1,m_L);DDX_Control(pDX,IDC_COMBO2,m_combo);}BEGIN_MESSAGE_MAP(Cboltdlg,CDialog)ON_BN_CLICKED(IDOK,&Cboltdlg::OnBnClickedOk)ON_EN_CHANGE(IDC_EDIT1,&Cboltdlg::OnEnChangeEdit1)ON_CBN_SELCHANGE(IDC_COMBO2,&Cboltdlg::OnCbnSelchangeCombo2)END_MESSAGE_MAP()//Cboltdlg消息处理程序voidCboltdlg::OnBnClickedOk(){//TODO:在此添加控件通知处理程序代码UpdateData(true);ProMdlpart;ProParameterparam1,param2,param3,param4,param5,param6,param7,param8,param9;ProParamvaluevalue1,value2,value3,value4,value5,value6,value7,value8,value9;ProModelitemfeature;intp_id;//lxh注:使用ProMdlRetrieve将模型导入内存ProMdlRetrieve(L"D:\\LZX\\标准件库\\螺栓\\liujiaoluoshuan.prt",PRO_MDL_PART,&part);ProMdlIdGet(part,&p_id);//获得当前模型标识IDProModelitemInit(part,p_id,PRO_PART,&feature);//初始化模型ProParameterInit(&feature,L"B",¶m1);ProParameterInit(&feature,L"H",¶m2);ProParameterInit(&feature,L"D",¶m3);ProParameterInit(&feature,L"S",¶m4);ProParameterInit(&feature,L"K",¶m5);ProParameterInit(&feature,L"ML_PITCH",¶m6);ProParameterInit(&feature,L"ML_D1",¶m7);ProParameterInit(&feature,L"R",¶m8);ProParameterInit(&feature,L"L",¶m9);if(m_L==0){AfxMessageBox(TEXT("请输入螺栓长度L"));}elseif(m_L<16){AfxMessageBox(TEXT("螺栓长度L太小"));}elseif(m_L<125){intnIndex=m_combo.GetCurSel();if(nIndex==0){

value1.type=PRO_PARAM_DOUBLE;value1.value.d_val=8;value2.type=PRO_PARAM_DOUBLE;value2.value.d_val=3.5;value3.type=PRO_PARAM_DOUBLE;value3.value.d_val=7.8;value4.type=PRO_PARAM_DOUBLE;value4.value.d_val=16;value5.type=PRO_PARAM_DOUBLE;value5.value.d_val=0.9;value6.type=PRO_PARAM_DOUBLE;value6.value.d_val=0.8;value7.type=PRO_PARAM_DOUBLE;value7.value.d_val=5;value8.type=PRO_PARAM_DOUBLE;value8.value.d_val=0.3;value9.type=PRO_PARAM_DOUBLE;value9.value.d_val=m_L;}elseif(nIndex==1){value1.type=PRO_PARAM_DOUBLE;value1.value.d_val=10;value2.type=PRO_PARAM_DOUBLE;value2.value.d_val=4;value3.type=PRO_PARAM_DOUBLE;value3.value.d_val=9.8;value4.type=PRO_PARAM_DOUBLE;value4.value.d_val=18;value5.type=PRO_PARAM_DOUBLE;value5.value.d_val=1;value6.type=PRO_PARAM_DOUBLE;value6.value.d_val=1;value7.type=PRO_PARAM_DOUBLE;value7.value.d_val=6;value8.type=PRO_PARAM_DOUBLE;value8.value.d_val=0.5;value9.type=PRO_PARAM_DOUBLE;value9.value.d_val=m_L;}elseif(nIndex==2){value1.type=PRO_PARAM_DOUBLE;value1.value.d_val=13;value2.type=PRO_PARAM_DOUBLE;value2.value.d_val=5.5;value3.type=PRO_PARAM_DOUBLE;value3.value.d_val=12.6;value4.type=PRO_PARAM_DOUBLE;value4.value.d_val=22;value5.type=PRO_PARAM_DOUBLE;value5.value.d_val=1.2;value6.type=PRO_PARAM_DOUBLE;value6.value.d_val=1.25;value7.type=PRO_PARAM_DOUBLE;value7.value.d_val=8;value8.type=PRO_PARAM_DOUBLE;value8.value.d_val=0.5;value9.type=PRO_PARAM_DOUBLE;value9.value.d_val=m_L;}elseif(nIndex==3){value1.type=PRO_PARAM_DOUBLE;value1.value.d_val=17;value2.type=PRO_PARAM_DOUBLE;value2.value.d_val=7;value3.type=PRO_PARAM_DOUBLE;value3.value.d_val=16.5;value4.type=PRO_PARAM_DOUBLE;value4.value.d_val=26;value5.type=PRO_PARAM_DOUBLE;value5.value.d_val=1.5;value6.type=PRO_PARAM_DOUBLE;value6.value.d_val=1.5;value7.type=PRO_PARAM_DOUBLE;value7.value.d_val=10;value8.type=PRO_PARAM_DOUBLE;value8.value.d_val=0.8;value9.type=PRO_PARAM_DOUBLE;value9.value.d_val=m_L;}elseif(nIndex==4){value1.type=PRO_PARAM_DOUBLE;value1.value.d_val=19;value2.type=PRO_PARAM_DOUBLE;value2.value.d_val=8;value3.type=PRO_PARAM_DOUBLE;value3.value.d_val=18;value4.type=PRO_PARAM_DOUBLE;value4.value.d_val=30;value5.type=PRO_PARAM_DOUBLE;value5.value.d_val=2;value6.type=PRO_PARAM_DOUBLE;value6.value.d_val=1.75;value7.type=PRO_PARAM_DOUBLE;value7.value.d_val=12;value8.type=PRO_PARAM_DOUBLE;value8.value.d_val=0.8;value9.type=PRO_PARAM_DOUBLE;value9.value.d_val=m_L;}elseif(nIndex==5){value1.type=PRO_PARAM_DOUBLE;value1.value.d_val=22;value2.type=PRO_PARAM_DOUBLE;value2.value.d_val=9;value3.type=PRO_PARAM_DOUBLE;value3.value.d_val=21;value4.type=PRO_PARAM_DOUBLE;value4.value.d_val=34;value5.type=PRO_PARAM_DOUBLE;value5.value.d_val=2;value6.type=PRO_PARAM_DOUBLE;value6.value.d_val=2;value7.type=PRO_PARAM_DOUBLE;value7.value.d_val=14;value8.type=PRO_PARAM_DOUBLE;value8.value.d_val=0.8;value9.type=PRO_PARAM_DOUBLE;value9.value.d_val=m_L;}elseif(nIndex==6){value1.type=PRO_PARAM_DOUBLE;value1.value.d_val=24;value2.type=PRO_PARAM_DOUBLE;value2.value.d_val=10;value3.type=PRO_PARAM_DOUBLE;value3.value.d_val=23;value4.type=PRO_PARAM_DOUBLE;value4.value.d_val=38;value5.type=PRO_PARAM_DOUBLE;value5.value.d_val=2;value6.type=PRO_PARAM_DOUBLE;value6.value.d_val=2;value7.type=PRO_PARAM_DOUBLE;value7.value.d_val=16;value8.type=PRO_PARAM_DOUBLE;value8.value.d_val=1.2;value9.type=PRO_PARAM_DOUBLE;value9.value.d_val=m_L;}elseif(nIndex==7){value1.type=PRO_PARAM_DOUBLE;value1.value.d_val=27;value2.type=PRO_PARAM_DOUBLE;value2.value.d_val=12;value3.type=PRO_PARAM_DOUBLE;value3.value.d_val=26;value4.type=PRO_PARAM_DOUBLE;value4.value.d_val=42;value5.type=PRO_PARAM_DOUBLE;value5.value.d_val=2.5;value6.type=PRO_PARAM_DOUBLE;value6.value.d_val=2.5;value7.type=PRO_PARAM_DOUBLE;value7.value.d_val=18;value8.type=PRO_PARAM_DOUBLE;value8.value.d_val=1.2;value9.type=PRO_PARAM_DOUBLE;value9.value.d_val=m_L;}elseif(nIndex==8){value1.type=PRO_PARAM_DOUBLE;value1.value.d_val=30;value2.type=PRO_PARAM_DOUBLE;value2.value.d_val=13;value3.type=PRO_PARAM_DOUBLE;value3.value.d_val=29;value4.type=PRO_PARAM_DOUBLE;value4.value.d_val=46;value5.type=PRO_PARAM_DOUBLE;value5.value.d_val=2.5;value6.type=PRO_PARAM_DO

温馨提示

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

评论

0/150

提交评论