电子设计 基于dxf技术的草图绘制软件设计与实现(定稿)_第1页
电子设计 基于dxf技术的草图绘制软件设计与实现(定稿)_第2页
电子设计 基于dxf技术的草图绘制软件设计与实现(定稿)_第3页
电子设计 基于dxf技术的草图绘制软件设计与实现(定稿)_第4页
电子设计 基于dxf技术的草图绘制软件设计与实现(定稿)_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

毕业设计说明书题目:基于DXF技术的草图绘制软件设计与实现指导者:评阅者:2011年6月5日毕业设计中文摘要基于DXF技术的草图绘制软件设计与实现摘要:DXF是Autodesk公司开发的用于AutoCAD与其它软件之间进行CAD数据交换的CAD数据文件格式,是一种基于矢量的ASCII文本格式。基于DXF技术的草图绘制系统就是要实现基本草图的绘制和编辑功能,并且能够将所绘制的草图以DXF文件格式保存到存储器或者数据库,从而使其它支持DXF格式的CAD软件能够将其打开和进行二次开发,此草图绘制系统还能打开标准的DXF格式的文件并对其进行二次开发。本课题主要研究利用基于VS2005的C#语言所提供的GDI+绘图技术及AutoCAD所开发的DXF技术,实现各种基本工程草图的绘制功能,并在此基础之上实现对草图的DXF格式的计算机存储、读取和各种编辑功能。课题工作主要分为三个部分:第一部分是搭建系统架构,设计绘图系统的操作界面;第二部分是设计基本草图的绘制方法,实现基本草图的绘制和编辑功能;第三部分是设计和实现基于DXF技术的基本草图的存储和读取机制。关键词:CAD图形绘制GDI+DXF技术毕业设计外文摘要TitleGraphicsDrawingSoftwareDesignandImplementationBasedonDXFTechnologyAbstractDXF,developedbyAutodeskCompany,isaCADdatafileformatandavector-basedASCIItextformat,anditusuallyusedfordataexchangebetweenAutoCADandotherCADsoftware.Thissystemisaimedtoachievesomebasicfunctionsofdrawingandeditingvariousgraphics.Relyonthissystem,thegraphicscanbedrawnandeditedonthescreenandcanbesavedasDXFformatfilesindatabaseormemory,sothatgraphicscanberecognizedbyotherDXFformatsupportedCADsoftwareandalsocanbeusedasasecondarydevelopment.Inaddition,thesystemcanalsoreadstandardDXFformatfiles,usingthemforsecondarydevelopment.Themainsubjectofthisstudyistoachievethedrawing,storage,readingandeditingofavarietyofbasicgraphicsbytheGDI+providedbyMicrosoft’sC#languageandtheAutoCADDXFtechnology,andalltasksarecompletedintheVS2005compiler.Theprojectismainlydividedintothreeparts:Thefirstpartistobuildthesystemarchitecture,designthesysteminterfaceaccordingtothemissionstatement;Thesecondpartisthedesignofthemethodsofdrawingandeditingdifferentgraphics,andtheimplementationofthesefunctions;ThethirdpartisthedesignandimplementationofthemechanismforstoringandreadingofdifferentgraphicsbasedonDXFtechnology.Keywords:CADGraphicsDrawingGDI+DXFTechnology目次TOC\o"1-2"\h\z\u1绪论 11.1课题意义 11.2国内外研究状况 21.3课题研究内容 32开发工具简介 32.1DXF技术简介 32.2AutoCAD2004简介 42.3VisualStudio开发平台与GDI+绘图机制简介 42.4SQLServer2000简介 63系统需求分析 64基于DXF技术的草图绘制系统设计 74.1绘图系统的功能模块设计 74.2绘图类的设计 84.3系统操作界面的设计 94.4草图存储读取机制的设计 95基于DXF技术的草图绘制系统实现 115.1草图绘制功能的实现 115.2草图编辑功能的实现 235.3草图复制粘贴功能的实现 255.4草图DXF存储读取功能的实现 26结论 30参考文献 31致谢 331绪论1.1课题意义人类在表达思想、传递信息时,最初采用图形,后来逐渐演化发展为具有抽象意义的文字。这是人类在信息交流上的一次伟大革命。在信息交流中,图形表达方式比文字表达方式具有更多的优点。一幅图纸能容纳下许多信息,表达内容直观,一目了然,在不同的民族与地区具有表达思想的相通性,而往往可以反映用语言、文字也难以表达的信息。工程图是工程师的语言。绘图是工程设计乃至整个工程建设中的一个重要环节。然而,图纸的绘制是一项极其繁琐的工作,不但要求正确、精确,而且随着环境、需求等外部条件的变化,设计方案也会随之变化。一项工程图的绘制通常是在历经数遍修改完善后才完成的。但由于项目的多样性、多变性,使得手工绘图周期长、效率低、重复劳动多,从而阻碍了建设的发展。随着计算机的迅猛发展,工程界的迫切需要,计算机辅助绘图(ComputerAidedDrawing)应运而生。计算机绘图是通过编制计算机辅助绘图软件,将图形显示在屏幕上,用户可以用光标对图形直接进行编辑和修改。由微机配上图形输入和输出设备(如键盘、鼠标、绘图仪)以及计算机绘图软件,就组成一套计算机辅助绘图系统。在设计中通常要用计算机对不同方案进行大量的计算、分析和比较,以决定最优方案;各种设计信息,不论是数字的、文字的或图形的,都能存放在计算机的内存或外存里,并能快速地检索;设计人员通常用草图开始设计,将草图变为工作图的繁重工作可以交给计算机完成;由计算机自动产生的设计结果,可以快速作出图形显示出来,使设计人员及时对设计作出判断和修改;利用计算机可以进行与图形的编辑、放大、缩小、平移和旋转等有关的图形数据加工工作。CAD能够减轻设计人员的计算画图等重复性劳动,专注于设计本身,缩短设计周期和提高设计质量。目前CAD软件逐渐成熟和完善,已经在建筑、测绘、机械、三维游戏、计算机动画、医疗研究等多个领域得到广泛的应用给我们段的生活带来了很大的帮助。众多CAD软件之间的相互兼容性则是我们应该重点研究的内容,与此同时DXF文件格式是图形开发中最常用的图形交换格式之一,它给我们提供了一个统一的标准,因此目前众多第三方开发的图形软件均加入了对DXF文件的支持,这样就可以很大程度上实现资源共享避免重复的劳动。1.2国内外研究状况CAD(ComputerAidedDesign)诞生于60年代,是美国麻省理工学院提出了交互式图形学的研究计划,由于当时硬件设施的昂贵,只有美国通用汽车公司和美国波音航空公司使用自行开发的交互式绘图系统。70年代,小型计算机费用下降,美国工业界才开始广泛使用交互式绘图系统。80年代,由于PC机的应用,CAD得以迅速发展,出现了专门从事CAD系统开发的公司。当时VersaCAD是专业的CAD制作公司,所开发的CAD软件功能强大,但由于其价格昂贵,故不能普遍应用。而当时的Autodesk公司是一个仅有员工数人的小公司,其开发的CAD系统虽然功能有限,但因其可免费拷贝,故在社会得以广泛应用。同时,由于该系统的开放性,该CAD软件升级迅速。CAD的平面绘图功能能以多种方式创建直线、圆、椭圆、多边形、样条曲线等基本图形对象。AutoCAD提供了正交、对象捕捉、极轴追踪、捕捉追踪等绘图辅助工具。正交功能使用户可以很方便地绘制水平、竖直直线,对象捕捉可帮助拾取几何对象上的特殊点,而追踪功能使画斜线及沿不同方向定位点变得更加容易。AutoCAD具有强大的编辑功能,可以移动、复制、旋转、阵列、拉伸、延长、修剪、缩放对象等。标注尺寸:可以创建多种类型尺寸,标注外观可以自行设定;书写文字:能轻易在图形的任何位置、沿任何方向书写文字,可设定文字字体、倾斜角度及宽度缩放比例等属性;图层管理功能:图形对象都位于某一图层上,可设定图层颜色、线型、线宽等特性;三维功能:可创建3D实体及表面模型,能对实体本身进行编辑。此外还具有网络功能:可将图形在网络上发布,或是通过网络访问AutoCAD资源;数据交换功能:AutoCAD提供了多种图形图像数据交换格式及相应命令;二次开发:AutoCAD允许用户定制菜单和工具栏,并能利用内嵌语言Autolisp、VisualLisp、VBA、ADS、ARX等进行二次开发AutoCAD的更新升级的速度非常快,每个新版本都会加入一些更新更强大的功能。AutoCAD荣登全球绘图软件的龙头宝座,主要是因为它具有开放的体系结构。其中的一种方法就是利用开放的DXF接口将绘制的模型保存为标准的DXF格式,这样做就可以提高软件之间的兼容性大大的提升开发效率。AutoCAD因其丰富的绘图功能,强大的编辑功能和良好的用户界面受到广大工程技术人员的普遍欢迎。AutoCAD的用户遍及全世界150多个国家和地区,在我国也得到了非常广泛的应用。AutoCAD已成为事实上的微机CAD应用与开发标准平台。1.3课题研究内容基于DXF技术的草图绘制系统主要是研究实现基本草图的绘制和编辑功能,并且能够将所绘制的草图以DXF文件格式保存到存储器或数据库,从而使其它支持DXF格式的CAD软件能够同该绘图软件进行数据交换,同时本草图绘制系统也能打开标准的DXF格式文件并对其进行二次开发。系统功能的实现主要利用基于VS2005的C#语言所提供的GDI+绘图技术及AutoCAD所开发的DXF技术,实现各种基本工程草图的绘制功能,并在此基础之上实现对草图的DXF格式的计算机存储、读取和各种编辑功能。2开发工具简介2.1DXF技术简介DXF是Autodesk公司开发的用于AutoCAD与其它软件之间进行CAD数据交换的CAD数据文件格式,是一种基于矢量的ASCII文本格式。由于AutoCAD现在是最流行的CAD系统,DXF也被广泛使用,成为事实上的标准。绝大多数CAD系统都能读入或输出DXF文件。DXF文件是由很多的“代码”和“值”组成的“数据对”构造而成,这里的代码称为“组码”(groupcode),指定其后的值的类型和用途。每个组码和值必须为单独的一行。DXF文件被组织成为多个“段”(SECTION),每个段以组码“0”和字符串“SECTION”开头,紧接着是组码“2”和表示段名的字符串(如HEADER),可以使用组码和值定义段中的元素。段的结尾使用组码“0”和字符串“ENDSEC”来定义。由于DXF文件可读性好,用户可方便地对它进行修改、编程,达到从外部对图形进行编辑,修改的目的。ASCII格式的DXF文件可以用文本编辑器进行查看。DXF文件的基本组成如下所示:HEADER部分--图的总体信息。每个参数都有一个变量名和相应的值。CLASSES部分--包括应用程序定义的类的信息,这些实例将显示在BLOCKS、ENTITIES以及OBJECTS部分。通常不包括用于与其它应用程序交互的信息。TABLES部分--这部分包括命名条目的定义。ApplicationID(APPID)表BlockRecod(BLOCK_RECORD)表DimensionStyle(DIMSTYPE)表Layer(LAYER)表Linetype(LTYPE)表Textstyle(STYLE)表UserCoordinateSystem(UCS)表View(VIEW)表Viewportconfiguration(VPORT)表BLOCKS部分--这部分包括BlockDefinition实体用于定义每个Block的组成。ENTITIES部分--这部分是绘图实体,包括BlockReferences在内。OBJECTS部分--包括非图形对象的数据,供AutoLISP以及ObjectARX应用程序所使用。THUMBNAILIMAGE部分--包括DXF文件的预览图。ENDOFFILE2.2AutoCAD2004简介AutoCAD2004是美国Autodesk公司03年开发的通用计算机辅助绘图与设计软件,具有易于掌握、使用方便、体系结构开放等特点,广泛应用于机械、建筑、电子、航天、造船、石油化工、土木工程、冶金、农业、气象、纺织、轻工业等领域。AutoCAD2004具有强大的二维绘图与编辑功能:可绘制基本二维图形对象,如直线、射线,构造线、圆、圆环、圆弧、椭圆、矩形、等边多边形、样条曲线、多段线、云线等,为封闭区域填充图案、创建图块,对图形对象进行删除、移动、复制、镜像、阵列、延伸、修剪、缩放等功能。同时还具有文字标注功能:对于文字说明、技术要求等,用户可设置文字样式,以便使用不同的字体、大小等设置标注文字各种形式的尺寸,设置尺寸标注样式,可随时更改己有标注值或标注样式,可实现关联标注。图层功能:利用标准文件功能,可以对诸如图层、文字样式、线型这样的命名对象定义标准的设置,利用图层转换器能够将当前图形图层的名称和特性转换成己有图形或标准文件对图层的设置。2.3VisualStudio开发平台与GDI+绘图机制简介VisualStudio是微软公司推出的开发环境,VisualStudio可以用来创建Windows平台下的Windows应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和Office插件。C#是微软(Microsoft)为.NETFramework量身订做的程序语言,C#拥有C/C++的强大功能以及VisualBasic简易使用的特性。本课题主要研究C#的GDI+绘图机制。Windows窗体提供的图形类型分为下面三类:2.3.1二维矢量图形二维矢量图形是绘图的基本元素(例如:直线、曲线和图形)。它们由坐标系统上的一些点和另外一些描述参数指定。例如,直线可通过它的两个端点来指定;而矩形可通过确定其左上角的点并给出其宽度和高度的一对数字来指定:简单路径可通过由直线连接的点的数组来指定;贝塞尔曲线是由4个控制点指定的复杂曲线。GDI+提供了存储基元(基本元素)自身信息的类和结构、存储基元绘制方式信息的类,以及实际进行绘制的类。2.3.2图像处理某些种类的图片很难或者根本无法用矢量图形技术来显示。例如,工具栏按钮上的图片和显示为图标的图片就难以指定为直线和曲线的集合。色彩丰富且分辨率高的数码照片会更难以使用矢量技术来制作。这种类型的图像更适合存储为位图,GDI+提供了用于显示、操作和保存位图的Bitmap类。2.3.3版式版式是指以各种字体、大小和样式显示文本。GDI+提供了对这种复杂任务的广泛支持。GDI是图形设备接口,它的主要任务是负责系统与绘图程序之间的信息交换,处理所有Windows程序的图形输出。GDI+中的新功能之一是子像素消除锯齿,它可以使文本在LCD(LiquidCrystalDisplay)屏幕上呈现时显得比较平滑。一般来说,绘图首先要获得Graphics对象,然后才可以使用GDI+绘制线条和形状、呈现文本或显示与操作图像。Graphics类是GDI+的核心功能,它是实际绘制直线、曲线、图形、图像和文本的类。Graphics对象在创建后,可用于绘制线条和形状、呈现文本或显示与操作图像。与Graphics对象一起使用的主要对象有以下4种:

