電子設(shè)計(jì) 基于dxf技術(shù)的草圖繪制軟件設(shè)計(jì)與實(shí)現(xiàn)(定稿)_第1頁
電子設(shè)計(jì) 基于dxf技術(shù)的草圖繪制軟件設(shè)計(jì)與實(shí)現(xiàn)(定稿)_第2頁
電子設(shè)計(jì) 基于dxf技術(shù)的草圖繪制軟件設(shè)計(jì)與實(shí)現(xiàn)(定稿)_第3頁
電子設(shè)計(jì) 基于dxf技術(shù)的草圖繪制軟件設(shè)計(jì)與實(shí)現(xiàn)(定稿)_第4頁
電子設(shè)計(jì) 基于dxf技術(shù)的草圖繪制軟件設(shè)計(jì)與實(shí)現(xiàn)(定稿)_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

畢業(yè)設(shè)計(jì)說明書題目:基于DXF技術(shù)的草圖繪制軟件設(shè)計(jì)與實(shí)現(xiàn)指導(dǎo)者:評閱者:2011年6月5日畢業(yè)設(shè)計(jì)中文摘要基于DXF技術(shù)的草圖繪制軟件設(shè)計(jì)與實(shí)現(xiàn)摘要:DXF是Autodesk公司開發(fā)的用于AutoCAD與其它軟件之間進(jìn)行CAD數(shù)據(jù)交換的CAD數(shù)據(jù)文件格式,是一種基于矢量的ASCII文本格式?;贒XF技術(shù)的草圖繪制系統(tǒng)就是要實(shí)現(xiàn)基本草圖的繪制和編輯功能,并且能夠?qū)⑺L制的草圖以DXF文件格式保存到存儲(chǔ)器或者數(shù)據(jù)庫,從而使其它支持DXF格式的CAD軟件能夠?qū)⑵浯蜷_和進(jìn)行二次開發(fā),此草圖繪制系統(tǒng)還能打開標(biāo)準(zhǔn)的DXF格式的文件并對其進(jìn)行二次開發(fā)。本課題主要研究利用基于VS2005的C#語言所提供的GDI+繪圖技術(shù)及AutoCAD所開發(fā)的DXF技術(shù),實(shí)現(xiàn)各種基本工程草圖的繪制功能,并在此基礎(chǔ)之上實(shí)現(xiàn)對草圖的DXF格式的計(jì)算機(jī)存儲(chǔ)、讀取和各種編輯功能。課題工作主要分為三個(gè)部分:第一部分是搭建系統(tǒng)架構(gòu),設(shè)計(jì)繪圖系統(tǒng)的操作界面;第二部分是設(shè)計(jì)基本草圖的繪制方法,實(shí)現(xiàn)基本草圖的繪制和編輯功能;第三部分是設(shè)計(jì)和實(shí)現(xiàn)基于DXF技術(shù)的基本草圖的存儲(chǔ)和讀取機(jī)制。關(guān)鍵詞:CAD圖形繪制GDI+DXF技術(shù)畢業(yè)設(shè)計(jì)外文摘要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國內(nèi)外研究狀況 21.3課題研究內(nèi)容 32開發(fā)工具簡介 32.1DXF技術(shù)簡介 32.2AutoCAD2004簡介 42.3VisualStudio開發(fā)平臺(tái)與GDI+繪圖機(jī)制簡介 42.4SQLServer2000簡介 63系統(tǒng)需求分析 64基于DXF技術(shù)的草圖繪制系統(tǒng)設(shè)計(jì) 74.1繪圖系統(tǒng)的功能模塊設(shè)計(jì) 74.2繪圖類的設(shè)計(jì) 84.3系統(tǒng)操作界面的設(shè)計(jì) 94.4草圖存儲(chǔ)讀取機(jī)制的設(shè)計(jì) 95基于DXF技術(shù)的草圖繪制系統(tǒng)實(shí)現(xiàn) 115.1草圖繪制功能的實(shí)現(xiàn) 115.2草圖編輯功能的實(shí)現(xiàn) 235.3草圖復(fù)制粘貼功能的實(shí)現(xiàn) 255.4草圖DXF存儲(chǔ)讀取功能的實(shí)現(xiàn) 26結(jié)論 30參考文獻(xiàn) 31致謝 331緒論1.1課題意義人類在表達(dá)思想、傳遞信息時(shí),最初采用圖形,后來逐漸演化發(fā)展為具有抽象意義的文字。這是人類在信息交流上的一次偉大革命。在信息交流中,圖形表達(dá)方式比文字表達(dá)方式具有更多的優(yōu)點(diǎn)。一幅圖紙能容納下許多信息,表達(dá)內(nèi)容直觀,一目了然,在不同的民族與地區(qū)具有表達(dá)思想的相通性,而往往可以反映用語言、文字也難以表達(dá)的信息。工程圖是工程師的語言。繪圖是工程設(shè)計(jì)乃至整個(gè)工程建設(shè)中的一個(gè)重要環(huán)節(jié)。然而,圖紙的繪制是一項(xiàng)極其繁瑣的工作,不但要求正確、精確,而且隨著環(huán)境、需求等外部條件的變化,設(shè)計(jì)方案也會(huì)隨之變化。一項(xiàng)工程圖的繪制通常是在歷經(jīng)數(shù)遍修改完善后才完成的。但由于項(xiàng)目的多樣性、多變性,使得手工繪圖周期長、效率低、重復(fù)勞動(dòng)多,從而阻礙了建設(shè)的發(fā)展。隨著計(jì)算機(jī)的迅猛發(fā)展,工程界的迫切需要,計(jì)算機(jī)輔助繪圖(ComputerAidedDrawing)應(yīng)運(yùn)而生。計(jì)算機(jī)繪圖是通過編制計(jì)算機(jī)輔助繪圖軟件,將圖形顯示在屏幕上,用戶可以用光標(biāo)對圖形直接進(jìn)行編輯和修改。由微機(jī)配上圖形輸入和輸出設(shè)備(如鍵盤、鼠標(biāo)、繪圖儀)以及計(jì)算機(jī)繪圖軟件,就組成一套計(jì)算機(jī)輔助繪圖系統(tǒng)。在設(shè)計(jì)中通常要用計(jì)算機(jī)對不同方案進(jìn)行大量的計(jì)算、分析和比較,以決定最優(yōu)方案;各種設(shè)計(jì)信息,不論是數(shù)字的、文字的或圖形的,都能存放在計(jì)算機(jī)的內(nèi)存或外存里,并能快速地檢索;設(shè)計(jì)人員通常用草圖開始設(shè)計(jì),將草圖變?yōu)楣ぷ鲌D的繁重工作可以交給計(jì)算機(jī)完成;由計(jì)算機(jī)自動(dòng)產(chǎn)生的設(shè)計(jì)結(jié)果,可以快速作出圖形顯示出來,使設(shè)計(jì)人員及時(shí)對設(shè)計(jì)作出判斷和修改;利用計(jì)算機(jī)可以進(jìn)行與圖形的編輯、放大、縮小、平移和旋轉(zhuǎn)等有關(guān)的圖形數(shù)據(jù)加工工作。CAD能夠減輕設(shè)計(jì)人員的計(jì)算畫圖等重復(fù)性勞動(dòng),專注于設(shè)計(jì)本身,縮短設(shè)計(jì)周期和提高設(shè)計(jì)質(zhì)量。目前CAD軟件逐漸成熟和完善,已經(jīng)在建筑、測繪、機(jī)械、三維游戲、計(jì)算機(jī)動(dòng)畫、醫(yī)療研究等多個(gè)領(lǐng)域得到廣泛的應(yīng)用給我們段的生活帶來了很大的幫助。眾多CAD軟件之間的相互兼容性則是我們應(yīng)該重點(diǎn)研究的內(nèi)容,與此同時(shí)DXF文件格式是圖形開發(fā)中最常用的圖形交換格式之一,它給我們提供了一個(gè)統(tǒng)一的標(biāo)準(zhǔn),因此目前眾多第三方開發(fā)的圖形軟件均加入了對DXF文件的支持,這樣就可以很大程度上實(shí)現(xiàn)資源共享避免重復(fù)的勞動(dòng)。1.2國內(nèi)外研究狀況CAD(ComputerAidedDesign)誕生于60年代,是美國麻省理工學(xué)院提出了交互式圖形學(xué)的研究計(jì)劃,由于當(dāng)時(shí)硬件設(shè)施的昂貴,只有美國通用汽車公司和美國波音航空公司使用自行開發(fā)的交互式繪圖系統(tǒng)。70年代,小型計(jì)算機(jī)費(fèi)用下降,美國工業(yè)界才開始廣泛使用交互式繪圖系統(tǒng)。80年代,由于PC機(jī)的應(yīng)用,CAD得以迅速發(fā)展,出現(xiàn)了專門從事CAD系統(tǒng)開發(fā)的公司。當(dāng)時(shí)VersaCAD是專業(yè)的CAD制作公司,所開發(fā)的CAD軟件功能強(qiáng)大,但由于其價(jià)格昂貴,故不能普遍應(yīng)用。而當(dāng)時(shí)的Autodesk公司是一個(gè)僅有員工數(shù)人的小公司,其開發(fā)的CAD系統(tǒng)雖然功能有限,但因其可免費(fèi)拷貝,故在社會(huì)得以廣泛應(yīng)用。同時(shí),由于該系統(tǒng)的開放性,該CAD軟件升級迅速。CAD的平面繪圖功能能以多種方式創(chuàng)建直線、圓、橢圓、多邊形、樣條曲線等基本圖形對象。AutoCAD提供了正交、對象捕捉、極軸追蹤、捕捉追蹤等繪圖輔助工具。正交功能使用戶可以很方便地繪制水平、豎直直線,對象捕捉可幫助拾取幾何對象上的特殊點(diǎn),而追蹤功能使畫斜線及沿不同方向定位點(diǎn)變得更加容易。AutoCAD具有強(qiáng)大的編輯功能,可以移動(dòng)、復(fù)制、旋轉(zhuǎn)、陣列、拉伸、延長、修剪、縮放對象等。標(biāo)注尺寸:可以創(chuàng)建多種類型尺寸,標(biāo)注外觀可以自行設(shè)定;書寫文字:能輕易在圖形的任何位置、沿任何方向書寫文字,可設(shè)定文字字體、傾斜角度及寬度縮放比例等屬性;圖層管理功能:圖形對象都位于某一圖層上,可設(shè)定圖層顏色、線型、線寬等特性;三維功能:可創(chuàng)建3D實(shí)體及表面模型,能對實(shí)體本身進(jìn)行編輯。此外還具有網(wǎng)絡(luò)功能:可將圖形在網(wǎng)絡(luò)上發(fā)布,或是通過網(wǎng)絡(luò)訪問AutoCAD資源;數(shù)據(jù)交換功能:AutoCAD提供了多種圖形圖像數(shù)據(jù)交換格式及相應(yīng)命令;二次開發(fā):AutoCAD允許用戶定制菜單和工具欄,并能利用內(nèi)嵌語言Autolisp、VisualLisp、VBA、ADS、ARX等進(jìn)行二次開發(fā)AutoCAD的更新升級的速度非常快,每個(gè)新版本都會(huì)加入一些更新更強(qiáng)大的功能。AutoCAD榮登全球繪圖軟件的龍頭寶座,主要是因?yàn)樗哂虚_放的體系結(jié)構(gòu)。其中的一種方法就是利用開放的DXF接口將繪制的模型保存為標(biāo)準(zhǔn)的DXF格式,這樣做就可以提高軟件之間的兼容性大大的提升開發(fā)效率。AutoCAD因其豐富的繪圖功能,強(qiáng)大的編輯功能和良好的用戶界面受到廣大工程技術(shù)人員的普遍歡迎。AutoCAD的用戶遍及全世界150多個(gè)國家和地區(qū),在我國也得到了非常廣泛的應(yīng)用。AutoCAD已成為事實(shí)上的微機(jī)CAD應(yīng)用與開發(fā)標(biāo)準(zhǔn)平臺(tái)。1.3課題研究內(nèi)容基于DXF技術(shù)的草圖繪制系統(tǒng)主要是研究實(shí)現(xiàn)基本草圖的繪制和編輯功能,并且能夠?qū)⑺L制的草圖以DXF文件格式保存到存儲(chǔ)器或數(shù)據(jù)庫,從而使其它支持DXF格式的CAD軟件能夠同該繪圖軟件進(jìn)行數(shù)據(jù)交換,同時(shí)本草圖繪制系統(tǒng)也能打開標(biāo)準(zhǔn)的DXF格式文件并對其進(jìn)行二次開發(fā)。系統(tǒng)功能的實(shí)現(xiàn)主要利用基于VS2005的C#語言所提供的GDI+繪圖技術(shù)及AutoCAD所開發(fā)的DXF技術(shù),實(shí)現(xiàn)各種基本工程草圖的繪制功能,并在此基礎(chǔ)之上實(shí)現(xiàn)對草圖的DXF格式的計(jì)算機(jī)存儲(chǔ)、讀取和各種編輯功能。2開發(fā)工具簡介2.1DXF技術(shù)簡介DXF是Autodesk公司開發(fā)的用于AutoCAD與其它軟件之間進(jìn)行CAD數(shù)據(jù)交換的CAD數(shù)據(jù)文件格式,是一種基于矢量的ASCII文本格式。由于AutoCAD現(xiàn)在是最流行的CAD系統(tǒng),DXF也被廣泛使用,成為事實(shí)上的標(biāo)準(zhǔn)。絕大多數(shù)CAD系統(tǒng)都能讀入或輸出DXF文件。DXF文件是由很多的“代碼”和“值”組成的“數(shù)據(jù)對”構(gòu)造而成,這里的代碼稱為“組碼”(groupcode),指定其后的值的類型和用途。每個(gè)組碼和值必須為單獨(dú)的一行。DXF文件被組織成為多個(gè)“段”(SECTION),每個(gè)段以組碼“0”和字符串“SECTION”開頭,緊接著是組碼“2”和表示段名的字符串(如HEADER),可以使用組碼和值定義段中的元素。段的結(jié)尾使用組碼“0”和字符串“ENDSEC”來定義。由于DXF文件可讀性好,用戶可方便地對它進(jìn)行修改、編程,達(dá)到從外部對圖形進(jìn)行編輯,修改的目的。ASCII格式的DXF文件可以用文本編輯器進(jìn)行查看。DXF文件的基本組成如下所示:HEADER部分--圖的總體信息。每個(gè)參數(shù)都有一個(gè)變量名和相應(yīng)的值。CLASSES部分--包括應(yīng)用程序定義的類的信息,這些實(shí)例將顯示在BLOCKS、ENTITIES以及OBJECTS部分。通常不包括用于與其它應(yīng)用程序交互的信息。TABLES部分--這部分包括命名條目的定義。ApplicationID(APPID)表BlockRecod(BLOCK_RECORD)表DimensionStyle(DIMSTYPE)表Layer(LAYER)表Linetype(LTYPE)表Textstyle(STYLE)表UserCoordinateSystem(UCS)表View(VIEW)表Viewportconfiguration(VPORT)表BLOCKS部分--這部分包括BlockDefinition實(shí)體用于定義每個(gè)Block的組成。ENTITIES部分--這部分是繪圖實(shí)體,包括BlockReferences在內(nèi)。OBJECTS部分--包括非圖形對象的數(shù)據(jù),供AutoLISP以及ObjectARX應(yīng)用程序所使用。THUMBNAILIMAGE部分--包括DXF文件的預(yù)覽圖。ENDOFFILE2.2AutoCAD2004簡介AutoCAD2004是美國Autodesk公司03年開發(fā)的通用計(jì)算機(jī)輔助繪圖與設(shè)計(jì)軟件,具有易于掌握、使用方便、體系結(jié)構(gòu)開放等特點(diǎn),廣泛應(yīng)用于機(jī)械、建筑、電子、航天、造船、石油化工、土木工程、冶金、農(nóng)業(yè)、氣象、紡織、輕工業(yè)等領(lǐng)域。AutoCAD2004具有強(qiáng)大的二維繪圖與編輯功能:可繪制基本二維圖形對象,如直線、射線,構(gòu)造線、圓、圓環(huán)、圓弧、橢圓、矩形、等邊多邊形、樣條曲線、多段線、云線等,為封閉區(qū)域填充圖案、創(chuàng)建圖塊,對圖形對象進(jìn)行刪除、移動(dòng)、復(fù)制、鏡像、陣列、延伸、修剪、縮放等功能。同時(shí)還具有文字標(biāo)注功能:對于文字說明、技術(shù)要求等,用戶可設(shè)置文字樣式,以便使用不同的字體、大小等設(shè)置標(biāo)注文字各種形式的尺寸,設(shè)置尺寸標(biāo)注樣式,可隨時(shí)更改己有標(biāo)注值或標(biāo)注樣式,可實(shí)現(xiàn)關(guān)聯(lián)標(biāo)注。圖層功能:利用標(biāo)準(zhǔn)文件功能,可以對諸如圖層、文字樣式、線型這樣的命名對象定義標(biāo)準(zhǔn)的設(shè)置,利用圖層轉(zhuǎn)換器能夠?qū)?dāng)前圖形圖層的名稱和特性轉(zhuǎn)換成己有圖形或標(biāo)準(zhǔn)文件對圖層的設(shè)置。2.3VisualStudio開發(fā)平臺(tái)與GDI+繪圖機(jī)制簡介VisualStudio是微軟公司推出的開發(fā)環(huán)境,VisualStudio可以用來創(chuàng)建Windows平臺(tái)下的Windows應(yīng)用程序和網(wǎng)絡(luò)應(yīng)用程序,也可以用來創(chuàng)建網(wǎng)絡(luò)服務(wù)、智能設(shè)備應(yīng)用程序和Office插件。C#是微軟(Microsoft)為.NETFramework量身訂做的程序語言,C#擁有C/C++的強(qiáng)大功能以及VisualBasic簡易使用的特性。本課題主要研究C#的GDI+繪圖機(jī)制。Windows窗體提供的圖形類型分為下面三類:2.3.1二維矢量圖形二維矢量圖形是繪圖的基本元素(例如:直線、曲線和圖形)。它們由坐標(biāo)系統(tǒng)上的一些點(diǎn)和另外一些描述參數(shù)指定。例如,直線可通過它的兩個(gè)端點(diǎn)來指定;而矩形可通過確定其左上角的點(diǎn)并給出其寬度和高度的一對數(shù)字來指定:簡單路徑可通過由直線連接的點(diǎn)的數(shù)組來指定;貝塞爾曲線是由4個(gè)控制點(diǎn)指定的復(fù)雜曲線。GDI+提供了存儲(chǔ)基元(基本元素)自身信息的類和結(jié)構(gòu)、存儲(chǔ)基元繪制方式信息的類,以及實(shí)際進(jìn)行繪制的類。2.3.2圖像處理某些種類的圖片很難或者根本無法用矢量圖形技術(shù)來顯示。例如,工具欄按鈕上的圖片和顯示為圖標(biāo)的圖片就難以指定為直線和曲線的集合。色彩豐富且分辨率高的數(shù)碼照片會(huì)更難以使用矢量技術(shù)來制作。這種類型的圖像更適合存儲(chǔ)為位圖,GDI+提供了用于顯示、操作和保存位圖的Bitmap類。2.3.3版式版式是指以各種字體、大小和樣式顯示文本。GDI+提供了對這種復(fù)雜任務(wù)的廣泛支持。GDI是圖形設(shè)備接口,它的主要任務(wù)是負(fù)責(zé)系統(tǒng)與繪圖程序之間的信息交換,處理所有Windows程序的圖形輸出。GDI+中的新功能之一是子像素消除鋸齒,它可以使文本在LCD(LiquidCrystalDisplay)屏幕上呈現(xiàn)時(shí)顯得比較平滑。一般來說,繪圖首先要獲得Graphics對象,然后才可以使用GDI+繪制線條和形狀、呈現(xiàn)文本或顯示與操作圖像。Graphics類是GDI+的核心功能,它是實(shí)際繪制直線、曲線、圖形、圖像和文本的類。Graphics對象在創(chuàng)建后,可用于繪制線條和形狀、呈現(xiàn)文本或顯示與操作圖像。與Graphics對象一起使用的主要對象有以下4種:

