• 2.15 MB
  • 2022-04-22 13:47:48 发布

桥结构总成数据库开发毕业论文.doc

  • 0页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'桥结构总成数据库开发毕业论文目录中文摘要4英文摘要51绪论61.1课题背景及目的61.2DELPHI7.0介绍71.3MicrosoftofficeAccess2003简介82系统需求分析92.1需求分析的目的92.2系统需求分析93系统整体设计103.1系统分析与设计103.1.1数据库设计113.1.2系统功能模块设计123.2主界面设计123.2.1窗体123.2.2Autovue和MediaPlayer组件134功能模块划分与实现方法144.1工程文件的建模与动画演示144.1.1建模144.1.2生成演示动画154.2信息表的建立与连接194.3登陆闪现窗口的设计204.4“菜单栏”功能简介与实现方法224.4.1“文件”菜单224.4.2“编辑”菜单234.4.3“查看”菜单28 4.4.4“帮助”菜单294.5“工具栏”功能简介与实现方法304.6“状态栏”功能简介与实现方法304.7“快捷菜单”功能简介与实现方法314.8“媒体播放器”功能简介与实现方法314.9“Autovue”功能简介与实现方法324.10“SolidWorks编辑器”功能简介与实现方法334.10.1打开零件344.10.2装配体中插入零件344.10.3Preview的功能介绍与实现344.10.4“深沟球轴承和普通平键的参数化开发”功能简介与实现方法35结论39致谢39参考文献40附录一41附录二85附录三90表3.1数据表11表3.2动画表11表3.3尺寸表11表3.4键表11图3.1数据库系统主要功能模块12图3.2系统主界面13图4.1前驱动桥总成15图4.2中央传动总成16图4.3转向横拉杆总成16图4.4转向油缸总成17图4.5减速器总成17图4.6万向传动轴18 图4.7摆座总成18图4.8程序闪现窗口21图4.9“文件”菜单及其下拉菜单22图4.10“编辑”菜单及其下拉菜单26图4.11删除按钮的弹出对话框29图4.12复制按钮的弹出对话框32图4.13“查看”菜单及其下拉菜单33图4.14“帮助”菜单及其下拉菜单34图4.15“主题”菜单及其下拉菜单34图4.16“工具栏”35图4.17“状态栏”35图4.18媒体播放器36图4.19Autovue操作界面37图4.20Preview界面39图4.21深沟球轴承的开发界面40图4.22普通平键的绘制界面421604桥结构总成数据库开发摘要:随着信息化产业的需求和兴起,零件的装配建模与运动仿真一直是设计者关心的问题。驱动桥的拆卸和装配在维修中占有很大的工作量,而且工序复杂,有很高的技术要求。通过装配建模和运动仿真的演示,可以使设计者直接地了解所设计的装配体,同时也可以使客户有效的了解各个零部件之间的关系,并且进一步了解驱动桥的拆卸与装配过程。从而很大程度上避免了因拆装不当而造成原配合面破坏、机件损坏、技术状态恶化等各种故障。零件的参数化开发也必将大大减少工程设计人员繁杂的工作量。本文以1604桥文件管理系统的设计和开发 以及对深沟球轴承和普通平键的参数化开发为例,系统地阐述了数据库系统设计开发以及零件参数化的的全过程。关键词:驱动桥数据库开发Delphi编程参数化Abstract: Withtheneedsandriseofinformationindustry,designersarepayingmoreattentiontothepartsassemblymodelingandsimulationmovement.Itpaysmuchworkloadtodismantleandassemblethedriveaxle,andtheprocessesareverycomplex,anditneedshightechnicalrequirements.Throughthedemonstrationofassemblymodelingandsimulationmovement,designercanunderstandthedesignmoredirect,besides,byusingthesystem,customercanunderstandtherelationshipofeachpartmoreeffective,andmakefurtherunderstandingofthedisassemblyandtheassemblyprocessofdriveaxle.Thusitcanlargelyavoidthefaultssuchasthedestructionofsurfaceforthereasonoferrorofassembly,thedamageofparts,theworseningoftechnicalcondition.Theparametrizationofcomponentorpartswillgreatlyreducethemultifarious workload.Thisessaytake"databasedevelopmentofformerdriveaxlesystemandtheparametrizationofdeepgrooveballbearingsandordinarykey"forinstance,expoundssystematicallytheprocessofdesigningadatabasesystemandthedevelopmentprocessoftheparametricparts.Keywords:formerdriveaxlesystem,databasedevelopment,Delphi,parametricprogramming1绪论现在的工业领域,越来越多地把产品的设计、分析、制造、数据管理与信息技术融为一体。传统的数据文件管理模式只是将工程文件存放到指定硬盘中,有时分散到多个硬盘的多个文件夹,这种传统的文件存储及检索方式非常费时费力,已经不适应信息化飞速发展的今天,而传统的零件建模方式使设计人员浪费大量时间在标准件或其他系列化通用件的绘制工作上。随着Delphi数据库技术的发展和企业信息化建设的进行,使用数据库管理系统管理工程文件成为大势所趋,它将为工程人员的设计开发工作节约大量的人力和物力。而零件尤其标准化零件的参数化开发也必将大大减少工程设计人员繁杂的工作量。本文以“前驱动桥系统总成数据库开发” 的设计和开发以及对深沟球轴承和普通平键的参数化开发为例,系统地阐述了数据库系统设计开发以及零件参数化的的全过程。包括系统整体设计,逻辑框架与数据流程,各个功能模块划分,系统功能模块的设计与具体实现等部分。1.1课题背景及目的当今,计算机已经成为我们学习和工作的得力助手,我们的生活也越来越离不开它。随着现代科技的进步,用计算机来进行工程文件的管理以及零部件的参数化设计也成为工程时间中必不可少的一部分。计算机技术特别是数据库技术的发展为企业建立管理信息系统,甚至对改变管理思想起着不可估量的作用。实践证明信息技术已在企业的管理层面扮演越来越重要的角色。工业生产领域的工程技术人员往往掌握熟练的专业技能,但利用计算机开发有利于本行业发展的相关软件的技能往往相对匮乏,相关的从业人员较少,而计算机专业的技术人员熟练掌握软件开发知识,但是他们往往开发一些通用软件,对于专业性很强的机械行业很少有人涉足。事实也说明大量工程应用软件是由机械行业的技术人员开发的,这为我们机械偏向性比较强的技术人员提出了新的要求与挑战。针对这一现状,我在深入学习Delphi编程技术、SQL以及Access数据库技术后,以前驱动桥为例,开发了方便我们工程人员自己的数据库管理软件,并以轴承和键为例,开发了标准件的参数化软件。1.2DELPHI7.0介绍由Borland公司推出的Delphi是全新的可视化编程环境,为我们提供了一种方便、快捷的Windows应用程序开发工具。它使用了MicrosoftWindows图形用户界面的许多先进特性和设计思想,采用了弹性可重复利用的完整的面向对象程序语言(Object-OrientedLanguage)、当今世界上最快的编译器、最为领先的数据库技术。DELPHI拥有一个可视化的集成开发环境(IDE),采用面向对象的编程语言ObjectPascal和基于部件的开发结构框架。Delphi它提供了500多个可供使用的构件,利用这些部件,开发人员可以快速地构造出应用系统。开发人员也可以根据自己的需要修改部件或用Delphi本身编写自己的部件。主要特点如下:(1)直接编译生成可执行代码,编译速度快。 (2)支持将存取规则分别交给客户机或服务器处理的两种方案,而且允许开发人员建立一个简单的部件或部件集合,封装起所有的规则,并独立于服务器和客户机,所有的数据转移通过这些部件来完成。(3)提供了许多快速方便的开发方法,使开发人员能用尽可能少的重复性工作完成各种不同的应用。(4)具有可重用性和可扩展性。(5)具有强大的数据存取功能。数据处理工具BDE(BorlandDatabaseEngine)是一个标准的中介软件层,可以用来处理当前流行的数据格式,如xBase、Paradox等,也可以通过BDE的SQLLink直接与Sybase、SQLServer、Informix、Oracle等大型数据库连接。Delphi既可用于开发系统软件,也适合于应用软件的开发。(6)拥有强大的网络开发能力。(7)Delphi使用独特的VCL类库,使得编写出的程序显得条理清晰。Delphi是著名的Borland(现在已和Inprise合并)公司开发的可视化软件开发工具。“真正的程序员用C,聪明的程序员用Delphi”,这句话是对Delphi最经典、最实在的描述。Delphi被称为第四代编程语言,它具有简单、高效、功能强大的特点。和VC相比,Delphi更简单、更易于掌握,而在功能上却丝毫不逊色;和VB相比,Delphi则功能更强大、更实用。可以说Delphi同时兼备了VC功能强大和VB简单易学的特点。Delphi具有以下的特性:基于窗体和面向对象的方法,高速的编译器,强大的数据库支持,与Windows编程紧密结合,强大而成熟的组件技术。但最重要的还是ObjectPascal语言,它才是一切的根本。ObjectPascal语言是在Pascal语言的基础上发展起来的,简单易学。在Delphi众多的优势当中,它在数据库方面的特长显得尤为突出:适应于多种数据库结构,从客户机/服务机模式到多层数据结构模式;高效率的数据库管理系统和新一代更先进的数据库引擎;最新的数据分析手段和提供大量的企业组件。1.1MicrosoftofficeAccess2003简介Access 是微软公司推出的基于Windows的桌面关系数据库管理系统,是Office系列应用软件之一。它提供了表、查询、窗体、报表、页、宏、模块7种用来建立数据库系统的对象;提供了多种向导、生成器、模板,把数据存储、数据查询、界面设计、报表生成等操作规范化;为建立功能完善的数据库管理系统提供了方便,也使得普通用户不必编写代码,就可以完成大部分数据管理的任务。Access的优点:(1)存储方式单一Access管理的对象有表、查询、窗体、报表、页、宏和模块,以上对象都存放在后缀为(.mdb)的数据库文件种,便于用户的操作和管理。(2)面向对象Access是一个面向对象的开发工具,利用面向对象的方式将数据库系统中的各种功能对象化,将数据库管理的各种功能封装在各类对象中。(3)界面友好、易操作(4)集成环境、处理多种数据信息(5)Access支持ODBC(开发数据库互连,OpenDataBaseConnectivity)。1系统需求分析1.1需求分析的目的软件的需求分析必须要有对原业务的一个深入了解、提取、抽象、升华的过程,数据库系统软件需求分析同样如此。软件的需求分析是从用户的业务中提取出软件系统能够帮助用户解决的业务问题,通过对用户业务问题的分析,规划出软件产品。这个步骤是对用户业务需求的一个升华,是一个把用户业务管理流程优化,转化为软件产品,从而实现企业生产的质的飞跃,这一步是否成功,直接关系到开发出来的软件产品能否经得住实践的考验。按照软件工程对软件开发过程的描述,需求阶段可以细分为需求调研和需求分析两个小阶段,需求调研需要充分细致的了解客户目标,用户业务内容、流程等,这是一个对需求的采集过程,是进行需求分析的基础准备。当已经了解、理解用户的业务后,就可以就可以进行需求分析了。 1.1系统需求分析本系统由于时间的关系,没有实际地与用户进行交流去了解他们的要求,而是通过自己对现代化企业的一些了解而做出的一些分析。根据需要,此次开发数据库管理系统主要需要做以下工作:1、对给定的PROE工程文件进行模型转换,生成开发所需的SolidWorks能读取的三维图形文档,并对文档进行建模;2、利用Autovue以及MediaPlayer插件实现文件在软件主窗口的演示播放,方便工程人员调取相关格式文件;3、基于自动化技术,利用Delphi对SolidWorks进行二次开发实现对选定数据库中工程文件以及计算机内部所有SolidWorks工程文件进行编辑;4、利用Delphi对标准零件深沟球轴承以及普通平键进行参数化开发,工程人员只需选择尺寸参数便可在SolidWorks中生成相应的轴承或平键。以上简单地对本系统做了功能方面的需求分析,系统功能的实现将在下面的整体设计中具体介绍。2系统整体设计2.1系统分析与设计基于上面的分析,按照工程软件开发的思想,对管理系统进行功能分析:·实现数据存储功能;·实现数据在软件主界面的导入与输出;·不同数据文件之间的切换;·数据添加;·工程文件的另存、复制、删除;·对树状列表进行节点、子节点的新建,数据库文件的重命名;·数据库文件在软件主窗口的显示;·点击选中工程文件在主窗口中实现演示及多功能文件处理;·点击选中动画演示文档在主窗口中实现动画的播放,并具备媒体播放软件所具备的播放、暂停、停止、快进、快退等功能; ·文件信息显示、修改保存文件信息、关闭窗口;·不同插件之间的切换功能;·退出;另外,二次开发方面需要实现以下功能:·基于自动化技术,利用Delphi对SolidWorks进行二次开发实现在不打开SolidWorks也不利用其它外界插件的情况下对工程文件进行快照,快速浏览文件大致内容;·利用Delphi生成EXE文件对选定数据库中工程文件以及计算机内部所有SolidWorks工程文件进行编辑,以及自动将零件插入装配体中;·利用Delphi对标准零件深沟球轴承以及普通平键进行参数化开发,通过将国家标准尺寸数据录入Access数据库中,方便的实现尺寸数据的调用。使用者只需做出选择便可生成相应的轴承或平键。附加功能:·主题窗口、帮助。1.1.1数据库设计基于以上的功能分析,为数据库系统创建4个数据表,表的类型采用Access表,分别命名为数据表、动画表、尺寸表、键表。将其数据表的设计如下:表3.1数据表字段名字段类型字段大小关键字ClassID文本50*ClassName文本50ClassPath文本 50 表3.2动画表字段名字段类型字段大小关键字ClassID文本50*ClassName文本50ClassPath文本 50  表3.3尺寸表字段名字段类型字段大小关键字轴承代号文本50*d轴承内径文本50DD外径文本 50 B文本50N数字长整形表3.4键表字段名字段类型字段大小关键字b数字长整形*h数字长整形公称直径d文本 50 接下来按照数据库的结构,使用Access创建数据表,命名为data.mdb,并将其路径指定为数据表所在的目录然后去除绝对路径之前的内容,剩下“.data.mdb”,这样数据库将以相对路径建立链接,无论数据表随从软件移动到任何地方都不妨碍数据库文件的读写。 1.1.1系统功能模块设计前驱动桥数据库管理系统的主要功能模块及其关系,如图3.1所示: 图3.1数据库系统主要功能模块1.1主界面设计1.1.1窗体主界面的设计是数据库开发的关键步骤,因为它在某种程度上体现了程序开发的质量和水平。前驱动桥信息管理系统采用多页形式的窗口,用户可通过切换按钮来操作整个系统的不同功能。这种界面的优点是结构紧凑,逻辑性强。图3.2系统主界面 1.1.1Autovue和MediaPlayer组件3.2.2.1AutovueAutoVue是一款来自加拿大CimmetrySystem公司的多用途文档浏览、标注、协同作业的应用软件。AutoVue即可直接浏览、标注450种以上的常用工程、商业格式文档,并完全保留原始文档的完整性和安全性。AutoVue是一个多用途的应用软件,可以提供一致的单一界面和一组内容丰富的工具,很容易地查看、标注、打印和转换各种电子文件。一些常用的格式如AdobeAcrobatPDF、AutoCAD、CALSG4、CGM、HPGL/2、Lotus123、MicroStation、ME10、MSWord、Excel、TIFF、WordPerfect、SolidWorks、UG、Pro/E等等。AutoVue可以在DOS,Windows和Unix平台上执行。由于AutoVue并不关心文件是由何种软件创建的,它只是根据文件的内容而不是文件的扩展名来进行识别,因此无论是扫描仪、文件处理软件、CAD图形、电子表格若其他软件创建的文件,它都能快速打开并正常显示。1.Office文件AutoVue可以支持Word、Excel、PowerPoint、Visio、Lotus123、TIFF等多种流行的办公和图形文件格式,涉及的范围包括文字处理、电子表格、数据库等AutoVue可以用来查看PDF格式的文件。2.2DCAD文件   AutoVue对2DCAD的支持相当出色,可以直接打开DWG、DXF、DWF、MicroStation、DGN、HPGL、CGM、IGES、ME10、Cadkey、EPS、Visio等格式的文件。提供了很多实用的工具,例如缩放、旋转、移动、鹰眼、分层显示等工具,AutoVue会自动高亮显示那些增加、删除或保持不变的元素,我们可以直接查询图形的实体信息,还可以利用小望远镜和监视窗口功能允许用户沿路径放大,例如沿着一个管子、电线、路线进行放大。  3.3DCAD文件  对设计人员来说,接触更多的可能是3DCAD文件,这时如果安装专业的机械设计或电子设计软件,其代价不会太小。而AutoVue对3DCAD提供了良好的支持,例如CATIA、UG、Pro/E、Soild、Edge、SolidWorks、Inventor、Mechanical、JT、ACIS、STEP、IGES、STL、VRML等,用户可以精确地测量所有的尺寸,包括角度、弧、圆、表面积、距离,可以利用3D渲染方式渲染模型,包括阴影模型、线框模式、轮廓、隐藏线去除模式,也可以定义光照的设置,包括光的方向、颜色和类型等。本数据库管理系统软件正是基于Autovue的强大功能实现三维视图的展示。3.2.2.2MediaWindowsMediaPlayer可以播放MP3,WMA,WAV等音频文件,视频方面可以播放AVI,MPEG-1,本数据库管理软件正是基于MediaPlayer强大的媒体播放功能实现工程时间中复杂系统的装配动画文件。1功能模块划分与实现方法1.1工程文件的建模与动画演示1.1.1建模工程文件有很多种比如CATIA、UG、Pro/E、Soild、Edge、SolidWorks、Inventor、Mechanical、JT、ACIS、STEP、IGES、STL、VRML等,有时根据需求,要对不同格式的工程文件进行格式转换。此次建模首先要把给定的Pro/E文件转换为Solid-Works文件。主要方法是将需要转换的Pro/E文件打开,将其另存为STEP或IGES格式文件。STEP(STandardExchangeofProductdatamodel)标准是国际标准化组织制定的描述整个产品生命周期内产品信息的标准,它提供了一种不依赖具体系统的中性机制,旨在实现产品数据的交换和共享。这种描述的性质使得它不仅适合于交换文件,也适合于作为执行和分享产品数据库和存档的基础。IGES是被定义基于Computer-AidedDesign(CAD)&Computer-AidedManufacturing(CAM)systems(电脑辅助设计&电脑辅助制造系统)不同电脑系统之间的通用ANSI信息交换标准。用户使用了IGES格式特性后,可以读取从不同平台来的NURBS数据。正是基于STEP和IGES这两种标准,本次建模将Pro/E文档生成两者之一的IGES格式文件然后在SolidWorks中打开生成的IGES文件另存为*.sldprt和*.sldasm格式文档。由于Pro/E和SolidWorks建模方式不同,因此转换后的文档部分参数以及配合关系丢失,需要重新建立,这里不再详述。 1.1.1生成演示动画SolidWorks中附有SolidWorksAnimator插件,点击工具栏中的插件按钮,将该插件选中则SolidWorks编辑界面下显示动画按钮。对于本次编辑,需要首先制作装配体的爆炸视图,然后点击动画按钮,按照操作步骤生成avi文件。由于生成的视频文件往往占用空间很大,因此采取压缩模式进行保存。生成的视频文件截图见图4.1—图4.7。图4.1前驱动桥总成 图4.2中央传动总成图4.3转向横拉杆总成 图4.4转向油缸总成图4.5减速器总成 图4.6万向传动轴图4.7摆座总成 1.1信息表的建立与连接根据功能需要,数据库管理系统需要任意读写文件以及能够在主窗口中打开文件,这主要有两种方式可以实现:一种是将工程文件完整地保存与数据库中,另一种方式是设定索引,将路径保存在数据库中由文件路径来驱动插件。由于工程文件往往占用很大的硬盘空间,因此该数据库系统采取第二种方式建立数据库。具体的数据库文件内容是:数据表和动画表中文件由数据库软件根据建模情况进行动态添加,而尺寸表和键表中数据根据国家标准直接录入到数据表中,在数据库软件中直接调用,不再更改。数据库的连接主要利用Delphi中的ADO组件,另外利用DataAccess以及DataControls组件可实现数据表在连接后显示于软件主界面。具体步骤如下:1、放置adoconnection控件设置NAME属性。CONNECTIONSTRING属性是设置连接字符串的,连接各类数据库都要用到它。LOGINPROMPT属性是设置是否每次连接都提示输入密码,这个一般设置为FALSE,点击Connectstring属性由于采用Access数据库因此选择UseConnecttionString选项,选择MicrosoftJet4.0OLEDBProvider点击下一步选择所需要连接的数据库,因为软件以及数据库在电脑中的存放位置是不固定,因此选用相对路径对数据库文件进行连接。本数据库系统将data.mdb数据表放在与主程序同级文件夹中,因此连接路径设定为“.data.mdb”。CONNECTED属性设置为TRUE,数据表连接成功。2、放置ADOTABLE控件设置CONNECTION属性为adoconnection控件,这样才能连接到adocon-nection控件所连接的ACCESS数据库。然后设置TABLENAME属性,设置连接的表名,亦即本系统中的数据表、动画表、尺寸表、键表。现在把ADOTABLE的ACTIVE属性设置成TRUE就可以连接该表。数据表完成连接往往需要将其显示在主窗口中,这就需要一个DATASOURSE控件。3、放置DATASOURSE控件设置DATASET属性为ADOTABLE控件。4、最后添加DBGRID控件 把数据表中的内容显示出来的最简单方法就是添加一个DBGRID控件。设置DBGRID控件的DATASOURCE属性为刚才放置的DATASOURSE控件。这样,一个完整的数据库链就串起来了。1.1登陆闪现窗口的设计在许多应用软件中,启动程序后,在主导界面出现之前,有一个一般以图象为主,文字为辅的画面,通常用来显示软件或公司的主题标志、软件名称、作者、版权和版本信息等,停留数秒或按了任意键后软件进入主导界面,这个画面称为Splash画面,意思为引人注目画面。这个画面的另外一个用处是在处理耗时进程时,为用户展示一幅优美、舒心的图象。 1.在主程序中增加一个窗体,把它的名字改为SplashForm,BorderStyle属性设置为bsNone,Position属性设置为poScreenCenter。2.为SplashForm窗体增加一系列必要的构件,如Label、Panel、Image、Shape以及Bevel等。3.使用IDE的Project|Option功能项把SplashForm窗体从Auto-Create表移到Available表中。4.将SplashForm窗体的Unit加入到主窗体Unit的Uses语句中。5.在主程序的.dpr文件中加入一段控制代码,位置是在begin之后、其他代码之前,代码如下:SplashForm:=TSplashForm.create(Application);SplashForm.Show;SplashForm.refresh;其目的是在建立其他窗体及运行程序之前,建立并显示Splash窗体。6.编写主窗体OnShow事件的响应过程。SplashForm.Free;在本例中,这段代码作用为当屏幕显示主窗体时,释放Splash窗体。7.最后,为主程序的.dpr文件写一段延迟程序,目的是使Splash画面在屏幕上有一段停留的时间。最简单的办法使用一个无效循环,如:vari,x:longintfori:=1to100000do x:=i;但是,由于机器运行速度不同,有快有慢,表现出来的效果并不理想,本数据库系统使用时间函数来实现延时效果,主要代码如下。procedureTForm1.FormCreate(Sender:TObject);//开启延时varcurrentTime:LongInt;begincurrentTime:=GetTickCountdiv1000;while((GetTickCountdiv1000)<(currentTime+2))dobeginend;//不做任何事end;图4.8程序闪现窗口 如图4.8所示,程序启动闪现页面就做成了,任何一个软件其功能性是最基本的要求,但是程序界面是否美观也是衡量软件设计好坏的一个重要标准,应该说程序闪现页面的设计增加了软件的美感。1.1“菜单栏”功能简介与实现方法菜单栏是在标题栏下的水平栏,菜单内是各个命令,本数据库系统包含:文件、编辑、查看、帮助以及SW编辑5个菜单。下面依次说明各菜单按钮的功能及实现方法。1.1.1“文件”菜单菜单下有五个下拉菜单按钮,见图4.9。图4.9“文件”菜单及其下拉菜单1.导入数据由于本数据库系统需要多个表,对于主窗口需要在同一个位置显示两个不同的数据表,实现的方式有两种,其一是利用同一个Treeview组件,分别调用两个数据表,另一种方法是用两个Treeview组件,分别显示不同的数据表,此方法相对容易实现,因此本系统采用两个Treeview组件,方便功能的实现。主程序中实现该功能的主要程序段见附录中“procedureTForm1.N4Click(Sender:TObject);//装载三维图像数据”、“procedureLoadTree(tree:Ttreeview;treeDB:TADOTable;sID,sCaption1,sCaption2:string);//初始化树”。 而其中的SetFocus、Trim、BeginUpdate分别来自Controls、SysUnils和ComCtrls。激活树节点的程序见附录中“procedureTForm1.tv1Click(Sender:TObject);//激活Treeview1”。动画表的调用与激活与数据表的调用非常相似,不再赘述。2.数据切换由于采用两个Treeview实现不同信息表的分别显示,因此数据切换实际上是通过对两个Treeview组件以及相关调用程序的切换来实现的。由于切换按钮在同一位置显示,点击同一按钮要实现不同功能,因此可以在同一位置放置两个按钮,在不同时候对两个按钮工作与否做相应设定,而每个按钮分别连接到两个不同的表的导入,从而实现了使用者点击同一位置实现两个表的切换。具体程序段参考上面数据导入。3.添加添加命令与新建子节点相似,将在下文详细介绍。4.退出退出软件的命令是Close。1.1.1“编辑”菜单编辑菜单下有7个下拉菜单按钮,见图4.10图4.10“编辑”菜单及其下拉菜单1.新建节点新建节点命令通过if条件语句实现两个表中活动表的同级节点添加命令,点击新建节点按钮会弹出“打开” 对话框,通过选择文件,将所选文件的文件名及文件路径赋给系统“新建节点”对话框中相对应的Edit组件,点击确定按钮将相应信息赋给函数中的变量AddChildText1和AddChildText2。从而实现节点的动态创建。弹出的对话框与删除命令对话框相类似,这里不再附图,主要程序段见附录中“procedureTForm1.N7Click(Sender:TObject);//新增节点”。其中CurrentTreeNode:TTreeNode,而GetNewCode函数主要程序段见附录中的“functionGetNewCode(TempDB:TAdoquery;sID,sTable:string;curNode:TTreenode;”。2.新建子节点新建子节点命令与新建节点命令类似,也是通过if条件语句实现向两个表中的活动表添加节点,不同的是新建子节点命令给选定节点添加子节点,点击新建节点按钮会弹出“打开”对话框,通过选择文件,将所选文件的文件名及文件路径赋给系统“新建节点”对话框中相对应的Edit组件,点击确定按钮将相应信息赋给函数中的变量AddChildText1和AddChildText2。从而实现节点的动态创建。弹出的对话框与删除命令对话框相类似,这里不再附图,主要程序段见附录中的“procedureTForm1.N8Click(Sender:TObject);//新增子节点”。其中GetNewCode命令的主要实现语句见附录中的“functionGetNewCode(TempDB:TAdoquery;sID,sTable:string;curNode:TTreenode;Child:boolean):string;”。3.删除删除文件实际上是对数据库文件的一种改写,通过对数据库元素的动态减少来实现删除功能,而文件本身并没有任何改变。其弹出窗口如图4.11所示。 图4.11删除按钮的弹出对话框删除命令的主要程序段见附录中的“procedureTForm1.N10Click(Sender:TObject);//删除文件”。该删除命令包含了对两个Treeview中节点的删除,其以Treeview的可见与否实现对不同列表节点的删除。其中UpdateTreeAndDB函数是对Treeview进行编辑的重要函数,其可实现在新增节点,子节点、删除、重命名时,同步更新树形结构和数据库,现列于下。procedureUpdateTreeAndDB(tree:TTreeView;CurTreeNode:TTreeNode;treeDB://以下过程在新增、删除、修改记录时,同步更新树形结构和数据库TADOTable;sid,sCaption1,sCaption2,nodeTxt1,nodeTxt2,state:string;NewID:string="");vartmpNode:TTreeNode;oldid:string;beginoldid:=GetCurrentNodeCode(CurTreeNode);ifUpperCase(state)="ADD"then//添加平级节点beginCurTreeNode:=tree.items.add(curtreenode,NewID+"-"+nodeTxt1);CurTreeNode.ImageIndex:=2;end; ifUpperCase(state)="ADDCHILD"then//添加子节点beginCurTreeNode:=tree.items.addchild(curtreenode,NewID+"-"+nodeTxt1);CurTreeNode.ImageIndex:=2;end;ifUpperCase(state)="DEL"thenbeginifCurTreeNode.Level=0thenbeginMessageBox(Application.Handle,"根节点无法删除。","错误",MB_OK+MB_ICONSTOP);exit;end;trytmpNode:=CurTreeNode.GetPrev;excepttrytmpNode:=CurTreeNode.Getnext;excepttmpNode:=CurTreeNode.Parent;end;end;NewID:=GetCurrentNodeCode(CurTreeNode);CurTreeNode.DeleteChildren;CurTreeNode.delete;CurTreeNode:=tmpNode;end;ifUpperCase(state)="EDIT"thenbeginCurTreeNode.Text:=NewID+"-"+nodeTxt1; end;CurTreeNode.Selected:=true;treeDB.Active:=true;treeDB.Locate(sid,oldID,[]);UpdateTable(treeDB,sid,sCaption1,sCaption2,Newid,nodetxt1,nodetxt2,state);//更新表end;4.重命名重命名命令与新建节点,新建子节点以及删除命令有相似地方,由于篇幅限制,这里列出主要不同程序段:UpdateTreeAndDB(TV2,CurrentTreeNode,DataModule2.ADOTb2,"classid","className","Classpath",AddChildText1,AddChildText2,"edit",newid);//更新树和数据库。ShowMessage("修改成功!");其中UpdateTreeAndDB详见删除命令。5.复制文件文件的复制是采用Delphi中的复制函数,通过赋予函数目标文件位置及文件名,以及源文件绝对路径及名称,可以实现文件的移动。本系统并没有设置开放的目标文件位置,而是将目标文件路径设定为主程序所在目录同级文件夹下的Files文件夹中,之所以这样处理是因为通过绝对路径驱动插件工作有很大的弊端就是文件移动或删除后无法读取,通过文件的复制功能可以将文件移至主程序同级或临近级别的文件夹中,这样方便以相对路径对文件进行读取。复制过的文件不再需要担心其位置的改变以及文件的删除,这非常有利于对系统的再开发。点击复制按钮后的界面如图4.12所示。图4.12复制按钮的弹出对话框实现复制的主要程序段如下: procedureTForm1.ToolButton17Click(Sender:TObject);//复制文件vars:Pchar;c:Pchar;begins:=Pchar(Edit4.Text);c:=Pchar(ExtractFilePath(application.ExeName)+"Files"+Edit3.Text);copyfile(s,c,true);messagedlg("文件成功复制到程序所在的同级Files文件夹中!",mtInformation,[mbOK],0);end;6.添加附件及撤销附件附件主要是对SolidWorks文档的二次开发以及对标准化零件的参数化开发。其功能实现是通过对MainMenu1.Items[i].visible的赋值实现功能的可用与否。值为True时菜单栏增加“SW文件编辑”菜单及其下拉菜单。False则关闭。1.1.1“查看”菜单查看菜单下只有一个下拉菜单按钮,见图4.13.图4.13“查看”菜单及其下拉菜单文件信息文件信息命令利用if条件语句实现对活动数表进行注解,方便工程人员了解文件信息。本系统对两种信息表分别设置了一个memo组件点击“文件信息”按钮通过对memo组件以及DBGrid组件的窗口大小以及可视与否做调整实现文件信息的显示。为了使系统更具有开放性以及通用性,系统memo组件的显示内容采用动态读写方式,文件修改后点击保存按钮文档会保存到系统同级文件夹下的temp文件夹中的文本文档中,由于采用相对路径对文档进行读写,因此无需担心因为目标文本文档的移动而无法读写信息。 文件信息读写命令见附录“procedureTForm1.ToolButton34Click(Sender:TObject);//文件信息”。保存命令见附录“procedureTForm1.btn2Click(Sender:TObject);//文件属性编辑保存”。另外文件信息打开后需要一个关闭按钮才实现信息读取功能的完整性,关闭按钮的原理是对信息窗口和表格窗口的大小及可视化的调整。其简易代码见附录中“procedureTForm1.SpeedButton1Click(Sender:TObject);//关闭属性栏”。1.1.1“帮助”菜单帮助菜单下有两个下拉菜单按钮,见图4.14.图4.14“帮助”菜单及其下拉菜单1.主题主题窗口介绍系统名称、版本、开发作者、开发时间等系统相关信息。本系统主题界面如图4.15所示。图4.15“主题”窗口主题窗口在Delphi中有通用模板,也可以自己创建个性模板。利用通用模板建立主题窗口的方式是File-New-Other-Forms-Aboutbox。按此顺序依次点击便进入主题创建界面,添加相应组件便如上图所示。其中调用ShellAPI函数中的shellExecute 命令可以直接向邮箱地址发送电子邮件。具体程序如下所示:shellExecute(handle,"open","mailTo:chenlianghit@163.com",nil,nil,SW_SHOWNORMAL);帮助由于软件功能教简单,帮助文件只是个弹出式对话框。软件详细使用方法见Readme.txt。1.1“工具栏”功能简介与实现方法工具栏是对文件进行编辑处理的按钮集成栏。其主要按钮如图4.16所示。图4.16“工具栏”工具栏依托菜单栏内主要程序。由于工具栏按钮均为单击事件,因此在设置好按钮大小、位置、其上信息、图片索引等信息后,将Onchange时间链接到与其功能一致的时间上。从而实现代码的共享。由于主要功能于前已述,这里从略。值得强调两点是Toolbutton组件属性中ShowCaption需要设置为True才能向按钮中添加文字信息,另外由于采用两个Treeview组件,而且需要对切换按钮的不同点击实现不同功能,因此本次设计实际上采用了两个Toolbutton组件,通过对visible属性的复制实现叠加在一起的Toolbutton分别工作。1.2“状态栏”功能简介与实现方法状态栏中往往动态添加一些当前的软件运行信息。本系统简单添加了读取文件路径、程序设计、以及当前时间三个子项。见图4.17.图4.17“状态栏”文件路径的动态赋值是通过简单的赋值语句实现的如下所示:StatusBar1.Panels[2].Text:=Edit4.Text; 系统时间则是添加Timer组件并添加赋值语句实现的,语句如下:StatusBar1.Panels[6].Text:=DateTimeToStr(now);1.1“快捷菜单”功能简介与实现方法这里讲的快捷菜单是指鼠标的右击事件打开的跟随菜单。其使用的是Popupmenu组件,通过添加按钮以及将相应按钮链接到相应的按钮上实现程序共享。本系统设计了两个Popupmenu组件,分别是对Treeview所在Panel设置的与工具栏相一致的按钮,另一个是为视频播放窗口所在Panel创建的与媒体播放器按钮功能一致的快捷菜单。主要创建方法与工具栏、菜单栏类似。1.2“媒体播放器”功能简介与实现方法媒体播放器是视频播放功能实现的终端。对于MediaPlayer插件,只需将文件的路径赋予MediaPlayer1.FileName赋予方式有两种,一种是将树状列表中所选的媒体文件的路径赋给MediaPlayer1.FileName,另一种方式是通过设定OpenDialog组件,将播放器开放为可以播放计算机内所有媒体文件。媒体播放器可以接受文件相对路径,因此对与小文件可以跟随软件一起移动,这为软件移做他用奠定了基础。媒体播放器的播放界面如图4.18所示。图4.18媒体播放器 媒体播放器主要功能实现程序见附录中“procedureTForm1.SpeedButton2Click-(Sender:TObject);//打开多媒体文件”以及附录中的“procedureTForm1.SpeedButton3Click(Sender:TObject);//开始”程序。其它功能代码简述如下MediaPlayer1.Pause;//暂停MediaPlayer1.Stop;//停止MediaPlayer1.Next;//下一步MediaPlayer1.Back;//后退MediaPlayer1.Step;//前进MediaPlayer1.Previous;//初始1.1“Autovue”功能简介与实现方法Autovue用来多功能演示工程文件,其界面如图4.19所示。图4.19Autovue操作界面基于Autovue强大的文件读取功能,本系统不仅可以调取三维工程图,而且可以读取二维图形乃至办公软件Office的相关文档。作为终端插件,Autovue与MediaPlayer一样,只需要赋予文件路径即可打开文件,不同的是Autovue只接受文件的绝对路径,对于前述的相对路径赋予方式对Autovue不适用。 Autovue接受地址赋值的属性为SRC。为了实现软件开放性,在Autovue插件打开的同时工具栏中同步增加Open按钮。利用该按钮不仅可以打开数据库中已有的数据文件,而且可以打开计算机中其它位置的所有可识别的文件。对于以上MediaPlayer以及Autovue插件的切换是由左侧的Combobox组件来实现的,首先对Combobox的Items属性静态赋予“图形文件”和“动画文件”两个内容,这样使用者对Combobox内容做出选择后,Combobox的Text属性会出现相应显示。然后对Combobox的Onselect事件添加条件语句,通过对Combobox显示内容的切换实现MediaPlayer与Autovue的界面切换。具体程序见附录中“procedureTForm1.ComboBox1Select(Sender:TObject);//选择播放窗口”。1.1“SolidWorks编辑器”功能简介与实现方法SolidWorks编辑器中主要功能是对SolidWorks的二次开发,以及对标准化零件的参数化设计,Delphi对SolidWorks的二次开发是通过调用SolidWorks的对象体系结构来进行的,基于OLE技术,API将SolidWorks的各种功能封装在SolidWorks对象之中供编程调用。SolidWorks二次开发分为两种:一种是基于COM的,可以生成*.dll格式的文件也就是SolidWorks的插件。另一种是基于自动化技术的,可以开发EXE形式的程序。两种方式各有千秋,本例正是基于Delphi编程自动化技术对SolidWorks进行二次开发,与VC++相比,用Delphi进行编程,API函数新版旧版混杂在一起,而且新旧版本函数中的参数个数经常不同,这为用Delphi编程增加了难度,与此同时,SolidWorks中录制的宏文件对Delphi编程也只能起到简单的参考作用。尽管Delphi对SolidWorks的二次开发对于初学者来说有一定难度,但是熟练掌握主要功能的实现程序后,复杂零件的开发也只是简单功能的堆积而已。本系统参数化部分以深沟球轴承和普通平键这两个标准化零件为例,详细介绍参数化的开发过程。 1.1.1打开零件零件的打开主要有三个过程,打开SolidWorks,新建一个零件,打开零件。这三个步骤在程序设计过程中不可颠倒。SolidWorks中自带一个类型库里面附带大量函数可以为开发程序提供方便。打开零件功能正是通过调用SolidWorks中的Sld-Works_TLB.pas并且对ExtCtrls进行手工引用来实现此功能的。对于打开指定的零件,主要的开发过程是对文件路径的动态赋予。打开零件的程序见附件中“functionGetOrCreateObject(constClassName:String):ISLdWorks;//根据SolidWorks的运行情况创建或获取SldWorks对象”、“ProcedureStartSolidWorks;safecall;”、“ProcedureOpenPart(varpth:string);”、“ProcedureInsertPart();”、“procedureTOpenSW.Speed-Button1Click(Sender:TObject);//打开主界面数据库中指定文件”和“procedureTOpen-SW.btn1Click(Sender:TObject);//打开计算机系统中其它文件”。1.1.2装配体中插入零件装配体中插入零件的程序段与上面所述原理相同,也是通过调用SolidWorks中的SldWorks_TLB.pas的函数来实现SolidWorks的打开,新建以及插入的。不同之处在于启动SolidWorks之后需要新建一个装配体,然后插入零件。程序见附录中“ProcedureOpenPart(varpth:string);”、“ProcedureInsertPart();”、“procedureTintasm.SpeedButton1Click(Sender:TObject);”、“procedureTintasm.btn1Click(Sender:TObject);”。1.1.3Preview的功能介绍与实现工程实践中常常需要检索某个零件,SolidWorks的启动过程以及打开零件的过程会浪费大量时间。利用Autovue插件,如本系统的主要功能所演示的那样可以相对较迅速的浏览工程文件,但是这是基于第三方插件而实现的,SolidWorks中自带一个类型库里面附带大量函数可以为开发程序提供方便。此次Preview的开发正是通过调用SolidWorks中的SldWorks_TLB.pas并且对ExtCtrls进行手工引用来实现此功能的。它以快照的方式迅速将SolidWorks文件的静态图像转化为BMP格式文档保存到系统方便调用的文件夹中,然后以图片格式进行调取以便快速浏览。 Preview界面如图4.20。程序段见附录中“procedureTview.Button1Click(Sender:TObject);”。图4.20Preview界面1.1.1“深沟球轴承和普通平键的参数化开发”功能简介与实现方法我们知道盖房子的工人不仅没有必要在盖房子之前自己制作好每一块砖,甚至也没有必要知道砖头是怎样制造的。正是在这样的理念下,标准件产生了。当今工业领域,标准件的广泛使用不仅对生产者、销售者带来效益带来实惠、而且对广大消费者的使用及维护也是十分方便的。深沟球轴承和普通平键就是标准件中的典型代表,工人师傅可以轻松地用“拿来主义”思想使用标准件。本系统所设计的深沟球轴承和普通平键参数化模块正是利用这种思想进行设计的,系统的目标是让会画轴承和键的技术人员节省大量的时间,让不会画轴承和键甚至不会使用SolidWorks的工人一键生成国标中任意一种深沟球轴承和普通平键。1.深沟球轴承轴承深沟球轴承的开发界面如图4.21所示。 图4.21深沟球轴承的开发界面轴承的开发程序首先是打开SolidWorks软件,并新建一个零件,在主程序段中调用轴承绘制程序,见附录“procedureTDevelop.Button1Click(Sender:TObject);”。绘制轴承程序见附录“procedureTDevelop.Draw_ZJDZ_MZ;”。主要功能程序段分列如下:d:=StrToFloat(tbl1.Fields[1].AsString)/1000;//引入参数ModDoc2.SelectByID("上视","PLANE",0,0,0);//选择视图ModDoc2.InsertSketch;//新建草图命令,由API函数特点,此命令需成对使用ModDoc2.CreateCenterLineVB(-0.01,0,0,0.01,0,0);//转轴ModDoc2.ViewZoomtofit2;//全屏显示ModDoc2.SketchRectangle(0,DD/2,0,B,DD/2-(3*DD/16-3*d/16),0,True);//矩形ModDoc2.CreateCenterLineVB(B/2,DD/2,0,B/2,d/2,0);//确定绘图圆心Center:=VarArrayCreate([1,3],vardouble);//圆弧Center[1]:=B/2;Center[2]:=DD/4+d/4;Center[3]:=0;ModDoc2.CreateCircleByRadius(Center,(DD-d)/8);ModDoc2.SelectByID("直线6","SKETCHSEGMENT",0,0,0);//剪裁直线ModDoc2.SketchTrim(1,0,11*B/20,0.008442177066); ModDoc2.SelectByID("圆弧1","SKETCHSEGMENT",0,0,0);//剪裁圆弧ModDoc2.SketchTrim(1,0,B/2-(DD-d)/8,DD/4+d/4);ModDoc2.ShowNamedView2("上下二等角轴测",8);//选择视图ModDoc2.FeatureRevolve2(2*PI,False,2*PI,0,0);//旋转特征ModDoc2.FeatureRevolve2(2*PI,False,2*PI,0,0);//旋转成球体,必须建立基准轴,不可利用草图自己部分,与实际SolidWorks操作相左。ModDoc2.InsertAxis2(True);//插入基准轴ModDoc2.Extension.SelectByID2("基准轴1","AXIS",0,0,0,True,1,Nothing,0);//选择基准轴ModDoc2.Extension.SelectByID2("旋转2","SOLIDBODY",0,0,0,True,256,Nothing,0);//选择球体ModDoc2.FeatureManager.FeatureCircularPattern2(N,2*PI/N,False,"NULL",True);//圆周阵列ModDoc2.ViewDisplayShaded();//居中显示上色图2.普通平键键的绘制相比轴承简单一些,其主程序中SolidWorks打开部分这里不再详述,现只将不同之处列于此。,程序见附录“procedureTkey.Button1Click(Sender:TObject);”。普通平键的绘制界面如图4.22所示。图4.22普通平键的绘制界面 A型普通平键的绘图程序见附件中“procedureTkey.Draw_JA;”。主要功能的实现程序段分列如下:ModDoc.Create3PointArc((L-b)/2,b/2,0,(L-b)/2,-b/2,0,L/2,0,0);//圆弧ModDoc.FeatureBoss(True,False,False,0,0,h,0,False,False,False,False,0,0,False,False);//拉伸ModDoc.ViewDisplayShaded();//居中显示上色图B型普通平键与C型普通平键的启动程序与A型普通平键相似,绘图程序见附件中“procedureTkey.Draw_JB;”和“procedureTkey.Draw_JC;”。至此一个完整的数据库管理系统就设计完成了。 1结论制造业信息化在很大程度上促进生产力的发展。近年来开始迅速发展的数据库系统,具有能有效地组织大量数据的优点,面对工程实践中一个庞大系统中的众多零件,非常迫切的需要一个数据库系统将工程文件以及能演示复杂零件装配过程的动画文件进行整理,以方便工程人员调用、查看,这样工程人员可以在文件检索上节省大量时间,从而全身心投入产品研发。本次毕业设计以开放性的方式,成功地实现了数据库的建立、数据文件的动态连接、主窗口的布置及功能添加、数据库文件在主窗口的树状列表显示以及数据表显示、工程文件及动画演示文件的查看及播放等功能。此外二次开发方面实现了指定零件在SolidWorks中的打开、插入装配体文件、对指定零件进行快照、以及以深沟球轴承和普通平键为例的零件参数化设计开发等等。系统满足了主要的功能需求,可是在设计中还有很多不足的地方。首先,由于没有相应的切合实际的需求分析,所以该系统的开发是在自己的主观设想下进行的,有一些功能可能是实践中已较好解决的,有一些功能可能根本不能满足实践需求。另外,此次开发出来的软件对数据库的操作还不够稳定,偶尔会出现非法操作,异常处理做的还很欠缺。程序代码中还存在不少的Bug,由于时间关系部分的功能实现并不良好,二次开发中选用的标准件虽有一定的通用性,但只开发了两个相对较简单零件,在今后的学习工作中我将继续关注相关的系统设计以及二次开发,从而为工业生产提供方便。2致谢此次设计题目由董玉德老师进行选题,题目密切联系工程实际需求,不仅拓宽了我的知识视野,也让我意识到如今的知识体系已不再是单一结构,其它学科知识对工业领域生产力发展的促进起着非常重要的作用。而这些知识在工程实践的运用最终还是要靠我们机械行业相关人员来践行。董老师的选题是对我大学四年学习能力、分析解决问题能力以及创新能力的综合考察,我在此次设计中也得到了很大的锻炼,收获很多。最后,再次感谢董老师对我的鼓励帮助,以及为我毕业设计提供了良好的设计环境。 1参考文献[1]梁冰,梁水,李方超.Delphi应用开发完全书手册[M].北京:人民邮电出版社,2006.[2]殷国富,尹湘云,胡小兵.SolidWorks二次开发实例精解[M].北京:机械工业出版社,2005.[3]江洪,郦祥林,黄治政.SolidWorks建模实例解析[M].北京:机械工业出版社,2005.[4]殷国富,徐雷,胡小兵.SolidWorks二次开发实例精解机床夹具标准件三维图库[M].北京:机械工业出版社,2007.[5]方可燕.Delphi5实战与精通(精通篇)[M].北京:清华大学出版社,2000.[6]萨师煊,王珊.数据库系统概论(第三版)[M].北京:高等教育出版社,2000.[7]朱家诚.机械设计课程设计[M].合肥:合肥工业大学出版社,2005.[8]张龙卿.Delphi6深入编程技术[EB/OL].[9]林华聪.Delphi6数据库设计思想与实践[M].北京:冶金工业出版社,2002.[10]韩伟峰.Delphi6程序设计教程[M].北京:清华大学出版社,2001.[11]陈豫龙.Delphi6数据库系统开发实例导航[M].北京:人民邮电出版社,2002.[12]ForrestHoulette[美].SQL编程起步[M].北京:人民邮电出版社,2001.'