Pen类——用于绘制线条、勾勒形状轮廓或呈现其他几何表示形式。

Brush类——用于填充图形区域,如实心形状、图像或文本。

Font类——提供在呈现文本时要使用什么形状的有关说明。

Color类——表示要显示的不同颜色。2.4SQLServer2000简介SQL(StructuredQueryLanguage),结构化查询语言。SQL语言的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言。SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。绝大多数流行的关系型数据库管理系统都采用了SQL语言标准。虽然很多数据库都对SQL语句进行了再开发和扩展,但是包括Select,Insert,Update,Delete,Create,以及Drop在内的标准的SQL命令仍然可以被用来完成几乎所有的数据库操作。SQLServer2000是Microsoft公司推出的SQLServer数据库管理系统,该版本继承了SQLServer7.0版本的优点,同时又比它增加了许多更先进的功能。具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行MicrosoftWindows98的小型电脑到运行MicrosoftWindows2000的大型多处理器的服务器等多种平台。SQL提供的两种使用方式:一种是自含语言,是一种以独立语言的方式与机器进行交互,是非过程化语言,用户只需提出操作要求,发出SQL命令,而不必提出操作步骤;另一种是宿主语言,是将SQL命令嵌入某种高级程序设计语言中,以实现数据库操作,从整个程序来讲是过程化的,程序中规定了操作的步骤,但嵌入的SQL语言仍是非过程化的,完成该语句的过程由系统经过优化决定。3系统需求分析本课题所要实现的是基于DXF技术的草图绘制系统,任务书中所规定的系统主要需求如下:采用DXF技术,开发草图绘制工具软件,支持常用的基本图形绘制,并实现对颜色的选择、填充,也可以添加文字;支持对图形的常用编辑,如选中图形,进行复制、粘贴、剪切、缩放(缩小、放大)等操作;绘制图形时可以进行分层,并让图层叠加显示;绘制后的图形支持保存到数据库中,也可以添加到WORD等文档中;支持文档常用操作,如新建、打开、保存到本地、另存。系统用例图如下图所示:图3.1系统用例图4基于DXF技术的草图绘制系统设计4.1绘图系统的功能模块设计经过对系统需求的详细分析,设计出以下系统功能模块图:图4.1系统功能模块图详细的功能模块操作释义如下表所示:表4.1系统详细功能模块操作释义表功能名称具体操作选择图形类型选择系统所具有的草图类型选择绘图参数选择画笔的颜色、宽度、样式及图形所在的画板选择填充方式选择有边框白色填充、有边框颜色填充、无边框颜色填充复制图形将选定的图形的特征属性存入系统剪切板粘贴图形将系统剪切板中的图形特征属性加载到系统并绘制图形重绘图形动态改变选定图形的大小、形状拖动图形将选定图形在绘图区域内动态拖动,改变其在画板上的位置新建画板新建一个绘图画板,系统最多支持10个画板同时开启删除画板删除所选中的画板,当系统只有一个画板时不能将其删除切换画板在多个画板之间任意切换画板,查看并绘制、编辑其中的内容4.2绘图类的设计系统所设计的绘图类如下表所示:表4.2系统的绘图类表绘图类名称绘图类名称DrawObject:绘制草图基类DrawRectangle:绘制矩形类DrawLine:绘制直线类DrawString:绘制文本框类DrawPolygon:绘制点轨迹曲线类DrawEllipse:绘制椭圆类DrawMultiLine:绘制多段线类DrawPicture:绘制图片框类DrawArc:绘制弧线类DrawPentagon:绘制正五边形类DrawCircle:绘制圆类DrawHexagon:绘制正六边形类DrawTriangle:绘制正三角形类DrawPieSlice:绘制扇形类DrawSquare:绘制正方形类DrawBezierCurve:绘制贝塞尔曲线类不同类型的绘图类之间的继承关系如下图所示:图4.2绘图类之间的继承关系图4.3系统操作界面的设计系统的操作界面由图形绘制和编辑区域、系统绘图功能参数设置区域两大部分构成。用户可在系统参数设置区域上进行功能和参数选择,在绘图区域上对草图进行绘制和编辑,以求达到预期的绘图效果。操作界面由WhiteBoard用户控件、DrawArea用户控件、ToolStrip1系统控件、ToolStrip2系统控件构成。其中DrawArea用户控件、ToolStrip1系统控件、ToolStrip2系统控件被集成在WhiteBoard用户控件之中,而DrawArea控件则为草图绘制和编辑区域,ToolStrip1控件和ToolStrip2控件则用来对系统的各项参数进行设置。DrawArea控件和ToolStrip1、ToolStrip2控件被嵌入在WhiteBoard控件中,进而将整个WhiteBoard用户控件加载到Form中形成用户界面。下图为操作界面设计图:功能参数设置栏图形绘制和编辑区域功能参数设置栏功能参数设置栏图形绘制和编辑区域功能参数设置栏图4.3系统主操作界面4.4草图存储读取机制的设计绘制草图的核心功能是通过调用GDI+提供的绘图方法而实现,图形在绘制完成之后,系统要能够将其保存到存储器或者数据库中,这就需要提取每个图形的基本特征属性,然后再按照DXF的格式将其存储。4.4.1草图的DXF存储设计草图的DXF存储主要是根据所绘图形的特征属性等基本信息将其存储为标准的DXF文件,包含生成文件固定的字段、根据图形特征属性等基本信息填充HEADERS段、TABLES段、ENTITIES段等,将所有数据按照规定的顺序填充到一个文件中并将数据生成标准的DXF文件。图4.4草图的DXF存储流程设计4.4.2草图的DXF读取设计草图的DXF读取主要是打开一个标准的DXF文件,然后将打开文件中的字符串保存起来以便后续分析提取有用的信息,将字符串按HEADERS、TABLES、ENTITIES段分别提取出来,根据分离出的信息按照组码提取需要的组值,最后根据所提取的信息调用系统绘图功能绘出图形。图4.5草图的DXF读取流程设计5基于DXF技术的草图绘制系统实现5.1草图绘制功能的实现草图绘制功能是绘图系统前台的重要组成部分,该功能的实现需要为每种类型的图形设计其独立的绘图算法,并选择适当的GDI+所提供的绘图方法才能将各种不同类型的草图顺利绘出。在绘制草图之前要首先设置系统的画笔(Pen)参数,包括画笔线条宽度、颜色、虚实等,其次对于闭合图形还可设置其填充方式和颜色。针对不同类型草图的绘制方法系统的具体实现如下:5.1.1直线(Line)的绘制直线的绘制需要在绘图区域捕获两个坐标点,第一个坐标点为直线的起始坐标点StartPoint,第二个坐标点为直线的终止坐标点EndPoint,然后生成System.Drawing所提供的Graphics对象g,最后调用g.DrawLine(Pen,StartPoint.X,StartPoint.Y,EndPoint.X,EndPoint.Y)函数将其绘出。Pen为系统画笔参数,StartPoint.X和StartPoint.Y分别为该点在画板上的X轴坐标分量和Y轴坐标分量,以下各图形介绍均以此为例。绘制直线的流程图如下:图5.1绘制直线的流程图5.1.2贝塞尔曲线(BezierCurve)的绘制贝塞尔曲线就是这样的一条曲线,它是依据四个位置任意的点坐标绘制出的一条光滑曲线。在历史上,研究贝塞尔曲线的人最初是按照已知曲线参数方程来确定四个点的思路设计出这种矢量曲线绘制法。贝塞尔曲线的有趣之处更在于它的“皮筋效应”,也就是说,随着点有规律地移动,曲线将产生皮筋伸引一样的变换,带来视觉上的冲击。1962年,法国数学家PierreBézier第一个研究了这种矢量绘制曲线的方法,并给出了详细的计算公式。贝塞尔曲线的重要作用在于:由于用计算机画图大部分时间是操作鼠标来掌握线条的路径,与手绘的感觉和效果有很大的差别。即使是一位精明的画师能轻松绘出各种图形,拿到鼠标想随心所欲的画图也不是一件容易的事。这一点是计算机万万不能代替手工的工作,所以到目前为止人们只能颇感无奈。使用贝塞尔工具画图很大程度上弥补了这一缺憾。贝塞尔曲线的绘制需要在绘图区域捕获四个坐标点,第一个坐标点为贝塞尔曲线的起始坐标点StartPoint,第二个坐标点为贝塞尔曲线的终止坐标点EndPoint,然后生成System.Drawing所提供的Graphics对象g并调用g.DrawLine(Pen,StartPoint.X,StartPoint.Y,EndPoint.X,EndPoint.Y)函数绘出贝塞尔曲线的主体直线,第三个坐标点为贝塞尔曲线的其中一个控制坐标点ControlPoint1,还需调用g.DrawBezier(Pen,StartPoint,ControlPoint1,ControlPoint1,EndPoint)绘制单控制点贝塞尔曲线,第四个坐标点为贝塞尔曲线的另一个控制坐标点ControlPoint2,此时调用g.DrawBezier(Pen,StartPoint,ControlPoint1,ControlPoint2,EndPoint)完整的贝塞尔曲线即绘制完毕。绘制贝塞尔曲线的效果图如下:图5.2绘制贝塞尔曲线的效果图绘制贝塞尔曲线的流程图如下:图5.3绘制贝塞尔曲线的流程图5.1.3多段线(MultiLine)的绘制多段线就是由多条直线首尾相连而组成的一种多段折线。在多段线的绘制过程中以鼠标左键点击绘图域开始绘制,以鼠标右键点击绘图域结束绘制,其间所捕获的所有坐标点即为其特征点。多段线的绘制需要在绘图区域捕获至少两个坐标点,第一个坐标点为多段线的起始坐标点StartPoint,最后一个坐标点为多段线的终止坐标点EndPoint,在此两点间获取的所有坐标点为多段线的连接点,绘制过程中需设立一个点数组PointList数组将这些点按先后顺序存入数组。在生成Graphics对象g后,以PointList数组中依次相邻的两点PriorPoint、NextPoint为参数,循环调用g.DrawLine(Pen,PriorPoint.X,PriorPoint.Y,NextPoint.X,NextPoint.Y,)函数将多段线各段首尾相接逐段绘出。对于各段首尾相接处的棱角点都是可以拖动的,进而可改变多段线的形状。绘制多段线的效果图如下:图5.4绘制多段线的效果图绘制多段线的流程图如下:图5.5绘制多段线的流程图5.1.4弧线(Arc)的绘制弧线的绘制需要在绘图区域捕获一个矩形框,此矩形框为确定所绘弧线大小尺寸的参数Rectangle,此外要绘制圆或椭圆上任意角度的弧线还需输入起始角度StartAngle和扫过角度SweepAngle以确定弧线的起始点和终止点。获取参数后生成System.Drawing所提供的Graphics对象g,最后调用g.DrawArc(Pen,Rectangle,StartAngle,SweepAngle)函数将其绘出。输入起始角度StartAngle和扫过角度SweepAngle的界面如下:图5.6起始角度和扫过角度的输入界面绘制弧线的流程图如下:图5.7绘制弧线的流程图5.1.5扇形(PieSlice)的绘制扇形的绘制需要在绘图区域捕获一个矩形框,此矩形框为确定所绘扇形大小尺寸的参数Rectangle,此外要绘制圆饼或椭圆饼上任意角度的扇形还需输入起始角度StartAngle和扫过角度SweepAngle以确定其形状。获取参数后生成System.Drawing所提供的Graphics对象g,最后调用g.DrawPie(Pen,Rectangle,StartAngle,SweepAngle)函数将其绘出。输入起始角度StartAngle和扫过角度SweepAngle的界面如下:图5.8起始角度和扫过角度的输入界面扇形的绘制流程类似弧线的绘制流程,但因其为闭合图形,所以可以设置其绘制时的填充方式。绘制扇形的流程图如下:图5.9绘制扇形的流程图5.1.6圆(Circle)的绘制圆的绘制需要在绘图区域捕获一个圆心点CenterPoint,获取圆的半径Radius,以确定其位置和大小。获取参数后生成System.Drawing所提供的Graphics对象g,因为圆属于一种特殊的椭圆,所以调用g.DrawEllipse(Pen,CenterPoint.X-Radius,CenterPoint.Y-Radius,2*Radius,2*Radius)函数将圆绘出。绘制圆的流程图如下:图5.10绘制圆的流程图5.1.7椭圆(Ellipse)的绘制椭圆的绘制需要在绘图区域捕获一个矩形区域Rectangle,以该矩形的长作为椭圆的长轴长度,以该矩形的高作为椭圆的短轴长度。获取参数后生成System.Drawing所提供的Graphics对象g,所以调用g.DrawEllipse(Pen,Rectangle)函数即可将椭圆绘出。绘制椭圆的效果图如下:图5.11绘制椭圆的效果图绘制椭圆的流程图如下:图5.12绘制椭圆的流程图5.1.8矩形(Rectangle)的绘制矩形的绘制需要在绘图区域捕获一个矩形区域Rectangle,该矩形区域即为所绘矩形。获取参数后生成System.Drawing所提供的Graphics对象g,最后调用g.DrawRectangle(Pen,Rectangle)函数将矩形绘出。绘制矩形的流程图如下:图5.13绘制矩形的流程图5.1.9正三角形(EquilateralTriangle)的绘制正三角形的绘制需要在绘图区域捕获一个坐标点Point1,然后通过特殊算法依据Point1的坐标计算出其余两个点Point2、Point3的坐标并将三个坐标点存入所设置的CurvePoints点数组。获取参数后生成System.Drawing所提供的Graphics对象g,最后调用g.DrawPolygon(Pen,CurvePoints)函数将正三角形绘出。绘制正三角形的流程图如下:图5.14绘制正三角形的流程图绘制正三角形的效果图如下:图5.15绘制正三角形的效果图5.1.10正方形(Square)的绘制正方形的绘制需要在绘图区域捕获一个坐标点Point1,然后通过特殊算法依据Point1的坐标计算出其余三个点Point2、Point3、Point4的坐标并将四个坐标点存入所设置的CurvePoints点数组。获取参数后生成System.Drawing提供的Graphics对象g,最后调用g.DrawPolygon(Pen,CurvePoints)函数将正方形绘出。绘制正方形的流程图如下:图5.16绘制正方形的流程图5.1.11正五边形(Pentagon)的绘制正五边形的绘制需要在绘图区域捕获一个坐标点Point1,然后通过特殊算法依据Point1的坐标计算出其余四个点Point2、Point3、Point4、Point5的坐标并将五个坐标点存入所设置的CurvePoints点数组。获取参数后生成System.Drawing提供的Graphics对象g,最后调用g.DrawPolygon(Pen,CurvePoints)函数将正五边形绘出。绘制正五边形的效果图如下:图5.17绘制正五边形的效果图绘制正五边形的流程图如下:图5.18绘制正五边形的流程图5.1.12正六边形(Hexagon)的绘制正六边形的绘制需要在绘图区域捕获一个坐标点Point1,然后通过特殊算法依据Point1的坐标计算出其余五个点Point2、Point3、Point4、Point5、Point6的坐标并将六个坐标点存入所设置的CurvePoints点数组。获取参数后生成Graphics对象g,最后调用g.DrawPolygon(Pen,CurvePoints)函数将正六边形绘出。绘制正六边形的效果图如下:图5.19绘制正六边形的效果图绘制正六边形的流程图如下:图5.20绘制正六边形的流程图5.1.13点轨迹曲线(Polygon)的绘制点轨迹曲线的绘制需要在绘图区域捕获一连串的坐标点,然后将这一连串的坐标点存入所设置的PointList点数组。获取参数后生成System.Drawing提供的Graphics对象g,然后将PointList数组中的点按顺序依次取出,使每两个相邻的点作为参数,调用g.DrawLine(Pen,PointList[i].x,PointList[i].y,PointList[i-1].x,PointList[i-1].y)函数将点轨迹曲线绘出。由于每两个点之间的距离比较微小,所以呈现出来的形式类似于点轨迹。绘制点轨迹曲线的效果图如下:图5.21绘制点轨迹曲线的效果图绘制点轨迹曲线的流程图如下:图5.22绘制点轨迹曲线的流程图5.2草图编辑功能的实现草图的编辑功能主要是改变草图的线条宽度、线条样式、线条颜色、形状和大小以及动态拖动草图。5.2.1改变线条宽度系统所设置的画笔线条宽度分为五种,宽度依次变大,通过改变PenWidth而实现具体的线条粗细的改变,下面以正三角形为例展示:图5.231px宽度图5.245px宽度5.2.2改变线条样式系统所设置的画笔线条样式分为两种,分别为实线、虚线,通过改变PenStyle而实现具体的线条样式的改变,下面以椭圆为例展示:图5.25实线条图5.26虚线条5.2.3改变线条颜色系统所设置的画笔线条颜色为Windows操作系统所提供,通过改变PenColor而实现具体的线条颜色的改变。5.2.4改变草图的形状与大小为了能改变草图的形状和大小,系统为每种类型的草图都设置了锁定红框,锁定红框的作用就是红框勾勒出图形的大致轮廓,并以小红点的形式标记出可以改变图形形状和大小的特殊点,当鼠标左键单击已绘制的草图时锁定红框随即出现,当鼠标移动到特殊点时光标形状会发生变化,此时按下左键通过改变光标位置即可实现草图的形状大小的改变,下图为各个类型草图的锁定红框:图5.27各个类型草图的锁定红框5.2.5填充闭合草图系统提供三种不同的方式填充闭合草图,分别为有边框白色填充、有边框颜色填充、无边框颜色填充。系统所设置的画刷颜色为Windows操作系统所提供,通过改变BrushColor而实现具体的填充颜色的改变,以扇形为例展示如下:图5.28黑色边框白色填充扇形图5.29黑色边框黄色填充扇形5.2.6动态拖动草图动态拖动草图就是要改变草图在画板上的位置,此功能的实现是将所选定的草图的特征坐标点的X坐标值和Y坐标值同时加或减相同的数值Delta,而Delta则为鼠标拖动时移动的距离,然后草图在绘图域动态重绘,所以草图会跟随鼠标移动而移动。5.3草图复制粘贴功能的实现草图绘制系统所实现的复制粘贴功能涉及系统所具备的各种草图类型,复制粘贴功能既可以在单独的绘图系统中使用,也可以完成在同时开启的两个不同的绘图系统间的草图的复制与粘贴。该功能的实现主要借助于C#所提供的剪切板机制(Clipboard),在选定要复制的草图之后点击复制按钮既可以将所有被选中图形的特征属性依次抽取出来并存入剪切板,当点击粘贴按钮后系统会将剪切板中的图形特征属性依次读取并加载到系统,进而绘制在新开辟的画板上。系统存储图形特征属性的类的结构如下表:表5.1存储图形特征属性的类的结构表变量名所存储的图形特征属性publicDrawObjectTypeType=newDrawObjectType();图形所属类型publicintPenWidth=0;画笔宽度publicPenStylePenStyle=PenStyle.solid;画笔样式默认为实线publicFillStyleFillStyle=FillStyle.hellow;闭合图形填充方式默认为有边框白色填充publicColorPenColor=newColor();画笔颜色publicColorBrushColor=newColor();画刷颜色填充闭合图形时用publicPointStartPoint=newPoint();起始点publicPointEndPoint=newPoint();终止点publicPointControlPoint1=newPoint();控制点1publicPointControlPoint2=newPoint();控制点2publicfloatStartAngel=0;起始角度publicfloatSweepAngel=0;扫过角度publicList<Point>PointList=newList<Point>();坐标点数组复制粘贴功能的流程图如下:图5.30复制粘贴功能流程图下表为具体的每类草图在复制时需要提取的特征属性:表5.2每类草图要被提取的特征信息表图形属性起始点终止点控制点1控制点2所属矩形画笔颜色画笔宽度画笔样式填充方式画刷颜色开始角度扫过角度点数组LineArcMultiLinesBezierCurvePieSlicePolygonRectangleEllipseCricleTriangleSquarePentagonHexagonYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY(Random)Y(4Points)Y(Random)Y(3Points)Y(4Points)Y(5Points)Y(6Points)5.4草图DXF存储读取功能的实现草图在绘制完毕后需要进行存储与读取,为了使系统所存储的草图数据能与其他CAD软件进行交换,系统采用DXF文件格式对草图进行存储。在实现该部分功能时,需要详细研究DXF机制,主要思路是对不同类型的草图提取其各自的特征属性(见表5.2),再将其转化为DXF文件的各个段中的信息,最终以ASCII字符串的形式存储。草图的DXF存储界面如下:图5.31草图的DXF存储界面草图的DXF读取界面如下:图5.32草图的DXF读取界面DXF文件是基于向量的ASCII码文件,所以保存后的DXF文件可以被记事本打开,如下为Line的DXF文件被记事本打开的形式:图5.33以记事本方式打开的Line的DXF文件经测试,本绘图系统所绘制的草图在保存为DXF文件之后可以被CAD软件正确读取和识别。如下图所示:图5.34本系统所绘草图图5.35AutoCAD系统所打开的本系统所存DXF文件AutoCAD软件并不支持图形的数据库存储,本系统的扩展功能为支持将草图特征信息存储到数据库中,但这种存储形式并非DXF格式,从而并不能实现与其他CAD软件的数据交换与兼容,所设计的数据库表单以画板表、Line表、Circle表为例展示如下:表5.3画板表序号字段名字段说明类型宽度123456789idnamecountlinenumberlinetypelinecolorfillstylefillcolortextstyle惟一标识分类(画板号)画板名称实体数量线宽线型线性颜色填充方式填充颜色字体样式intnvarcharintintcharintcharintchar4104410410410表5.4Line表序号字段名字段说明类型宽度1234567idfidstartpointendpointlinenumberlinetypelinecolor惟一标识分类所属画板号起始点终点线宽线型线性颜色intintdoubledoubleintcharint44444104表5.5Circle表序号字段名字段说明类型宽度123456789idfidcentrepointradiuslinenumberlinetypelinecolorfillstylefillcolor惟一标识分类(画板号)所属画板号圆心半径线宽线型线性颜色填充方式填充颜色intintdoubledoubleintcharintcharint44444104104结论本课题所要实现的是基于DXF技术的草图绘制软件,课题的研究主要集中于两个方面,第一个是在VS2005编译环境下学习C#语言的编程机制,利用其所提供的GDI+类进行图形的绘制与编辑,第二个方面是研究DXF技术的基础理论和实现方法,并将GDI+所绘的图形与DXF的文件存储读取机制相结合,最终实现该系统。经测试,AutoCAD软件已经能完全顺利读取和打开本系统所绘制的草图,这表明DXF文件在AutoCAD软件和其他CAD软件的数据交换中发挥了重要作用,DXF数据交换格式为众多软件提供了一个标准实现了资源的共享。通过这次毕业设计我学到了很多东西,提高了分析和设计系统的能力,强化了编写和审阅代码的能力,加深了我对软件工程理论的理解,为我今后的软件设计和编程打下了良好的基础,但同时也深深感到自己知识的欠缺和不足,在今后需要更加努力学习专业知识,更多实践,争取更大的进步。参考文献[1]蒋玉川,陈辉.AutoCAD图形交换文件DXF在面向对象程序设计中的应用.力学与实践,第4期,2010.[2]李晨.用VC实现基于DXF文件的AutoCAD数据共享接口.工业控制计算机,第4期,2010.[3]陈浩,陈宏.解读AUTOCAD的DXF文件.贵州科学,第20卷第4期,2002年12月.[4]\t"result2"张礼兵,\t"result2"吴婷,\t"result2"闫兴书.基于DXF图形文件数控加工接口设计.\t"result2"机械工程师,第9期,2005.[5]蔡伯阳,林金明,谢明红.基于DXF文件的NC代码生成[J].现代制造工程,2002,(02)[6]严潮红,刘军,李靖谊.基于哈希表的DXF文件信息读取方法及其应用[J].盐城工学院学报(自然科学版),2006,(01)[7]\t"result2"谭超;\t"result2"张

温馨提示

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

评论

0/150

提交评论