Pen類——用于繪制線條、勾勒形狀輪廓或呈現(xiàn)其他幾何表示形式。

Brush類——用于填充圖形區(qū)域,如實(shí)心形狀、圖像或文本。

Font類——提供在呈現(xiàn)文本時(shí)要使用什么形狀的有關(guān)說明。

Color類——表示要顯示的不同顏色。2.4SQLServer2000簡介SQL(StructuredQueryLanguage),結(jié)構(gòu)化查詢語言。SQL語言的主要功能就是同各種數(shù)據(jù)庫建立聯(lián)系,進(jìn)行溝通。按照ANSI(美國國家標(biāo)準(zhǔn)協(xié)會(huì))的規(guī)定,SQL被作為關(guān)系型數(shù)據(jù)庫管理系統(tǒng)的標(biāo)準(zhǔn)語言。SQL語句可以用來執(zhí)行各種各樣的操作,例如更新數(shù)據(jù)庫中的數(shù)據(jù),從數(shù)據(jù)庫中提取數(shù)據(jù)等。絕大多數(shù)流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)都采用了SQL語言標(biāo)準(zhǔn)。雖然很多數(shù)據(jù)庫都對SQL語句進(jìn)行了再開發(fā)和擴(kuò)展,但是包括Select,Insert,Update,Delete,Create,以及Drop在內(nèi)的標(biāo)準(zhǔn)的SQL命令仍然可以被用來完成幾乎所有的數(shù)據(jù)庫操作。SQLServer2000是Microsoft公司推出的SQLServer數(shù)據(jù)庫管理系統(tǒng),該版本繼承了SQLServer7.0版本的優(yōu)點(diǎn),同時(shí)又比它增加了許多更先進(jìn)的功能。具有使用方便可伸縮性好與相關(guān)軟件集成程度高等優(yōu)點(diǎn),可跨越從運(yùn)行MicrosoftWindows98的小型電腦到運(yùn)行MicrosoftWindows2000的大型多處理器的服務(wù)器等多種平臺(tái)。SQL提供的兩種使用方式:一種是自含語言,是一種以獨(dú)立語言的方式與機(jī)器進(jìn)行交互,是非過程化語言,用戶只需提出操作要求,發(fā)出SQL命令,而不必提出操作步驟;另一種是宿主語言,是將SQL命令嵌入某種高級程序設(shè)計(jì)語言中,以實(shí)現(xiàn)數(shù)據(jù)庫操作,從整個(gè)程序來講是過程化的,程序中規(guī)定了操作的步驟,但嵌入的SQL語言仍是非過程化的,完成該語句的過程由系統(tǒng)經(jīng)過優(yōu)化決定。3系統(tǒng)需求分析本課題所要實(shí)現(xiàn)的是基于DXF技術(shù)的草圖繪制系統(tǒng),任務(wù)書中所規(guī)定的系統(tǒng)主要需求如下:采用DXF技術(shù),開發(fā)草圖繪制工具軟件,支持常用的基本圖形繪制,并實(shí)現(xiàn)對顏色的選擇、填充,也可以添加文字;支持對圖形的常用編輯,如選中圖形,進(jìn)行復(fù)制、粘貼、剪切、縮放(縮小、放大)等操作;繪制圖形時(shí)可以進(jìn)行分層,并讓圖層疊加顯示;繪制后的圖形支持保存到數(shù)據(jù)庫中,也可以添加到WORD等文檔中;支持文檔常用操作,如新建、打開、保存到本地、另存。系統(tǒng)用例圖如下圖所示:圖3.1系統(tǒng)用例圖4基于DXF技術(shù)的草圖繪制系統(tǒng)設(shè)計(jì)4.1繪圖系統(tǒng)的功能模塊設(shè)計(jì)經(jīng)過對系統(tǒng)需求的詳細(xì)分析,設(shè)計(jì)出以下系統(tǒng)功能模塊圖:圖4.1系統(tǒng)功能模塊圖詳細(xì)的功能模塊操作釋義如下表所示:表4.1系統(tǒng)詳細(xì)功能模塊操作釋義表功能名稱具體操作選擇圖形類型選擇系統(tǒng)所具有的草圖類型選擇繪圖參數(shù)選擇畫筆的顏色、寬度、樣式及圖形所在的畫板選擇填充方式選擇有邊框白色填充、有邊框顏色填充、無邊框顏色填充復(fù)制圖形將選定的圖形的特征屬性存入系統(tǒng)剪切板粘貼圖形將系統(tǒng)剪切板中的圖形特征屬性加載到系統(tǒng)并繪制圖形重繪圖形動(dòng)態(tài)改變選定圖形的大小、形狀拖動(dòng)圖形將選定圖形在繪圖區(qū)域內(nèi)動(dòng)態(tài)拖動(dòng),改變其在畫板上的位置新建畫板新建一個(gè)繪圖畫板,系統(tǒng)最多支持10個(gè)畫板同時(shí)開啟刪除畫板刪除所選中的畫板,當(dāng)系統(tǒng)只有一個(gè)畫板時(shí)不能將其刪除切換畫板在多個(gè)畫板之間任意切換畫板,查看并繪制、編輯其中的內(nèi)容4.2繪圖類的設(shè)計(jì)系統(tǒng)所設(shè)計(jì)的繪圖類如下表所示:表4.2系統(tǒng)的繪圖類表繪圖類名稱繪圖類名稱DrawObject:繪制草圖基類DrawRectangle:繪制矩形類DrawLine:繪制直線類DrawString:繪制文本框類DrawPolygon:繪制點(diǎn)軌跡曲線類DrawEllipse:繪制橢圓類DrawMultiLine:繪制多段線類DrawPicture:繪制圖片框類DrawArc:繪制弧線類DrawPentagon:繪制正五邊形類DrawCircle:繪制圓類DrawHexagon:繪制正六邊形類DrawTriangle:繪制正三角形類DrawPieSlice:繪制扇形類DrawSquare:繪制正方形類DrawBezierCurve:繪制貝塞爾曲線類不同類型的繪圖類之間的繼承關(guān)系如下圖所示:圖4.2繪圖類之間的繼承關(guān)系圖4.3系統(tǒng)操作界面的設(shè)計(jì)系統(tǒng)的操作界面由圖形繪制和編輯區(qū)域、系統(tǒng)繪圖功能參數(shù)設(shè)置區(qū)域兩大部分構(gòu)成。用戶可在系統(tǒng)參數(shù)設(shè)置區(qū)域上進(jìn)行功能和參數(shù)選擇,在繪圖區(qū)域上對草圖進(jìn)行繪制和編輯,以求達(dá)到預(yù)期的繪圖效果。操作界面由WhiteBoard用戶控件、DrawArea用戶控件、ToolStrip1系統(tǒng)控件、ToolStrip2系統(tǒng)控件構(gòu)成。其中DrawArea用戶控件、ToolStrip1系統(tǒng)控件、ToolStrip2系統(tǒng)控件被集成在WhiteBoard用戶控件之中,而DrawArea控件則為草圖繪制和編輯區(qū)域,ToolStrip1控件和ToolStrip2控件則用來對系統(tǒng)的各項(xiàng)參數(shù)進(jìn)行設(shè)置。DrawArea控件和ToolStrip1、ToolStrip2控件被嵌入在WhiteBoard控件中,進(jìn)而將整個(gè)WhiteBoard用戶控件加載到Form中形成用戶界面。下圖為操作界面設(shè)計(jì)圖:功能參數(shù)設(shè)置欄圖形繪制和編輯區(qū)域功能參數(shù)設(shè)置欄功能參數(shù)設(shè)置欄圖形繪制和編輯區(qū)域功能參數(shù)設(shè)置欄圖4.3系統(tǒng)主操作界面4.4草圖存儲(chǔ)讀取機(jī)制的設(shè)計(jì)繪制草圖的核心功能是通過調(diào)用GDI+提供的繪圖方法而實(shí)現(xiàn),圖形在繪制完成之后,系統(tǒng)要能夠?qū)⑵浔4娴酱鎯?chǔ)器或者數(shù)據(jù)庫中,這就需要提取每個(gè)圖形的基本特征屬性,然后再按照DXF的格式將其存儲(chǔ)。4.4.1草圖的DXF存儲(chǔ)設(shè)計(jì)草圖的DXF存儲(chǔ)主要是根據(jù)所繪圖形的特征屬性等基本信息將其存儲(chǔ)為標(biāo)準(zhǔn)的DXF文件,包含生成文件固定的字段、根據(jù)圖形特征屬性等基本信息填充HEADERS段、TABLES段、ENTITIES段等,將所有數(shù)據(jù)按照規(guī)定的順序填充到一個(gè)文件中并將數(shù)據(jù)生成標(biāo)準(zhǔn)的DXF文件。圖4.4草圖的DXF存儲(chǔ)流程設(shè)計(jì)4.4.2草圖的DXF讀取設(shè)計(jì)草圖的DXF讀取主要是打開一個(gè)標(biāo)準(zhǔn)的DXF文件,然后將打開文件中的字符串保存起來以便后續(xù)分析提取有用的信息,將字符串按HEADERS、TABLES、ENTITIES段分別提取出來,根據(jù)分離出的信息按照組碼提取需要的組值,最后根據(jù)所提取的信息調(diào)用系統(tǒng)繪圖功能繪出圖形。圖4.5草圖的DXF讀取流程設(shè)計(jì)5基于DXF技術(shù)的草圖繪制系統(tǒng)實(shí)現(xiàn)5.1草圖繪制功能的實(shí)現(xiàn)草圖繪制功能是繪圖系統(tǒng)前臺(tái)的重要組成部分,該功能的實(shí)現(xiàn)需要為每種類型的圖形設(shè)計(jì)其獨(dú)立的繪圖算法,并選擇適當(dāng)?shù)腉DI+所提供的繪圖方法才能將各種不同類型的草圖順利繪出。在繪制草圖之前要首先設(shè)置系統(tǒng)的畫筆(Pen)參數(shù),包括畫筆線條寬度、顏色、虛實(shí)等,其次對于閉合圖形還可設(shè)置其填充方式和顏色。針對不同類型草圖的繪制方法系統(tǒng)的具體實(shí)現(xiàn)如下:5.1.1直線(Line)的繪制直線的繪制需要在繪圖區(qū)域捕獲兩個(gè)坐標(biāo)點(diǎn),第一個(gè)坐標(biāo)點(diǎn)為直線的起始坐標(biāo)點(diǎn)StartPoint,第二個(gè)坐標(biāo)點(diǎn)為直線的終止坐標(biāo)點(diǎn)EndPoint,然后生成System.Drawing所提供的Graphics對象g,最后調(diào)用g.DrawLine(Pen,StartPoint.X,StartPoint.Y,EndPoint.X,EndPoint.Y)函數(shù)將其繪出。Pen為系統(tǒng)畫筆參數(shù),StartPoint.X和StartPoint.Y分別為該點(diǎn)在畫板上的X軸坐標(biāo)分量和Y軸坐標(biāo)分量,以下各圖形介紹均以此為例。繪制直線的流程圖如下:圖5.1繪制直線的流程圖5.1.2貝塞爾曲線(BezierCurve)的繪制貝塞爾曲線就是這樣的一條曲線,它是依據(jù)四個(gè)位置任意的點(diǎn)坐標(biāo)繪制出的一條光滑曲線。在歷史上,研究貝塞爾曲線的人最初是按照已知曲線參數(shù)方程來確定四個(gè)點(diǎn)的思路設(shè)計(jì)出這種矢量曲線繪制法。貝塞爾曲線的有趣之處更在于它的“皮筋效應(yīng)”,也就是說,隨著點(diǎn)有規(guī)律地移動(dòng),曲線將產(chǎn)生皮筋伸引一樣的變換,帶來視覺上的沖擊。1962年,法國數(shù)學(xué)家PierreBézier第一個(gè)研究了這種矢量繪制曲線的方法,并給出了詳細(xì)的計(jì)算公式。貝塞爾曲線的重要作用在于:由于用計(jì)算機(jī)畫圖大部分時(shí)間是操作鼠標(biāo)來掌握線條的路徑,與手繪的感覺和效果有很大的差別。即使是一位精明的畫師能輕松繪出各種圖形,拿到鼠標(biāo)想隨心所欲的畫圖也不是一件容易的事。這一點(diǎn)是計(jì)算機(jī)萬萬不能代替手工的工作,所以到目前為止人們只能頗感無奈。使用貝塞爾工具畫圖很大程度上彌補(bǔ)了這一缺憾。貝塞爾曲線的繪制需要在繪圖區(qū)域捕獲四個(gè)坐標(biāo)點(diǎn),第一個(gè)坐標(biāo)點(diǎn)為貝塞爾曲線的起始坐標(biāo)點(diǎn)StartPoint,第二個(gè)坐標(biāo)點(diǎn)為貝塞爾曲線的終止坐標(biāo)點(diǎn)EndPoint,然后生成System.Drawing所提供的Graphics對象g并調(diào)用g.DrawLine(Pen,StartPoint.X,StartPoint.Y,EndPoint.X,EndPoint.Y)函數(shù)繪出貝塞爾曲線的主體直線,第三個(gè)坐標(biāo)點(diǎn)為貝塞爾曲線的其中一個(gè)控制坐標(biāo)點(diǎn)ControlPoint1,還需調(diào)用g.DrawBezier(Pen,StartPoint,ControlPoint1,ControlPoint1,EndPoint)繪制單控制點(diǎn)貝塞爾曲線,第四個(gè)坐標(biāo)點(diǎn)為貝塞爾曲線的另一個(gè)控制坐標(biāo)點(diǎn)ControlPoint2,此時(shí)調(diào)用g.DrawBezier(Pen,StartPoint,ControlPoint1,ControlPoint2,EndPoint)完整的貝塞爾曲線即繪制完畢。繪制貝塞爾曲線的效果圖如下:圖5.2繪制貝塞爾曲線的效果圖繪制貝塞爾曲線的流程圖如下:圖5.3繪制貝塞爾曲線的流程圖5.1.3多段線(MultiLine)的繪制多段線就是由多條直線首尾相連而組成的一種多段折線。在多段線的繪制過程中以鼠標(biāo)左鍵點(diǎn)擊繪圖域開始繪制,以鼠標(biāo)右鍵點(diǎn)擊繪圖域結(jié)束繪制,其間所捕獲的所有坐標(biāo)點(diǎn)即為其特征點(diǎn)。多段線的繪制需要在繪圖區(qū)域捕獲至少兩個(gè)坐標(biāo)點(diǎn),第一個(gè)坐標(biāo)點(diǎn)為多段線的起始坐標(biāo)點(diǎn)StartPoint,最后一個(gè)坐標(biāo)點(diǎn)為多段線的終止坐標(biāo)點(diǎn)EndPoint,在此兩點(diǎn)間獲取的所有坐標(biāo)點(diǎn)為多段線的連接點(diǎn),繪制過程中需設(shè)立一個(gè)點(diǎn)數(shù)組PointList數(shù)組將這些點(diǎn)按先后順序存入數(shù)組。在生成Graphics對象g后,以PointList數(shù)組中依次相鄰的兩點(diǎn)PriorPoint、NextPoint為參數(shù),循環(huán)調(diào)用g.DrawLine(Pen,PriorPoint.X,PriorPoint.Y,NextPoint.X,NextPoint.Y,)函數(shù)將多段線各段首尾相接逐段繪出。對于各段首尾相接處的棱角點(diǎn)都是可以拖動(dòng)的,進(jìn)而可改變多段線的形狀。繪制多段線的效果圖如下:圖5.4繪制多段線的效果圖繪制多段線的流程圖如下:圖5.5繪制多段線的流程圖5.1.4弧線(Arc)的繪制弧線的繪制需要在繪圖區(qū)域捕獲一個(gè)矩形框,此矩形框?yàn)榇_定所繪弧線大小尺寸的參數(shù)Rectangle,此外要繪制圓或橢圓上任意角度的弧線還需輸入起始角度StartAngle和掃過角度SweepAngle以確定弧線的起始點(diǎn)和終止點(diǎn)。獲取參數(shù)后生成System.Drawing所提供的Graphics對象g,最后調(diào)用g.DrawArc(Pen,Rectangle,StartAngle,SweepAngle)函數(shù)將其繪出。輸入起始角度StartAngle和掃過角度SweepAngle的界面如下:圖5.6起始角度和掃過角度的輸入界面繪制弧線的流程圖如下:圖5.7繪制弧線的流程圖5.1.5扇形(PieSlice)的繪制扇形的繪制需要在繪圖區(qū)域捕獲一個(gè)矩形框,此矩形框?yàn)榇_定所繪扇形大小尺寸的參數(shù)Rectangle,此外要繪制圓餅或橢圓餅上任意角度的扇形還需輸入起始角度StartAngle和掃過角度SweepAngle以確定其形狀。獲取參數(shù)后生成System.Drawing所提供的Graphics對象g,最后調(diào)用g.DrawPie(Pen,Rectangle,StartAngle,SweepAngle)函數(shù)將其繪出。輸入起始角度StartAngle和掃過角度SweepAngle的界面如下:圖5.8起始角度和掃過角度的輸入界面扇形的繪制流程類似弧線的繪制流程,但因其為閉合圖形,所以可以設(shè)置其繪制時(shí)的填充方式。繪制扇形的流程圖如下:圖5.9繪制扇形的流程圖5.1.6圓(Circle)的繪制圓的繪制需要在繪圖區(qū)域捕獲一個(gè)圓心點(diǎn)CenterPoint,獲取圓的半徑Radius,以確定其位置和大小。獲取參數(shù)后生成System.Drawing所提供的Graphics對象g,因?yàn)閳A屬于一種特殊的橢圓,所以調(diào)用g.DrawEllipse(Pen,CenterPoint.X-Radius,CenterPoint.Y-Radius,2*Radius,2*Radius)函數(shù)將圓繪出。繪制圓的流程圖如下:圖5.10繪制圓的流程圖5.1.7橢圓(Ellipse)的繪制橢圓的繪制需要在繪圖區(qū)域捕獲一個(gè)矩形區(qū)域Rectangle,以該矩形的長作為橢圓的長軸長度,以該矩形的高作為橢圓的短軸長度。獲取參數(shù)后生成System.Drawing所提供的Graphics對象g,所以調(diào)用g.DrawEllipse(Pen,Rectangle)函數(shù)即可將橢圓繪出。繪制橢圓的效果圖如下:圖5.11繪制橢圓的效果圖繪制橢圓的流程圖如下:圖5.12繪制橢圓的流程圖5.1.8矩形(Rectangle)的繪制矩形的繪制需要在繪圖區(qū)域捕獲一個(gè)矩形區(qū)域Rectangle,該矩形區(qū)域即為所繪矩形。獲取參數(shù)后生成System.Drawing所提供的Graphics對象g,最后調(diào)用g.DrawRectangle(Pen,Rectangle)函數(shù)將矩形繪出。繪制矩形的流程圖如下:圖5.13繪制矩形的流程圖5.1.9正三角形(EquilateralTriangle)的繪制正三角形的繪制需要在繪圖區(qū)域捕獲一個(gè)坐標(biāo)點(diǎn)Point1,然后通過特殊算法依據(jù)Point1的坐標(biāo)計(jì)算出其余兩個(gè)點(diǎn)Point2、Point3的坐標(biāo)并將三個(gè)坐標(biāo)點(diǎn)存入所設(shè)置的CurvePoints點(diǎn)數(shù)組。獲取參數(shù)后生成System.Drawing所提供的Graphics對象g,最后調(diào)用g.DrawPolygon(Pen,CurvePoints)函數(shù)將正三角形繪出。繪制正三角形的流程圖如下:圖5.14繪制正三角形的流程圖繪制正三角形的效果圖如下:圖5.15繪制正三角形的效果圖5.1.10正方形(Square)的繪制正方形的繪制需要在繪圖區(qū)域捕獲一個(gè)坐標(biāo)點(diǎn)Point1,然后通過特殊算法依據(jù)Point1的坐標(biāo)計(jì)算出其余三個(gè)點(diǎn)Point2、Point3、Point4的坐標(biāo)并將四個(gè)坐標(biāo)點(diǎn)存入所設(shè)置的CurvePoints點(diǎn)數(shù)組。獲取參數(shù)后生成System.Drawing提供的Graphics對象g,最后調(diào)用g.DrawPolygon(Pen,CurvePoints)函數(shù)將正方形繪出。繪制正方形的流程圖如下:圖5.16繪制正方形的流程圖5.1.11正五邊形(Pentagon)的繪制正五邊形的繪制需要在繪圖區(qū)域捕獲一個(gè)坐標(biāo)點(diǎn)Point1,然后通過特殊算法依據(jù)Point1的坐標(biāo)計(jì)算出其余四個(gè)點(diǎn)Point2、Point3、Point4、Point5的坐標(biāo)并將五個(gè)坐標(biāo)點(diǎn)存入所設(shè)置的CurvePoints點(diǎn)數(shù)組。獲取參數(shù)后生成System.Drawing提供的Graphics對象g,最后調(diào)用g.DrawPolygon(Pen,CurvePoints)函數(shù)將正五邊形繪出。繪制正五邊形的效果圖如下:圖5.17繪制正五邊形的效果圖繪制正五邊形的流程圖如下:圖5.18繪制正五邊形的流程圖5.1.12正六邊形(Hexagon)的繪制正六邊形的繪制需要在繪圖區(qū)域捕獲一個(gè)坐標(biāo)點(diǎn)Point1,然后通過特殊算法依據(jù)Point1的坐標(biāo)計(jì)算出其余五個(gè)點(diǎn)Point2、Point3、Point4、Point5、Point6的坐標(biāo)并將六個(gè)坐標(biāo)點(diǎn)存入所設(shè)置的CurvePoints點(diǎn)數(shù)組。獲取參數(shù)后生成Graphics對象g,最后調(diào)用g.DrawPolygon(Pen,CurvePoints)函數(shù)將正六邊形繪出。繪制正六邊形的效果圖如下:圖5.19繪制正六邊形的效果圖繪制正六邊形的流程圖如下:圖5.20繪制正六邊形的流程圖5.1.13點(diǎn)軌跡曲線(Polygon)的繪制點(diǎn)軌跡曲線的繪制需要在繪圖區(qū)域捕獲一連串的坐標(biāo)點(diǎn),然后將這一連串的坐標(biāo)點(diǎn)存入所設(shè)置的PointList點(diǎn)數(shù)組。獲取參數(shù)后生成System.Drawing提供的Graphics對象g,然后將PointList數(shù)組中的點(diǎn)按順序依次取出,使每兩個(gè)相鄰的點(diǎn)作為參數(shù),調(diào)用g.DrawLine(Pen,PointList[i].x,PointList[i].y,PointList[i-1].x,PointList[i-1].y)函數(shù)將點(diǎn)軌跡曲線繪出。由于每兩個(gè)點(diǎn)之間的距離比較微小,所以呈現(xiàn)出來的形式類似于點(diǎn)軌跡。繪制點(diǎn)軌跡曲線的效果圖如下:圖5.21繪制點(diǎn)軌跡曲線的效果圖繪制點(diǎn)軌跡曲線的流程圖如下:圖5.22繪制點(diǎn)軌跡曲線的流程圖5.2草圖編輯功能的實(shí)現(xiàn)草圖的編輯功能主要是改變草圖的線條寬度、線條樣式、線條顏色、形狀和大小以及動(dòng)態(tài)拖動(dòng)草圖。5.2.1改變線條寬度系統(tǒng)所設(shè)置的畫筆線條寬度分為五種,寬度依次變大,通過改變PenWidth而實(shí)現(xiàn)具體的線條粗細(xì)的改變,下面以正三角形為例展示:圖5.231px寬度圖5.245px寬度5.2.2改變線條樣式系統(tǒng)所設(shè)置的畫筆線條樣式分為兩種,分別為實(shí)線、虛線,通過改變PenStyle而實(shí)現(xiàn)具體的線條樣式的改變,下面以橢圓為例展示:圖5.25實(shí)線條圖5.26虛線條5.2.3改變線條顏色系統(tǒng)所設(shè)置的畫筆線條顏色為Windows操作系統(tǒng)所提供,通過改變PenColor而實(shí)現(xiàn)具體的線條顏色的改變。5.2.4改變草圖的形狀與大小為了能改變草圖的形狀和大小,系統(tǒng)為每種類型的草圖都設(shè)置了鎖定紅框,鎖定紅框的作用就是紅框勾勒出圖形的大致輪廓,并以小紅點(diǎn)的形式標(biāo)記出可以改變圖形形狀和大小的特殊點(diǎn),當(dāng)鼠標(biāo)左鍵單擊已繪制的草圖時(shí)鎖定紅框隨即出現(xiàn),當(dāng)鼠標(biāo)移動(dòng)到特殊點(diǎn)時(shí)光標(biāo)形狀會(huì)發(fā)生變化,此時(shí)按下左鍵通過改變光標(biāo)位置即可實(shí)現(xiàn)草圖的形狀大小的改變,下圖為各個(gè)類型草圖的鎖定紅框:圖5.27各個(gè)類型草圖的鎖定紅框5.2.5填充閉合草圖系統(tǒng)提供三種不同的方式填充閉合草圖,分別為有邊框白色填充、有邊框顏色填充、無邊框顏色填充。系統(tǒng)所設(shè)置的畫刷顏色為Windows操作系統(tǒng)所提供,通過改變BrushColor而實(shí)現(xiàn)具體的填充顏色的改變,以扇形為例展示如下:圖5.28黑色邊框白色填充扇形圖5.29黑色邊框黃色填充扇形5.2.6動(dòng)態(tài)拖動(dòng)草圖動(dòng)態(tài)拖動(dòng)草圖就是要改變草圖在畫板上的位置,此功能的實(shí)現(xiàn)是將所選定的草圖的特征坐標(biāo)點(diǎn)的X坐標(biāo)值和Y坐標(biāo)值同時(shí)加或減相同的數(shù)值Delta,而Delta則為鼠標(biāo)拖動(dòng)時(shí)移動(dòng)的距離,然后草圖在繪圖域動(dòng)態(tài)重繪,所以草圖會(huì)跟隨鼠標(biāo)移動(dòng)而移動(dòng)。5.3草圖復(fù)制粘貼功能的實(shí)現(xiàn)草圖繪制系統(tǒng)所實(shí)現(xiàn)的復(fù)制粘貼功能涉及系統(tǒng)所具備的各種草圖類型,復(fù)制粘貼功能既可以在單獨(dú)的繪圖系統(tǒng)中使用,也可以完成在同時(shí)開啟的兩個(gè)不同的繪圖系統(tǒng)間的草圖的復(fù)制與粘貼。該功能的實(shí)現(xiàn)主要借助于C#所提供的剪切板機(jī)制(Clipboard),在選定要復(fù)制的草圖之后點(diǎn)擊復(fù)制按鈕既可以將所有被選中圖形的特征屬性依次抽取出來并存入剪切板,當(dāng)點(diǎn)擊粘貼按鈕后系統(tǒng)會(huì)將剪切板中的圖形特征屬性依次讀取并加載到系統(tǒng),進(jìn)而繪制在新開辟的畫板上。系統(tǒng)存儲(chǔ)圖形特征屬性的類的結(jié)構(gòu)如下表:表5.1存儲(chǔ)圖形特征屬性的類的結(jié)構(gòu)表變量名所存儲(chǔ)的圖形特征屬性publicDrawObjectTypeType=newDrawObjectType();圖形所屬類型publicintPenWidth=0;畫筆寬度publicPenStylePenStyle=PenStyle.solid;畫筆樣式默認(rèn)為實(shí)線publicFillStyleFillStyle=FillStyle.hellow;閉合圖形填充方式默認(rèn)為有邊框白色填充publicColorPenColor=newColor();畫筆顏色publicColorBrushColor=newColor();畫刷顏色填充閉合圖形時(shí)用publicPointStartPoint=newPoint();起始點(diǎn)publicPointEndPoint=newPoint();終止點(diǎn)publicPointControlPoint1=newPoint();控制點(diǎn)1publicPointControlPoint2=newPoint();控制點(diǎn)2publicfloatStartAngel=0;起始角度publicfloatSweepAngel=0;掃過角度publicList<Point>PointList=newList<Point>();坐標(biāo)點(diǎn)數(shù)組復(fù)制粘貼功能的流程圖如下:圖5.30復(fù)制粘貼功能流程圖下表為具體的每類草圖在復(fù)制時(shí)需要提取的特征屬性:表5.2每類草圖要被提取的特征信息表圖形屬性起始點(diǎn)終止點(diǎn)控制點(diǎn)1控制點(diǎn)2所屬矩形畫筆顏色畫筆寬度畫筆樣式填充方式畫刷顏色開始角度掃過角度點(diǎn)數(shù)組LineArcMultiLinesBezierCurvePieSlicePolygonRectangleEllipseCricleTriangleSquarePentagonHexagonYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY(Random)Y(4Points)Y(Random)Y(3Points)Y(4Points)Y(5Points)Y(6Points)5.4草圖DXF存儲(chǔ)讀取功能的實(shí)現(xiàn)草圖在繪制完畢后需要進(jìn)行存儲(chǔ)與讀取,為了使系統(tǒng)所存儲(chǔ)的草圖數(shù)據(jù)能與其他CAD軟件進(jìn)行交換,系統(tǒng)采用DXF文件格式對草圖進(jìn)行存儲(chǔ)。在實(shí)現(xiàn)該部分功能時(shí),需要詳細(xì)研究DXF機(jī)制,主要思路是對不同類型的草圖提取其各自的特征屬性(見表5.2),再將其轉(zhuǎn)化為DXF文件的各個(gè)段中的信息,最終以ASCII字符串的形式存儲(chǔ)。草圖的DXF存儲(chǔ)界面如下:圖5.31草圖的DXF存儲(chǔ)界面草圖的DXF讀取界面如下:圖5.32草圖的DXF讀取界面DXF文件是基于向量的ASCII碼文件,所以保存后的DXF文件可以被記事本打開,如下為Line的DXF文件被記事本打開的形式:圖5.33以記事本方式打開的Line的DXF文件經(jīng)測試,本繪圖系統(tǒng)所繪制的草圖在保存為DXF文件之后可以被CAD軟件正確讀取和識別。如下圖所示:圖5.34本系統(tǒng)所繪草圖圖5.35AutoCAD系統(tǒng)所打開的本系統(tǒng)所存DXF文件AutoCAD軟件并不支持圖形的數(shù)據(jù)庫存儲(chǔ),本系統(tǒng)的擴(kuò)展功能為支持將草圖特征信息存儲(chǔ)到數(shù)據(jù)庫中,但這種存儲(chǔ)形式并非DXF格式,從而并不能實(shí)現(xiàn)與其他CAD軟件的數(shù)據(jù)交換與兼容,所設(shè)計(jì)的數(shù)據(jù)庫表單以畫板表、Line表、Circle表為例展示如下:表5.3畫板表序號字段名字段說明類型寬度123456789idnamecountlinenumberlinetypelinecolorfillstylefillcolortextstyle惟一標(biāo)識分類(畫板號)畫板名稱實(shí)體數(shù)量線寬線型線性顏色填充方式填充顏色字體樣式intnvarcharintintcharintcharintchar4104410410410表5.4Line表序號字段名字段說明類型寬度1234567idfidstartpointendpointlinenumberlinetypelinecolor惟一標(biāo)識分類所屬畫板號起始點(diǎn)終點(diǎn)線寬線型線性顏色intintdoubledoubleintcharint44444104表5.5Circle表序號字段名字段說明類型寬度123456789idfidcentrepointradiuslinenumberlinetypelinecolorfillstylefillcolor惟一標(biāo)識分類(畫板號)所屬畫板號圓心半徑線寬線型線性顏色填充方式填充顏色intintdoubledoubleintcharintcharint44444104104結(jié)論本課題所要實(shí)現(xiàn)的是基于DXF技術(shù)的草圖繪制軟件,課題的研究主要集中于兩個(gè)方面,第一個(gè)是在VS2005編譯環(huán)境下學(xué)習(xí)C#語言的編程機(jī)制,利用其所提供的GDI+類進(jìn)行圖形的繪制與編輯,第二個(gè)方面是研究DXF技術(shù)的基礎(chǔ)理論和實(shí)現(xiàn)方法,并將GDI+所繪的圖形與DXF的文件存儲(chǔ)讀取機(jī)制相結(jié)合,最終實(shí)現(xiàn)該系統(tǒng)。經(jīng)測試,AutoCAD軟件已經(jīng)能完全順利讀取和打開本系統(tǒng)所繪制的草圖,這表明DXF文件在AutoCAD軟件和其他CAD軟件的數(shù)據(jù)交換中發(fā)揮了重要作用,DXF數(shù)據(jù)交換格式為眾多軟件提供了一個(gè)標(biāo)準(zhǔn)實(shí)現(xiàn)了資源的共享。通過這次畢業(yè)設(shè)計(jì)我學(xué)到了很多東西,提高了分析和設(shè)計(jì)系統(tǒng)的能力,強(qiáng)化了編寫和審閱代碼的能力,加深了我對軟件工程理論的理解,為我今后的軟件設(shè)計(jì)和編程打下了良好的基礎(chǔ),但同時(shí)也深深感到自己知識的欠缺和不足,在今后需要更加努力學(xué)習(xí)專業(yè)知識,更多實(shí)踐,爭取更大的進(jìn)步。參考文獻(xiàn)[1]蔣玉川,陳輝.AutoCAD圖形交換文件DXF在面向?qū)ο蟪绦蛟O(shè)計(jì)中的應(yīng)用.力學(xué)與實(shí)踐,第4期,2010.[2]李晨.用VC實(shí)現(xiàn)基于DXF文件的AutoCAD數(shù)據(jù)共享接口.工業(yè)控制計(jì)算機(jī),第4期,2010.[3]陳浩,陳宏.解讀AUTOCAD的DXF文件.貴州科學(xué),第20卷第4期,2002年12月.[4]\t"result2"張禮兵,\t"result2"吳婷,\t"result2"閆興書.基于DXF圖形文件數(shù)控加工接口設(shè)計(jì).\t"result2"機(jī)械工程師,第9期,2005.[5]蔡伯陽,林金明,謝明紅.基于DXF文件的NC代碼生成[J].現(xiàn)代制造工程,2002,(02)[6]嚴(yán)潮紅,劉軍,李靖誼.基于哈希表的DXF文件信息讀取方法及其應(yīng)用[J].鹽城工學(xué)院學(xué)報(bào)(自然科學(xué)版),2006,(01)[7]\t"result2"譚超;\t"result2"張

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論