AutoCAD二次開發(fā) -鈑金展開CAD系統(tǒng)開發(fā)B_第1頁(yè)
AutoCAD二次開發(fā) -鈑金展開CAD系統(tǒng)開發(fā)B_第2頁(yè)
AutoCAD二次開發(fā) -鈑金展開CAD系統(tǒng)開發(fā)B_第3頁(yè)
AutoCAD二次開發(fā) -鈑金展開CAD系統(tǒng)開發(fā)B_第4頁(yè)
AutoCAD二次開發(fā) -鈑金展開CAD系統(tǒng)開發(fā)B_第5頁(yè)
已閱讀5頁(yè),還剩67頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

專用繪圖工具開發(fā)設(shè)計(jì)PAGE44PAGE43第一章AutoCAD二次開發(fā)概述AutoCAD是一個(gè)通用的CAD平臺(tái),它不僅具有強(qiáng)大的繪圖、編輯功能,而且具有開放的體系結(jié)構(gòu),允許用戶對(duì)其進(jìn)行二次開發(fā),以滿足繪圖過(guò)程中的特殊要求。AutoCAD榮登全球繪圖軟件的龍頭寶座,主要是因?yàn)樗哂虚_放的體系結(jié)構(gòu)。它允許用戶和開發(fā)者采用高級(jí)編程語(yǔ)言對(duì)其進(jìn)行擴(kuò)充和修改,即二次開發(fā),能最大限度地滿足用戶的特殊要求。AutoCAD第一版于1982年11月由AutoDESK公司推出,目前最新版本是AutoCAD2007。1.1AutoCAD簡(jiǎn)介AutoCAD是美國(guó)AUTODESK公司1982年在微機(jī)上開發(fā)的繪圖軟件包,AutoCAD的版本不斷更新,更新的版本功能逐步增加,現(xiàn)已成為強(qiáng)有力繪圖工具,在國(guó)際上廣為流傳。AutoCAD廣泛應(yīng)用于建筑、機(jī)械、電子、藝術(shù)造型及工程管理等領(lǐng)域,是微機(jī)上最為流行的繪圖軟件之一。使用AutoCAD對(duì)用戶的計(jì)算機(jī)和英語(yǔ)不作要求,現(xiàn)在已有了中文版的AutoCAD軟件,可應(yīng)用中文直接與軟件對(duì)話,使用相當(dāng)方便。掌握好AutoCAD的關(guān)鍵就是實(shí)踐,通過(guò)實(shí)踐掌握各種命令的應(yīng)用技巧,以提高繪圖的速度。其主要功能有:一繪圖功能AutoCAD提供了豐富的基本繪圖實(shí)體,具有完善的圖形繪制功能,繪制的圖形是由預(yù)先定義好的圖形元素即實(shí)體(Entity)所組成,實(shí)體通過(guò)命令調(diào)用和光標(biāo)定位即可輸入。如:點(diǎn)、直線、多邊形、圓弧、橢圓、文本、剖面線、尺寸等等。二編輯功能AutoCAD提供了各種修改手段,具有強(qiáng)大的圖形編輯功能,AutoCAD可以對(duì)圖形進(jìn)行擦除、修改、拷貝、移動(dòng)、鏡像、斷開、修剪、旋轉(zhuǎn)等多種編輯操作。三繪圖工具AutoCAD為用戶提供了大量的繪圖工具,如捕捉、刪格、正交、動(dòng)態(tài)坐標(biāo)、目標(biāo)捕捉、縮放、點(diǎn)過(guò)濾、用戶坐標(biāo)等等輔助繪圖工具。四三維功能AutoCAD可直接繪制三維圖形,它提供了一個(gè)實(shí)體造型模塊(AME),可生成典型三維實(shí)心體、拉伸體、回轉(zhuǎn)體,對(duì)這些實(shí)心體進(jìn)行并差交等布爾運(yùn)算就可以構(gòu)成組合體,進(jìn)而可獲得剖切圖輪廓圖著色圖等。第一章AutoCAD概述五開發(fā)環(huán)境AutoCAD內(nèi)含AutoLISP語(yǔ)言和ADS開發(fā)系統(tǒng),便于用戶進(jìn)行二次開發(fā)。用戶可以利用AutoLISP編制各種程序,從而為AutoCAD增加新的命令,也可以編制圖形數(shù)據(jù)庫(kù)。ADS是以C語(yǔ)言為基礎(chǔ)的開發(fā)系統(tǒng),它具有AutoLISP的大部分功能,并可使用標(biāo)準(zhǔn)C函數(shù),是開發(fā)AutoCAD的另一有效工具。另外AutoCAD還有制作幻燈、文件管理等其它功能1.2AutoCAD二次開發(fā)語(yǔ)言及工具簡(jiǎn)介1.2.1AutoLISPAutoLISP的全名是ListProcessingLanguage,她出現(xiàn)于1985年推出的AutoCADR2.18中,是一種嵌入在AutoCAD內(nèi)部的編程語(yǔ)言,AutoLISP語(yǔ)言是AutoCAD“變量和表達(dá)式”功能的擴(kuò)充,是通常的LISP語(yǔ)言的一個(gè)子集,它定義了112種函數(shù),具有與AutoCAD命令的接口、文件的I/O七種數(shù)據(jù)形式以及多種邏輯功能。以它圖形編輯性能強(qiáng),可增設(shè)內(nèi)部命令的特點(diǎn)。一直是低版本AutoCAD的首選編程語(yǔ)言。AutoLISP是一種表處理語(yǔ)言,是被解釋執(zhí)行的,任何一個(gè)語(yǔ)句鍵入后就能馬上執(zhí)行,它對(duì)于交互式的程序開發(fā)非常方便。其缺點(diǎn)是繼承了LISP語(yǔ)言的編程規(guī)則而導(dǎo)致繁多的括號(hào)。1.2.2ADSADS的全名是AutoCADDevelopmentSystem,它是AutoCAD的C語(yǔ)言開發(fā)系統(tǒng),ADS本質(zhì)上是一組可以用C語(yǔ)言編寫AutoCAD應(yīng)用程序的頭文件和目標(biāo)庫(kù),它直接利用用戶熟悉的各種流行的C語(yǔ)言編譯器,將應(yīng)用程序編譯成可執(zhí)行的文件在AutoCAD環(huán)境下運(yùn)行,這種可以在AutoCAD環(huán)境中直接運(yùn)行的可執(zhí)行文件叫做ADS應(yīng)用程序。ADS由于其速度快,又采用結(jié)構(gòu)化的編程體系,因而很適合于高強(qiáng)度的數(shù)據(jù)處理,如二次開發(fā)的機(jī)械設(shè)計(jì)CAD、工程分析CAD、建筑結(jié)構(gòu)CAD、土木工程CAD、化學(xué)工程CAD、電氣工程CAD等。1.2.3ObjectARX

ObjectARX是一種嶄新的開發(fā)AutoCAD應(yīng)用程序的工具,她以C++為編程語(yǔ)言,采用先進(jìn)的面向?qū)ο蟮木幊淘?,提供可與AutoCAD直接交互的開發(fā)環(huán)境,能使用戶方便快捷地開發(fā)出高效簡(jiǎn)潔的AutoCAD應(yīng)用程序。ObjectARX并沒(méi)有包含在AutoCAD中,可在AutoDESK公司網(wǎng)站中去下載。它能夠?qū)utoCAD的所有事務(wù)進(jìn)行完整的、先進(jìn)的、面向?qū)ο蟮脑O(shè)計(jì)與開發(fā),并且開發(fā)的應(yīng)用程序速度更快、集成度更高、穩(wěn)定性更強(qiáng)。ObjectARX從本質(zhì)上講,是一種特定的C++編程環(huán)境,它包括一組動(dòng)態(tài)鏈接庫(kù)(DLL),這些庫(kù)與AutoCAD在同一地址空間運(yùn)行并能直接利用AutoCAD核心數(shù)據(jù)結(jié)構(gòu)和代碼,庫(kù)中包含一組通用工具,使得二次開發(fā)者可以充分利用AutoCAD的開放結(jié)構(gòu),直接訪問(wèn)AutoCAD數(shù)據(jù)庫(kù)結(jié)構(gòu)、圖形系統(tǒng)以及CAD幾何造型核心,以便能在運(yùn)行期間實(shí)時(shí)擴(kuò)展AutoCAD的功能,創(chuàng)建能全面享受AutoCAD固有命令的新命令。使用ObjectARX進(jìn)行應(yīng)用開發(fā)還可以在同一水平上與Windows系統(tǒng)集成,并與其它Windows應(yīng)用程序?qū)崿F(xiàn)交互操作。1.2.4VisualLISP

VisualLISP已經(jīng)被完整地集成到AutoCAD2000中,她為開發(fā)者提供了嶄新的、增強(qiáng)的集成開發(fā)環(huán)境,一改過(guò)去在AutoCAD中內(nèi)嵌AtuoLISP運(yùn)行引擎的機(jī)制,這樣開發(fā)者可以直接使用AutoCAD中的對(duì)象和反應(yīng)器,進(jìn)行更底層的開發(fā)。其特點(diǎn)為自身是AutoCAD2000中默認(rèn)的代碼編輯工具;用它開發(fā)AutoLISP程序的時(shí)間被大大地縮短,原始代碼能被保密,以防盜版和被更改;能幫助用戶使用ActiveX對(duì)象及其事件;使用了流行的有色代碼編輯器和完善的調(diào)試工具,讓用戶很容易創(chuàng)建和分析LISP程序的運(yùn)行情況。在VisualLISP中新增了一些函數(shù):如基于AutoLISP的ActiveX/COM自動(dòng)化操作接口;用于執(zhí)行基于AutoCAD內(nèi)部事件的LISP程序的對(duì)象反應(yīng)器;新增了能夠?qū)Σ僮飨到y(tǒng)文件進(jìn)行操作的函數(shù)。VisualLISP為AutoLISP應(yīng)用程序提供三種文件格式選項(xiàng):LSP文件(.lsp)-一種包含AutoLISP程序代碼的ASCII文本文件。FAS文件(.fas)-一個(gè)LSP程序文件的二進(jìn)制編譯版本。VLX文件(.vlx)-一個(gè)或多個(gè)LSP文件和/或?qū)υ捒蚩刂普Z(yǔ)言(DCL)文件的編譯集合。1.2.5VBA

VBA即Mcrosoftoffice中的VisualBasicforApplications,它被集成到AutoCAD2000中。VBA為開發(fā)者提供了一種新的選擇,也為用戶訪問(wèn)AutoCAD2000中豐富的技術(shù)框架打開一條新的通道。VBA和AutoCAD2000中強(qiáng)大的ActiveX自動(dòng)化對(duì)象模型的結(jié)合,代表了一種新型的定制AutoCAD的模式構(gòu)架。通過(guò)VBA,我們可以操作AutoCAD,控制ActiveX和其它一些應(yīng)用程序,使之相互之間發(fā)生互易活動(dòng)。1.2.6

Java是最早由Sun公司創(chuàng)建的一種頗具魅力的程序設(shè)計(jì)語(yǔ)言,她是針對(duì)嵌入系統(tǒng)而設(shè)計(jì)的。像許多開發(fā)語(yǔ)言一樣,Java是一組實(shí)時(shí)庫(kù)的集合,可為軟件開發(fā)者提供多種工具來(lái)創(chuàng)建軟件,管理用戶接口,進(jìn)行網(wǎng)絡(luò)通訊、發(fā)布應(yīng)用程序等。對(duì)AutoCAD用戶和開發(fā)者而言,Java代表著新一代的編程語(yǔ)言,它主要用于開發(fā)出全新的優(yōu)秀產(chǎn)品。AutoCAD為我們提供了完整的、高性能的、面向?qū)ο蟮腃AD程序開發(fā)環(huán)境,為用戶和開發(fā)者提供了多種新的選擇,使得對(duì)AutoCAD二次開發(fā)和定制變得輕松而容易。1.3AutoLISP語(yǔ)言與DCL簡(jiǎn)介1.3.1AAutoCAD為用戶提供了眾多的高級(jí)編程環(huán)境,主要有嵌套在AutoCAD之中的AutoLISP和VBA,面向?qū)ο筇卣鞯腃++編程環(huán)境ARX,以及其它通過(guò)動(dòng)態(tài)數(shù)據(jù)交換(DDE)完成與AutoCAD之間通信的高級(jí)語(yǔ)言應(yīng)用程序等。LISP(ListProcessing,表處理解釋語(yǔ)言)誕生于20世紀(jì)50年代末期,是人工智能學(xué)科領(lǐng)域廣泛應(yīng)用的程序設(shè)計(jì)語(yǔ)言。AutoLISP語(yǔ)言是Autodesk公司為用戶提供的在AutoCAD平臺(tái)上進(jìn)行二次開發(fā)的早期語(yǔ)言。AutoLISP程序源于人工智能語(yǔ)言LISP,是一種對(duì)AutoCAD進(jìn)行定制、二次開發(fā)的非結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言,它嵌套于AutoCAD內(nèi)部,是LISP語(yǔ)言與AutoCAD有機(jī)結(jié)合的產(chǎn)物。AutoLISP不僅具備一般高級(jí)基本結(jié)構(gòu)與功能,而且還具有強(qiáng)大的圖形處理功能。由于AutoLISP語(yǔ)法簡(jiǎn)單易于掌握,函數(shù)功能強(qiáng)大,因此,是AutoCAD用戶使用較為廣泛的編程語(yǔ)言之一。就目前而言,與VBA和ARX相比,采用AutoLISP對(duì)AutoCAD進(jìn)行工程專業(yè)領(lǐng)域的應(yīng)用程序或CAD系統(tǒng)的開發(fā)有許多明顯的優(yōu)勢(shì),比如在功能上與ARX已相差無(wú)幾,而學(xué)習(xí)utoLISP所需計(jì)算機(jī)專業(yè)知識(shí)遠(yuǎn)遠(yuǎn)低于C++。VBA雖然在對(duì)話框設(shè)計(jì)能力上比AutoLISP強(qiáng)許多,但由于它使用ActiveX與AutoCAD交互,運(yùn)行效率不如AutoLISP,且代碼保密性差。另外,從AutoCAD版本不斷升級(jí)中可看出,Autodesk公司仍在繼續(xù)擴(kuò)充AutoLISP的功能。1996年底推出VisualLISP,對(duì)AutoLISP是一次重大改進(jìn),增強(qiáng)了AutoCAD的二次開發(fā)能力。VisualLISP(簡(jiǎn)稱VLISP)是一個(gè)用AutoLISP語(yǔ)言進(jìn)行程序開發(fā)的軟件工具,它提供的集成開發(fā)環(huán)境(IntegratedDevelopmentEnvironment,IDE)提供有眾多工具,功能十分強(qiáng)大,可使用戶方便地用AutoLISP語(yǔ)言進(jìn)行程序開發(fā)中的編寫程序代碼、調(diào)試程序等操作。1.3.2DCL對(duì)話框簡(jiǎn)介DCL對(duì)話框具有操作直觀、方便、易于輸入和修改數(shù)據(jù)等特點(diǎn),是現(xiàn)代軟件設(shè)計(jì)中必不可少的風(fēng)格。對(duì)話框是一個(gè)彈出式窗口,它與用戶進(jìn)行信息通信,一般被用于特定的與輸入有關(guān)的任務(wù)。AutoCAD從12版本起提供了對(duì)話框語(yǔ)言,用戶基于AutoCAD開發(fā)自己的應(yīng)用程序時(shí),可以利用AutoCAD所提供的可編程對(duì)話框PDB(ProgrammableDialogBox)功能創(chuàng)建新的對(duì)話框,也可以修改一個(gè)已經(jīng)存在的對(duì)話框。AutoCAD對(duì)話框新穎直觀,在一定程度上簡(jiǎn)化了用戶交互操作,極大地提高了軟件的使用效率。對(duì)話框是用對(duì)話框控制語(yǔ)言DCL(DialogControlLanguage)編寫的ASCII文件定義的。DCL語(yǔ)言將定義對(duì)話框以什么方式出現(xiàn)以及它包含的內(nèi)容,例如按鈕,列表,文本等。對(duì)話框的設(shè)計(jì)以約束條件為基礎(chǔ),框的尺寸及其部件的布局均應(yīng)遵循統(tǒng)一規(guī)則,用戶不需要指出每一部分的尺寸大小及定位關(guān)系,系統(tǒng)自動(dòng)進(jìn)行布置。AutoCAD為用戶提供的可編程對(duì)話框技術(shù)是由專用的對(duì)話框描述語(yǔ)言(DCL)和AutoLISP驅(qū)動(dòng)函數(shù)兩部分內(nèi)容組成的。對(duì)話框的部件只定義了其行為方式,如按鈕只意味著按壓,列表只顯示相關(guān)的內(nèi)容以便用戶做出選擇等,一個(gè)對(duì)話框的使用方式實(shí)際上完全由它的應(yīng)用程序(利用AutoLISP/VLISP或ADS所編寫的程序)所決定。1.3.2.1設(shè)計(jì)對(duì)話框的最終目的,就是要產(chǎn)生一個(gè)描述對(duì)話框外觀的DCL程序文件。目前有兩種方法,即手工編碼方法和利用現(xiàn)成的設(shè)計(jì)工具PROTOBOX。為一個(gè)應(yīng)用程序設(shè)計(jì)對(duì)話框,一般需要經(jīng)歷圖1-1所示。1分析問(wèn)題,弄清應(yīng)用程序所要解決的問(wèn)題,確定輸入?yún)?shù)和輸出形式。對(duì)于復(fù)雜的應(yīng)用程序還需要進(jìn)行模塊化,確定模塊之間的調(diào)用關(guān)系和數(shù)據(jù)聯(lián)系。2根據(jù)應(yīng)用程序所需的數(shù)據(jù)類型選擇合適的構(gòu)件,對(duì)構(gòu)件進(jìn)行分類,確定對(duì)話框構(gòu)件的布局。3確定對(duì)話框及其構(gòu)件和組件的屬性。例如,確定構(gòu)件的名字,標(biāo)識(shí)文字,尺寸,對(duì)齊方式等。4手工繪制對(duì)話框的草圖。5根據(jù)繪制的草圖,利用DCL語(yǔ)言對(duì)對(duì)話框進(jìn)行編碼,生成描述對(duì)話框外觀的DCL程序文件。6對(duì)DCL進(jìn)行錯(cuò)誤檢查。開始開始分析問(wèn)題分析問(wèn)題選擇構(gòu)件選擇構(gòu)件確定布局確定屬性確定屬性繪制草圖繪制草圖編碼編碼裝載DCL文件顯示對(duì)話框修改DCL文件裝載DCL文件顯示對(duì)話框修改DCL文件正確?N正確?Y結(jié)束結(jié)束圖1-1對(duì)話框手工設(shè)計(jì)過(guò)程1.3.2.2對(duì)話框驅(qū)動(dòng)程序具有相對(duì)固定的結(jié)構(gòu)框架和嚴(yán)格的函數(shù)調(diào)用順序。其一般順序如下:1用LOAD_DIALOG函數(shù)把對(duì)話框定義文件裝入內(nèi)存,這樣,對(duì)話框定義文件中定義的所有對(duì)話框才是有定義的,程序中才能利用函數(shù)返回的文件表識(shí)號(hào)彈出其中的對(duì)話框,并在所有操作結(jié)束后卸載DCL文件,從內(nèi)存中清除該文件中的對(duì)話框。2利用NEW_DIALOG函數(shù)顯示出已裝入的DCL文件中定義的特定對(duì)話框,使之成為當(dāng)前對(duì)話框。檢查NEW_DIALOG函數(shù)的返回值是非常重要的,如果返回值為nil,則應(yīng)中斷程序執(zhí)行。如果仍強(qiáng)行執(zhí)行START_DIALOG函數(shù),則會(huì)產(chǎn)生意想不到的后果。3對(duì)話框構(gòu)件的初始化在成功的彈出了對(duì)話框后,即進(jìn)入了對(duì)話框激活期。此后。AutoLISP與圖形屏幕操作有關(guān)的函數(shù)無(wú)法使用,而AutoLISP新提供的對(duì)話框處理也才能使用。對(duì)話框構(gòu)件初始化大致包括兩個(gè)方面的內(nèi)容:①構(gòu)件處值的設(shè)置對(duì)話框構(gòu)件的初值可以在DCL文件中通過(guò)value屬性設(shè)置,也可以利用專門的函數(shù)在驅(qū)動(dòng)程序中設(shè)置。一般采用后者,因?yàn)橐钩踔翟O(shè)置合理,取決于AutoCAD的當(dāng)前狀態(tài)。例如,應(yīng)把顏色設(shè)置為系統(tǒng)當(dāng)前色,則需要用GETVAR得到系統(tǒng)變量“CECOLOR”的當(dāng)前值;層控制對(duì)話框中當(dāng)前層名和列表框中的層名,需要用程序搜索層表在能得到。這些在建立DCL文件時(shí)都無(wú)法知道的。②動(dòng)作構(gòu)件動(dòng)作表達(dá)式的設(shè)定動(dòng)作構(gòu)件是用來(lái)俘獲事件的,或者說(shuō)它們是靠事件驅(qū)動(dòng)的。但是,某一事件(例如锨擊了按鈕或選擇了列表框的選項(xiàng))發(fā)生后,需要做些什么事情卻是程序設(shè)計(jì)者的責(zé)任。動(dòng)作構(gòu)件的動(dòng)作設(shè)定是用ACTION_TILE函數(shù)實(shí)現(xiàn)的。不設(shè)定動(dòng)作的構(gòu)件是不會(huì)有預(yù)期動(dòng)作的。4對(duì)話框的激活當(dāng)初始化工作完成以后,還需要START_DIALOG函數(shù)激活對(duì)話框,把控制權(quán)交給對(duì)話框,監(jiān)視和俘獲用戶的輸入和選擇,并且構(gòu)件的動(dòng)作表達(dá)式來(lái)處理用戶的操作,用變量或表保存必要數(shù)據(jù)。當(dāng)用戶按下對(duì)話框的退出按鈕后,將由系統(tǒng)內(nèi)置的或用戶設(shè)置的DONE_DIALOG函數(shù)隱去對(duì)話框,終止START_DIALOG函數(shù)的執(zhí)行。5后處理與DCL文件的卸載只有START_DIALOG函數(shù)執(zhí)行結(jié)束后,主對(duì)話框才把控制權(quán)交回AutoCAD。此時(shí)可根據(jù)START_DIALOG函數(shù)返回值來(lái)判知用戶退出對(duì)話框的原因,然后分情況進(jìn)行處理。最后,調(diào)用UNLOAD_DIALOG函數(shù)卸載DCL文件。驅(qū)動(dòng)程序的基本流程如圖1-2。開始開始裝載DCL文件 裝載DCL文件 裝載成功?顯示對(duì)話框Y裝載成功?顯示對(duì)話框顯示成功?NY顯示成功?Y控件初始化控件初始化顯示錯(cuò)誤消息顯示錯(cuò)誤消息N顯示錯(cuò)誤消息顯示錯(cuò)誤消息激活對(duì)話框激活對(duì)話框卸載DCL文件卸載DCL文件結(jié)束結(jié)束圖1-2驅(qū)動(dòng)程序的基本流程只有START_DIALOG函數(shù)執(zhí)行結(jié)束后,主對(duì)話框才把控制權(quán)交回AutoCAD。此時(shí)可根據(jù)START_DIALOG函數(shù)返回值來(lái)判知用戶退出對(duì)話框的原因,然后分情況進(jìn)行處理。最后,調(diào)用UNLOAD_DIALOG函數(shù)卸載DCL文件。驅(qū)動(dòng)程序的基本流程如圖1-2。1.4參數(shù)化繪圖系統(tǒng)簡(jiǎn)介1.4.1概述AutoCAD參數(shù)化程序從用戶取得參數(shù)或外部文件,然后在AutoCAD圖形中生成圖像。這些參數(shù)可以是基于AutoCAD,AutoLisp或ADS的。一個(gè)參數(shù)程序可以畫一個(gè)公共零件的許多不同尺寸,不同形狀的圖。通過(guò)參數(shù)化,可以畫出一系列復(fù)雜的物體,他們共享公共的參數(shù)關(guān)系。如果只改變比例,塊是最好的解決方法。但如果這種變動(dòng)需要大規(guī)模的相似塊的庫(kù)時(shí),采用參數(shù)化可以提高柔性,減少錯(cuò)誤,并產(chǎn)生巨大的效益。1.4.2理解參數(shù)化設(shè)計(jì) 參數(shù)化繪圖在現(xiàn)代機(jī)械CAD中的應(yīng)用很廣,特別是對(duì)于定型的機(jī)械產(chǎn)品設(shè)計(jì),需要形成系列,以便針對(duì)用戶的生產(chǎn)特點(diǎn)提供不同大小、功率、規(guī)格的產(chǎn)品。這就要求該產(chǎn)品的CAD系統(tǒng)具有參數(shù)化的設(shè)計(jì)功能,使得產(chǎn)品的設(shè)計(jì)圖可以方便地隨著某些結(jié)構(gòu)尺寸的修改而修改并自動(dòng)地重新繪出所要求的圖樣,實(shí)現(xiàn)尺寸驅(qū)動(dòng)圖形的自動(dòng)變化。 在當(dāng)今流行CAD軟件中,每一個(gè)簡(jiǎn)單的命令調(diào)用就是一個(gè)參數(shù)化繪圖的應(yīng)用。這就像C語(yǔ)言或其他高級(jí)語(yǔ)言中的函數(shù)的調(diào)用一樣,輸入?yún)?shù)后執(zhí)行特定的操作。對(duì)一個(gè)復(fù)雜的機(jī)械圖進(jìn)行參數(shù)化設(shè)計(jì),其實(shí)就是一些簡(jiǎn)單的命令按照一定的拓?fù)潢P(guān)系的中和。參數(shù)化設(shè)計(jì)對(duì)象的結(jié)構(gòu)形狀一般比較定型,其尺寸關(guān)系可以用一組參數(shù)來(lái)確定。這樣參數(shù)化系統(tǒng)的繪圖功能就很明確的得以實(shí)現(xiàn)。 1.4.3 一個(gè)較復(fù)雜的參數(shù)化部件系統(tǒng)的各個(gè)部分是隨系統(tǒng)的設(shè)計(jì)而變化,但他們大致上都包括下列元素:非CAD的外部文件,包括不見數(shù)據(jù)和設(shè)計(jì)特征。一個(gè)進(jìn)行提示和通信的用戶界面函數(shù)。一個(gè)讀數(shù)據(jù)文件的AutoLisp子程序。計(jì)算和繪圖函數(shù)。程序和函數(shù)的菜單界面。零件表列的屏幕幫助。材料幫助 。設(shè)計(jì)一個(gè)整體系統(tǒng)實(shí)際上就是設(shè)計(jì)其各個(gè)功能的模塊,即通常說(shuō)的:模塊化設(shè)計(jì)。這樣,以后的公共模塊就可以通用,這就大大的提高了設(shè)計(jì)效率!1.4.4參數(shù)化設(shè)計(jì)的一般步驟一般的參數(shù)化設(shè)計(jì),可以遵循以下的步驟:進(jìn)行數(shù)據(jù)分析,得出設(shè)計(jì)計(jì)算以及繪圖所需數(shù)據(jù)查找相關(guān)設(shè)計(jì)手冊(cè),得出零件圖(或其他)的參數(shù)表繪制零件圖所需的參數(shù)列出由零件參數(shù)表數(shù)據(jù)到繪圖需要使用的參數(shù)數(shù)據(jù)轉(zhuǎn)換公式根據(jù)上面的數(shù)據(jù)項(xiàng)設(shè)計(jì)人機(jī)交互界面(對(duì)話框)進(jìn)行編程工作設(shè)計(jì)對(duì)話框驅(qū)動(dòng)函數(shù)設(shè)計(jì)相關(guān)的幫助文件標(biāo)注程序調(diào)試程序檢驗(yàn)

第二章專用繪圖工具開發(fā)2.1鈑金展開放樣概述在國(guó)民經(jīng)濟(jì)各個(gè)部門的建設(shè)和檢修中,都少不了用金屬板制做各種構(gòu)件。正確地展開放樣是制作這些構(gòu)件的第一道工序,它的正確與否對(duì)構(gòu)件精確程度和質(zhì)量起著重要作用。所謂展開放樣是在不改變這些構(gòu)件表面積的情況下,將它們依次攤開在一個(gè)平面上,也稱作構(gòu)件的表面展開。展開可分為可展曲面的表面展開和不可展曲面的近似展開兩種??烧骨媸侵钢奔y面中的柱面、錐面和切面曲線等,這些曲面上的相鄰接的兩條素線或平行、或相交。因此兩素線越鄰近,則兩線所夾的小曲面越趨近于小平面。這些小平面能依次連接地畫在同一平面上。曲紋面和不可展的直紋面從理論上說(shuō)都是不可展的,但是可以將它們分割成很多小塊,采用近似的展開法。構(gòu)件表面展開的方法一般有以下幾種。作圖法首先對(duì)需要展開構(gòu)件的形狀特點(diǎn)進(jìn)行分析,把它分成若干個(gè)基本件;再把每一個(gè)基本的表面分割出一組供構(gòu)件展開的表面實(shí)形;然后根據(jù)基本件的視圖,用投影變換的方法求出這組表面實(shí)形的所有鄰邊線段的實(shí)長(zhǎng),可以畫出每一個(gè)表面實(shí)形,并把這組表面實(shí)形依次地畫在一個(gè)平面上。計(jì)算法此法同樣要對(duì)需要展開構(gòu)件的形狀特點(diǎn)進(jìn)行分析,歸納出一套求表面實(shí)形所有鄰邊線段實(shí)長(zhǎng)的公式,由具體構(gòu)件的已知條件求出這些鄰邊線段的實(shí)踐長(zhǎng),并且這些實(shí)長(zhǎng)來(lái)畫展開圖。這種方法隨著下料工藝的改進(jìn)個(gè)袖珍計(jì)算機(jī)的普及,日益被人們重視和應(yīng)用。但是有些構(gòu)件的計(jì)算公式很復(fù)雜,而且一個(gè)構(gòu)件要重復(fù)計(jì)算很多次,仍是很麻煩的工作,計(jì)算精度也較低,錯(cuò)誤率也很高。系數(shù)法此法是在計(jì)算法的基礎(chǔ)上產(chǎn)生的。它是把計(jì)算公式中某些常數(shù)項(xiàng)合并在一起,總結(jié)出一組系數(shù)。求實(shí)出時(shí),只要將這些系數(shù)乘以已知條件即可。由于它的計(jì)算較為簡(jiǎn)單,很合工人師傅的心意。目前有些書籍已經(jīng)介紹這方面的系數(shù)表。但是可能限于計(jì)算工具,系數(shù)的精確位數(shù)不高。本書作者編著的,由機(jī)械工業(yè)出版社出版的《快速鈑金展開放樣》一書,向讀者介紹一部分由計(jì)算機(jī)程序產(chǎn)生的精確度為五位小數(shù)的系數(shù)表,可供讀者使用。程序法某一類構(gòu)件需要展開時(shí),它們分解的基本件可以是一定的,而歸納出計(jì)算表面實(shí)形的各鄰邊線段實(shí)長(zhǎng)的公式也被固定了。這類重復(fù)計(jì)第二章專業(yè)繪圖工具開發(fā)算的任務(wù),可用計(jì)算機(jī)語(yǔ)言事先編寫好一個(gè)程序,然后運(yùn)行這個(gè)程序,計(jì)算出各線段的實(shí)長(zhǎng),供畫展開圖時(shí)使用。用這種方法既快速正確,又有較高的精度,是在DOS系統(tǒng)下的一個(gè)好方法。計(jì)算機(jī)輔助繪圖法(ComputerAidedDrafting)這是以計(jì)算幾何為理論基礎(chǔ),以計(jì)算機(jī)CAD軟件為平臺(tái),進(jìn)行幾何圖形的表達(dá)、分析、編輯和保存的一種技術(shù)方法。利用CAD軟件提供的各種畫圖命令功能來(lái)得到展開線的真實(shí)長(zhǎng)度。計(jì)算機(jī)輔助設(shè)計(jì)法(ComputerAidedDesign)這是計(jì)算機(jī)輔助幾何圖解法和程序法相結(jié)合的產(chǎn)物。某一類構(gòu)件需要展開前,預(yù)先歸納出計(jì)算表面實(shí)形的各鄰邊線段實(shí)長(zhǎng)的公式和它們之間的關(guān)系,用計(jì)算機(jī)語(yǔ)言事先編寫好一個(gè)程序,然后運(yùn)行這個(gè)程序,計(jì)算出各線段的實(shí)長(zhǎng),并且在程序中調(diào)用有關(guān)畫圖命令,自動(dòng)將展開圖1:1地畫在屏幕上。用這種方法既快速正確,又具有較高的精度,是一個(gè)值得提倡的方法。而本程序設(shè)計(jì)所用的就是方法(7)計(jì)算機(jī)輔助設(shè)計(jì)法(ComputerAidedDesign),本程序?qū)⒗眠@個(gè)方法編寫一個(gè)鈑金展開的程序來(lái)完成設(shè)計(jì)要求。傳統(tǒng)的作圖法和計(jì)算法已經(jīng)漸漸不再適應(yīng)當(dāng)今科學(xué)進(jìn)步的時(shí)代,計(jì)算機(jī)輔助設(shè)計(jì)法的研制是改變目前國(guó)內(nèi)鈑金技術(shù)落后的措施之一。但是這需要有一個(gè)認(rèn)識(shí)的過(guò)程,人們必須克服惰性和習(xí)慣去探索這一方法,因?yàn)樗拇_十分快速正確,同時(shí)又有較高的精度,是一個(gè)值得提倡的方法。例如我的程序運(yùn)行了,就可以根據(jù)對(duì)話框里的相應(yīng)數(shù)字相填寫數(shù)據(jù),達(dá)到計(jì)算展開要求。2.2鈑金展開放樣的質(zhì)量控制無(wú)論采用上述那種方法,鈑金展開放樣這道工序的質(zhì)量控制尤為重要,它的幾何尺寸和形狀準(zhǔn)確對(duì)控制鈑金構(gòu)件的精確度和質(zhì)量起著保證作用。采用上述幾種方法時(shí),影響鈑金零件幾何尺寸和形狀準(zhǔn)確度的因素,除方法本身的誤差外,主要有以下幾個(gè)方面需要考慮。注意單位的統(tǒng)一,如長(zhǎng)度單位、角度單位等等。材料本身厚度的影響及材料在成形中厚度的增厚或減薄。上述幾種方法一般結(jié)果均為展開凈值,沒(méi)有考慮咬口、翻邊、焊接收縮等余量??梢圆扇∫韵麓胧﹣?lái)克服上述因素在鈑金構(gòu)件制造過(guò)程中對(duì)尺寸和形狀精確的影響。利用調(diào)整毛料尺寸和形狀來(lái)彌補(bǔ)咬口、翻邊、焊接收縮等余量。在規(guī)定允許的情況下,通過(guò)加熱成形改善材料的成形性能。在成形過(guò)程中,通過(guò)采用剛性限制以減小構(gòu)件型面的畸變。制定正確的焊接工藝,減少和防止焊接變形。采用合理的模具間歇及良好的潤(rùn)滑狀況。以控制零件的正確外形及厚度變化。增加過(guò)渡成形工序,合理分配工序中的材料變形量。采用綜合成形的方法提高零件成形準(zhǔn)確度,避免材料過(guò)度減薄。采取有效措施減小熱處理中的構(gòu)件變形。采取正確度和精度較高的構(gòu)件表面展開的方法。2.3鈑金展開放樣的設(shè)計(jì)概述2.3.1本程序主要是實(shí)現(xiàn)一些鈑金的展開,其中主要是涉及到展開后的尺寸問(wèn)題,而且展開后大多都是有規(guī)則的曲線,所以程序在實(shí)現(xiàn)展開的時(shí)候主要應(yīng)用的是程序循環(huán)來(lái)實(shí)現(xiàn)展開功能。2.3.21)設(shè)計(jì)需要鈑金展開放樣的基本繪圖程序和Dcl對(duì)話框設(shè)計(jì)。2)Autocad與鈑金展開放樣程序的連接。3)根據(jù)用戶所輸入的尺寸來(lái)繪制圖形并標(biāo)注尺寸。2.3.3總體設(shè)計(jì)步驟主要包括圖框、主視圖的繪制、展開圖的繪制、標(biāo)注尺寸和標(biāo)題欄的繪制及填寫。其基本結(jié)構(gòu)如下圖2-1的總體程序設(shè)計(jì)框圖所示:2.4設(shè)置繪圖環(huán)境計(jì)算機(jī)輔助設(shè)計(jì)(CAD)技術(shù)具有快速設(shè)計(jì)和自動(dòng)繪圖的功能,是幫助企業(yè)適應(yīng)飛速變化的技術(shù)要求和市場(chǎng)要求的產(chǎn)物。其中,AutoCAD是一種通用圖形處理軟件,功能強(qiáng)大,具有良好的開放性,是機(jī)械行業(yè)“甩圖板”的好幫手,在企業(yè)中使用越來(lái)越來(lái)普遍。但要繪制出符合我國(guó)機(jī)械制圖標(biāo)準(zhǔn)的工程圖,需要設(shè)置好繪圖環(huán)境才能達(dá)到事半功倍的目的,而且每畫一張新圖都要重新創(chuàng)建。在企業(yè)之間甚至企業(yè)內(nèi)部,由于不同用戶設(shè)置的繪圖環(huán)境不同給用戶的技術(shù)文件交流造成混亂與障礙的現(xiàn)象時(shí)有發(fā)生。為此可利用AutoCAD提供的模板功能將設(shè)置好的繪圖環(huán)境保存為模板文件,另一個(gè)較好的方法是對(duì)此進(jìn)行二次開發(fā)。從而可大大提高繪圖效率及軟件開發(fā)效率,同時(shí)還可為技術(shù)文件的交流帶來(lái)方便。繪制主視俯視圖繪制主視俯視圖繪制圖框開始繪制標(biāo)題攔填寫技術(shù)要求繪制展開圖圖2-1繪圖程序的流程2.4在設(shè)計(jì)中應(yīng)根據(jù)我國(guó)最新的機(jī)械制圖國(guó)標(biāo)的規(guī)定,在開發(fā)過(guò)程中主要采用的國(guó)標(biāo)有:GB10609.1-89《技術(shù)制圖標(biāo)題欄》;GB/T14689-93《技術(shù)制圖圖紙幅面和格式》;GB/T14691-93《技術(shù)制圖字體》;GB/T17450-1998《機(jī)械制圖圖線》;GB/T16675.2-1996《機(jī)械制圖尺寸注法》;GB/T14665-93《計(jì)算機(jī)制圖用計(jì)算機(jī)信息交換制圖規(guī)則》。2.在AutoCAD軟件中,圖形對(duì)象的組織和管理是用圖層來(lái)實(shí)現(xiàn)的。每個(gè)圖形對(duì)象都有其特性,包括對(duì)象的圖層、顏色、線型、線寬等。由于該項(xiàng)設(shè)置與輸出圖效果有較大的聯(lián)系,因此在繪圖環(huán)境中的設(shè)置恰當(dāng)與否至關(guān)重要。根據(jù)繪圖經(jīng)驗(yàn),在此設(shè)置好后直接按繪制樣式輸出,效果較理想,而且也可預(yù)見的。選擇計(jì)算機(jī)繪圖線寬的第4組,即粗實(shí)線0.7mm,其余為0.25mm。圖層的名字最好取為漢字,且與圖層的用途一致以便分層作圖時(shí)圖層的轉(zhuǎn)換。根據(jù)使用效果粗實(shí)線線寬改為0.4,其余改為0。最后設(shè)置的圖層效果見下圖圖2—2圖層設(shè)置顯示程序如下:(defunxianxing_banjin()(setqchklay(tblsearch"layer""粗實(shí)線"))(if(=chklaynil)(command"layer""n""粗實(shí)線""c"7"粗實(shí)線""lw""0.35""粗實(shí)線"""));if(setqchklay(tblsearch"layer""細(xì)實(shí)線"))(if(=chklaynil)(command"layer""n""細(xì)實(shí)線""c"9"細(xì)實(shí)線""lw""0.25""細(xì)實(shí)線"""));if(setqchklay(tblsearch"layer""文字"))(if(=chklaynil)(command"layer""n""文字""c"3"文字""lw""0.25""文字"""));if(setqchklay(tblsearch"layer""標(biāo)注"))(if(=chklaynil)(command"layer""n""標(biāo)注""c"4"標(biāo)注""lw""0.25""標(biāo)注"""));if(setqchklay(tblsearch"layer""中心線"))(if(=chklaynil)(command"layer""n""中心線""c"1"中心線""lt""center""中心線""lw""0.25""中心線"""));if(setqchklay(tblsearch"layer""虛線"))(if(=chklaynil)(command"layer""n""虛線""c"6"虛線""lt""dashed""虛線""lw""0.25""虛線"""));if(setqchklay(tblsearch"style""china"))(if(=stylenil)(command"style""文字""txt,chineset"""""""""""""));if(setqchklay(tblsearch"style""標(biāo)注"))(if(=chklaynil)(command"-style""標(biāo)注""romans.shx"2.50.715""""""));if(command"-style""hz3.5""仿宋_GB2312"3.50.70"""")(command"-style""hz5""仿宋_GB2312"50.70""""));defunxianxing_banjin2.4設(shè)置漢字字體、羅馬字體及字高。為方便使用,設(shè)置了多種字高的文字樣式。參照國(guó)家標(biāo)準(zhǔn),根據(jù)經(jīng)驗(yàn),字體應(yīng)設(shè)為兩種樣式:TEXT字體樣式選用Romans.shx,寬度比例選0.67,傾斜角度選15°,該字體專用于標(biāo)注英文字母和阿拉伯?dāng)?shù)字。HZ字體樣式選仿宋GB_2312,文字寬度系數(shù)選0.67,該字體專用于漢字內(nèi)容的書寫。2.4尺寸標(biāo)注樣式的設(shè)置是二維工程制圖繪圖環(huán)境設(shè)置的重要內(nèi)容。圖樣的標(biāo)注能否符合國(guó)標(biāo)的關(guān)鍵在于尺寸標(biāo)注樣式的設(shè)置。在軟件開發(fā)過(guò)程中只能通過(guò)尺寸標(biāo)注變量的設(shè)置來(lái)完成,設(shè)置的具體內(nèi)容見下面程序說(shuō)明。在實(shí)際使用中,需要設(shè)置多個(gè)尺寸標(biāo)注樣式。設(shè)計(jì)的樣式見下圖。本程序只需要在運(yùn)行程序的時(shí)候調(diào)用就可以了用了。圖2-3標(biāo)注樣式圖(defunszhthj()(command"-style""text0""romans"00.715"""""")(command"-style""text3.5""romans"3.50.715"""""")(command"-style""text5""romans"50.715"""""")(command"-style""text7""romans"70.715"""""")(command"-style""text10""romans"100.715"""""")(command"-style""text14""romans"140.715"""""")(command"-style""text20""romans"200.715"""""")(command"-style""hz0""仿宋_GB2312"00.70"""")(command"-style""hz3.5""仿宋_GB2312"3.50.70"""")(command"-style""hz5""仿宋_GB2312"50.70"""")(command"-style""hz7""仿宋_GB2312"70.70"""")(command"-style""hz10""仿宋_GB2312"100.70"""")(command"-style""hz14""仿宋_GB2312"140.70"""")(command"-style""jzfh_style""romand"010"""""");;;設(shè)置尺寸標(biāo)注式(command"dimclrd"0"dimdli"5"dimclre"256"dimexe"3"dimgap"0.5"dimasz"2.5"dimclrt"256"dimtxsty""text3.5""dimtxt"3.5"dimtad"1"dimjust"0"dimgap"1"dimtih"0"dimatfit"2"dimlunit"2"dimdec"2"dimdsep"".""dimatftt"2"dimexo"0"dimse1"1"dimse2"1"dimstyle""save""標(biāo)注樣式4");command(command"dimclrd"0"dimdli"5"dimclre"256"dimexe"3"dimgap"0.5"dimasz"2.5"dimclrt"256"dimtxsty""hz3.5""dimtxt"3.5"dimtad"1"dimjust"0"dimgap"1"dimtih"0"dimatfit"2"dimlunit"2"dimdec"2"dimdsep"".""dimatftt"2"dimexo"0"dimtoh"1"dimse1"0"dimse2"0"dimstyle""save""標(biāo)注樣式3")(command"dimclrd"0"dimdli"5"dimclre"256"dimexe"3"dimgap"0.5"dimasz"2.5"dimclrt"256"dimtxsty""text3.5""dimtxt"3.5"dimtad"1"dimjust"0"dimgap"1"dimtih"0"dimatfit"2"dimlunit"2"dimdec"2"dimdsep"".""dimatftt"2"dimexo"0"dimtoh"1"dimse1"0"dimse2"0"dimstyle""save""標(biāo)注樣式2")(command"dimclrd"0"dimdli"5"dimclre"256"dimexe"3"dimgap"0.5"dimasz"2.5"dimclrt"256"dimtxsty""text3.5""dimtxt"3.5"dimtad"1"dimjust"0"dimgap"1"dimtih"0"dimatfit"2"dimlunit"2"dimdec"2"dimdsep"".""dimatftt"2"dimexo"0"dimtoh"0"dimse1"0"dimse2"0"dimstyle""save""標(biāo)注樣式1"));defun根據(jù)國(guó)標(biāo)GB10609.1-89《技術(shù)制圖標(biāo)題欄》的規(guī)定,標(biāo)題欄的內(nèi)容和大小相對(duì)固定,為便于對(duì)其內(nèi)容進(jìn)行修改,按照國(guó)標(biāo)規(guī)定用不同寬度的粗細(xì)實(shí)線繪制出輪廓,然后繪制標(biāo)題欄,然后填寫標(biāo)題欄的內(nèi)容即可。由于標(biāo)題欄的文字內(nèi)容都相對(duì)固定,所以直接有程序輸入,用戶不用操心。繪制出來(lái)的圖見圖3-4示。程序見(“btl.lsp”)。圖2-4標(biāo)題欄填寫圖2.4.5為簡(jiǎn)化操作,設(shè)計(jì)思想是設(shè)計(jì)日期自動(dòng)提取系統(tǒng)當(dāng)前日期,同時(shí)也允許用戶在對(duì)話框中對(duì)系統(tǒng)當(dāng)前日期進(jìn)行改變,以滿足行用戶使用要求。由于允許用戶改變,所以該控件只能設(shè)計(jì)成編輯框控件。程序自動(dòng)提取系統(tǒng)當(dāng)前日期的實(shí)現(xiàn)方法是:利用AutoCAD系統(tǒng)變量CDATE取得計(jì)算機(jī)系統(tǒng)當(dāng)前日期與時(shí)間,然后再組合成新的字符數(shù)據(jù)作為初值傳到標(biāo)簽為“設(shè)計(jì)日期”編輯框控件。自動(dòng)提取系統(tǒng)當(dāng)前日期的程序段如下:(setqsjrq1(rtos(getvar"cdate")20);利用CDATE取得計(jì)算機(jī)系統(tǒng)當(dāng)前日期與時(shí)間,并將實(shí)型數(shù)轉(zhuǎn)化為字符型sjrq(strcat(substrsjrq114)"-"(substrsjrq152)"-"(substrsjrq172)));setq;用strcat函數(shù)構(gòu)成新的“年-月-日”格式字符,既系統(tǒng)當(dāng)前日期程序說(shuō)明:(substrsjrq114)從字符數(shù)據(jù)sjrq1中取前4位為年份;(substrsjrq152)從字符數(shù)據(jù)sjrq1中取第5、6位為月份;(substrsjrq172)從字符數(shù)據(jù)sjrq1中取第7、8位為日期。2.4.6由于同類零部件具有基本相同的技術(shù)要求,因而對(duì)同類零部件的技術(shù)要求條款進(jìn)行收整理是十分必要的。由于設(shè)計(jì)者的知識(shí)和能力有限,所以如果需要修改的話,請(qǐng)用戶在“banjin.lsp”中的修改技術(shù)要求,或者直接用CAD進(jìn)行修改,如給用戶帶來(lái)的不便,還請(qǐng)用戶見諒。其技術(shù)要求原程序如下:(defundo_tx_jsyq(/ptpt1pt2)(setqpt00'(13235)pt1(polar(polarpt00(-0(/pi2))10)pi20))(command"text""s""hz5""j""m"pt000"技術(shù)要求""text""s""hz3.5"pt10"1.本鈑金展開件的左邊是三視圖,右邊是展開圖;""text"(polarpt1(-0(/pi2))5)0"2.展開圖的左右兩邊都留5MM的余量已便于加工。"""))圖2—5技術(shù)要求的填寫2.4.7圖框是幾乎每幅圖都必須繪制的基本模塊之一,具有極強(qiáng)的通用性,如果能用一個(gè)LISP程序來(lái)代替這樣的手工繪制,可以節(jié)省大量時(shí)間和精力,提高勞動(dòng)效率,是省時(shí)省事的好方法。于是構(gòu)思設(shè)計(jì)一個(gè)關(guān)于圖框繪制的LISP程序。繪制技術(shù)圖樣時(shí)優(yōu)先選用代號(hào)為A0,A1,A2,A3,A4,自定義,六種基本幅面(提供選擇),自定義圖框的尺寸由用戶輸入。幅面代號(hào)A0A1A2A3A4自定義尺寸B*L841*1189594*841420*594297*420210*297xxx*xxx1圖框格式圖框格式有兩種:一種是保留裝訂邊的圖框,用于需要裝訂的圖樣。另一種是不留裝訂邊的圖框格式,用于不需要裝訂的圖樣。如圖2-3、2-4所示為兩種圖框的基本樣式,由于繪制圖框時(shí),繪制某一幅面總有對(duì)應(yīng)的一組B和L,所以不需要給出其他的變量,繪制圖框的基準(zhǔn)點(diǎn)定為坐標(biāo)原點(diǎn)(0,0),只需帶入相應(yīng)的B和L,即可繪制出所需要的圖框。本次開發(fā)給定圖框?yàn)锳3保留裝訂邊的圖紙,圖示如2-8,繪圖程序如下:(defundo_tk3()(setqp00'(0.00.0)b297l420a25c5)(command"layer""s""細(xì)實(shí)線""")(command"line"p00(polarp000l)(polar(polarp000l)(/pi2)b)(polarp00(/pi2)b)"c")(command"layer""s""粗實(shí)線""")(command"pline"(setqpp0(polar(polarp000a)(/pi2)c))(polarpp00(-lac))(polar(polarpp00(-lac))(/pi2)(-bcc))(polarpp0(/pi2)(-bcc))"c")(command"zoom""all"))圖2-6帶裝訂邊圖框圖2-7不帶裝訂邊圖框第三章鈑金展開放樣的繪圖第三章鈑金零件展開圖的參數(shù)化繪圖設(shè)計(jì)3.1方錐管鈑金件展開程序設(shè)計(jì)3.1.1參數(shù)的確定由空心的正四棱錐截得的棱臺(tái)稱方錐管,它由四個(gè)相等的梯形組成。梯形的上下兩底與水平面平行,它們?cè)谒矫娴耐队帮@示實(shí)長(zhǎng)。方錐的高與水平面平行,它們?cè)谒矫娴耐队帮@示實(shí)長(zhǎng)。梯形的腰為它在水平面的投影和方錐的高組成的直角三角形的斜邊。所以本例的展開只要求得梯形腰的實(shí)長(zhǎng),就可以畫展開圖了。在繪制圖形時(shí)因?yàn)槭怯玫腁3的圖紙,所以涉及到比例縮放的問(wèn)題,設(shè)計(jì)時(shí)給參數(shù)給定一個(gè)初始值,然后根據(jù)用戶輸入的參數(shù)值與已知的數(shù)的比值,然后取比例最小的一個(gè)反回給比例編輯框。繪圖的時(shí)候根據(jù)這個(gè)比例來(lái)畫。以后的幾個(gè)鈑金的圖的繪制都是根據(jù)這個(gè)方法的到比例的,以后的就不在重復(fù)。圖3-1方錐主視圖俯視圖方錐的上底為a1,下底寬為a2,高為h.展開的腰的實(shí)長(zhǎng)為l,展開只要繪出一個(gè)展開的梯形圖便可通過(guò)鏡像功能完成。計(jì)算的公式如下(3-1)3.1.2點(diǎn)位圖的確定在繪制點(diǎn)位圖的時(shí)候以pt點(diǎn)為繪圖基點(diǎn)其余的點(diǎn)都由pt計(jì)算得到,其主視圖俯視圖點(diǎn)位圖如3-8所示,繪制時(shí)以p9為基點(diǎn)繪制。展開土的繪制是以pt為基點(diǎn)繪制的,先繪制一個(gè)梯形,然后通過(guò)鏡相功能繪制另一個(gè)梯形,再繪制5mm的余邊,然后選擇前面的三個(gè)圖圓以p7和p8分別為鏡相第一點(diǎn)和鏡相第二點(diǎn)繪出展開圖。如3-2所示。圖3-2方錐管點(diǎn)位圖3.1.3對(duì)話框界面的設(shè)計(jì)在對(duì)話框的設(shè)計(jì)中,對(duì)話框的左邊為基本繪圖參數(shù)的輸入,右邊為幻燈片的顯示窗口,由確定取消按紐控制其最終的效果。在基本參數(shù)輸入的時(shí)候,其圖的比例根據(jù)參數(shù)的變化而調(diào)整比例,使圖能夠在A3的圖紙中比較合理的放置。方錐管的對(duì)話框設(shè)計(jì)如下圖3-3所示:程序如下:fz1:dialog{label="方錐管鈑金件";:row{:column{:boxed_row{label="結(jié)構(gòu)參數(shù)";:column{:edit_box{label="頂寬a1(mm):";key="dk_a1";edit_width=8;}:edit_box{label="底寬a2(mm):";key="dik_a2";edit_width=8;}:edit_box{label="方錐管高h(yuǎn)(mm):";key="zg_h";edit_width=8;}:edit_box{label="繪圖比例:";key="bl";edit_width=8;}}//:column}:row{:boxed_column{label="是否需要展開?";ok_cancel;}//boxedcolumn}//row}/*第一列結(jié)束*/:column{:image{key="fz_image";width=30;height=10;color=0;}}/*圖象控件結(jié)束*/}//row}圖3-3方錐管鈑金件對(duì)話框示意圖3.1.4方錐管對(duì)話框驅(qū)動(dòng)程序的設(shè)計(jì) 方錐管對(duì)話框驅(qū)動(dòng)程序的設(shè)計(jì)對(duì)話框加載成功后的效果圖如下3-4:圖3-4方錐管對(duì)話框加載后示意圖3.2斜截圓柱鈑金件展開程序設(shè)計(jì)圓柱面構(gòu)件的展開下料是鈑金工作者在施工中常遇到的。此類構(gòu)件在制造中一般可分為鋼板卷制和成品鋼管兩種。因?yàn)殇摴苡衅ず翊嬖冢栽谑┕ぶ杏兄?、?nèi)、外經(jīng)的分別。就是在展中要一個(gè)直徑去放樣和展開,也可能用一個(gè)直徑去展開而用另一個(gè)去放樣和求素線實(shí)長(zhǎng),這要根據(jù)構(gòu)件的施工圖樣和施工要求來(lái)決定中的。3.2.1參數(shù)的確定被平面斜截圓柱管的展開通用公式:(3-2)式中-—角度值對(duì)應(yīng)素線實(shí)長(zhǎng)值;——截面和圓柱管軸線的垂面間的夾角;L——截面和圓柱管軸線的餓垂面的交線到圓柱管之間的距離;R——圓柱管放樣圖半徑;n——圓柱管半圓周等分?jǐn)?shù);——圓心角等分變量(0–360°)。平面斜截圓柱管的展開示意圖及點(diǎn)位圖如下3-5:3.2.2點(diǎn)位圖的確定斜截圓柱鈑金件的展開程序用循環(huán),因?yàn)樵谡归_時(shí)要分等分,鈑金的尺寸過(guò)大則等分?jǐn)?shù)越多越精確,具體程序祥見附錄xjyzz.lsp。被平面斜截后的平面是平面橢圓。圖3-5斜截圓柱點(diǎn)位圖圖3-6斜截圓柱展開圖部分標(biāo)柱圖3.2.3對(duì)話框界面的設(shè)計(jì)對(duì)話框界面的設(shè)計(jì)如下3-7,具體程序見附錄xjyz1.dcl。圖3-7斜截圓柱鈑金件對(duì)話框示意圖3.2.4斜截圓柱對(duì)話框驅(qū)動(dòng)程序的設(shè)計(jì)對(duì)話框加載成功后的效果圖如下3-8,具體驅(qū)動(dòng)程序及其繪圖程序見附錄xjyzz.lsp圖3-8斜截圓柱加載后對(duì)話框示意圖3.3正圓臺(tái)鈑金件展開程序設(shè)計(jì)3.3.1正圓臺(tái)管鈑金件的計(jì)算公式及其符號(hào)示意圖及展開圖。d2——大端直徑;d1——小端直徑;h2——錐臺(tái)兩端中心線間垂直距離;整圓錐展開半徑(3-3)上部圓錐展開半徑(3-4)展開料夾角(3-5)展開大端弦長(zhǎng)(3-6)展開小端弦長(zhǎng)(3-7)3.3.2點(diǎn)位圖的確定圓臺(tái)主視圖俯視圖的繪制以p5為基點(diǎn)。其具體點(diǎn)位圖如圖3-9,其展開圖的繪制以pt為基點(diǎn)進(jìn)行繪制,其點(diǎn)位圖如圖3-10所示。圖3-9圓臺(tái)主視圖俯視圖點(diǎn)位圖圖3-10圓臺(tái)鈑金件展開圖點(diǎn)位圖3.3.3對(duì)話框界面的設(shè)計(jì)對(duì)話框界面的設(shè)計(jì)如下3-11具體程序見附錄yt1.dcl。圖3-11圓臺(tái)鈑金件對(duì)話框示意圖3.3.4圓臺(tái)管對(duì)話框驅(qū)動(dòng)程序的設(shè)計(jì)對(duì)話框加載成功后的效果圖如下3-12具體驅(qū)動(dòng)程序及其繪圖程序見附錄ytt.lsp圖3-12圓臺(tái)鈑金件對(duì)話框加載后示意圖3.4Y型等徑三通管鈑金件展開程序設(shè)計(jì)3.4.1這種管道的是任意角度等徑三通管的一種特殊的情況,即是主支管的交角相等,所以這種情況的時(shí)候就只需要簡(jiǎn)單的計(jì)算展開其中的一支管道就可以了,其參數(shù)與任意角度等徑三通管的參數(shù)基本一樣,其中的角度就全是120°了,具體的見圖3-13。所以就直接利用等夾角三通管的公式就可以了進(jìn)行計(jì)算。由投影圖可知只要展開一個(gè)管的1/4圓管就可以得到全部的展開圖。此鈑金件的展開與斜截圓柱鈑金件的展開類似,展開是用循環(huán),可以做到比較精確。展開計(jì)算公式(3-8)將已知的數(shù)據(jù)代入公式進(jìn)行編程計(jì)算,的范圍在0°–90°內(nèi)取值做變量得到和的對(duì)應(yīng)值,展開與斜截圓柱管鈑金件類似,都是通過(guò)循環(huán)得到繪圖曲線的。3-13等徑三通管投影圖圖3-14等經(jīng)三通管鈑金件主視圖俯視圖點(diǎn)位圖3.4.2點(diǎn)位圖等經(jīng)三通管鈑金件展開圖的點(diǎn)位圖如下3-15所示主視圖俯視圖點(diǎn)位圖如3-14所示,以pt點(diǎn)位繪土基點(diǎn)展開,通過(guò)投影圖分析可知,只要求出其1/4圓管的展開就可得到全部的展開圖3-15等經(jīng)三通管展開圖點(diǎn)位圖3.4.3對(duì)話框界面的設(shè)計(jì)如下3-16具體程序見附錄st1.dcl。圖3-16等經(jīng)三通管鈑金件對(duì)話框3.4.4 對(duì)話框加載成功后的效果圖如下3-17具體驅(qū)動(dòng)程序及其繪圖程序見附錄stt.lsp圖3-17等徑三通管鈑金件對(duì)話框加載后示意圖3.5總體設(shè)計(jì)3.5.1標(biāo)題欄對(duì)話框的編寫標(biāo)題欄的DCL效果圖如圖3-18,加載后的對(duì)話框圖如3-19所示。圖3-18標(biāo)題欄DCL效果圖圖3-19標(biāo)題欄對(duì)話框圖如圖3-18所示在完成了鈑金件的所有的展開后,需要一個(gè)可以選擇的對(duì)話框,然后就要用到對(duì)話框的嵌套,所以就要對(duì)每個(gè)的對(duì)話框進(jìn)行設(shè)計(jì),制作一個(gè)下拉列表對(duì)其進(jìn)行選擇,如過(guò)沒(méi)有可供選擇的鈑金件展開圖,則彈出如圖3-19所示的對(duì)話框,具體計(jì)程序如下;圖3-20對(duì)話框顯示信息btl:dialog{label="標(biāo)題欄繪制與填寫國(guó)標(biāo):GB10609.1-89";:paragraph{:row{:boxed_column{label="零件信息";:popup_list{key="ljxh";label="鈑金件名稱";edit_width=15;}:edit_box{label="材料";key="ljcl";edit_width=15;}:edit_box{label="圖樣代號(hào)";key="tydh";edit_width=15;}}:column{:boxed_column{label="設(shè)計(jì)信息";:popup_list{label="設(shè)計(jì)者";key="sjz";}:edit_box{label="設(shè)計(jì)日期";key="sjrq";width=8;}}}}}:row{:text{label="版權(quán):四川理工學(xué)院2007年4月";}}:row{:text{label="";}:ok_button{label="確定";key="accept";alignment=centered;}:cancel_button{label="取消";key="cancel";alignment=centered;}:help_button{label="幫助";key="help";alignment=centered;}:text{label="";}}}圖框繪制圖框繪制開始繪齒輪主視圖繪剖視圖繪制填寫參數(shù)表調(diào)用對(duì)話框,setqdcl_id開始確定幻燈片顯示參數(shù)初始化所有數(shù)據(jù)下拉列表賦值和顯示控制start_dialog幻燈片動(dòng)態(tài)顯示控制基本參數(shù)函數(shù)求解執(zhí)行各繪圖程序結(jié)束是圖3-20標(biāo)題欄對(duì)話框驅(qū)動(dòng)流程3.6總體設(shè)計(jì)當(dāng)對(duì)完成上面這些步驟以后,我們就可以將四個(gè)鈑金件的展開放樣綜合在一起進(jìn)行連接了,首先,我們將寫一調(diào)用程序,即“banjin.lsp”,它的作用是就是調(diào)用鈑金展開的四個(gè)子程序程序,并對(duì)其進(jìn)行加載,完成圖形的繪制。(defunc:banjin()(command"erase""all""""");刪完窗口中的所有圖形(setvar"cmdecho"0)(command"osmode"0)(if(not(tblsearch"style""text0"))(progn(alert"繪圖環(huán)境未設(shè)定,軟件將自動(dòng)設(shè)置!") (load"鈑金/qdcx/szhthj.lsp")(szhthj) (alert"繪圖環(huán)境設(shè)置成功,點(diǎn)確定繼續(xù)!"));proge);if(xianxing_banjin)(do_tk3)(do_tx_jsyq)(load"鈑金/qdcx/btl.lsp")(btl'(4155)"DLVSX1.1""20"0);"20"(if(=asy0)(progn(load"鈑金/qdcx/fzz.lsp")(fzz)))(if(=asy1)(progn(load"鈑金/qdcx/xjyzz.lsp")(xjyzz)))(if(=asy2)(progn(load"鈑金/qdcx/ytt.lsp")(ytt)))(if(=asy3)(progn(load"鈑金/qdcx/stt.lsp")(stt)))(if(=asy4)(alert"暫時(shí)還沒(méi)有您需要的鈑金件展開圖!"))(if(=do_what0)(exit))(command"zoom""all"));defun 3.7最后的效果圖圖3-21方錐管展開效果圖圖3-21斜截圓柱鈑金效果圖圖3-22等經(jīng)三通管鈑金件效果圖3-23圓臺(tái)鈑金件效果圖結(jié)論本程序經(jīng)過(guò)多次運(yùn)行還比較理想。生成的展開圖形符合國(guó)家的標(biāo)準(zhǔn),有較好的實(shí)用性,及應(yīng)用性。它包含有四個(gè)鈑金構(gòu)件的展開放樣圖分別為:圓臺(tái)鈑金件、方錐管鈑金件、斜截圓柱管鈑金件、Y型等徑三通管鈑金件。它可以根據(jù)用戶輸入的鈑金件的參數(shù)有效的快速生成鈑金件的展開的圖形,并且對(duì)展開圖進(jìn)行標(biāo)注,方便落料。對(duì)于有效控制鈑金件的精度及質(zhì)量起著保證作用,減輕鈑金展開放樣中繁雜計(jì)算和作圖的工作量。隨著計(jì)算機(jī)的普及,這種方法被人們?nèi)找婧蛻?yīng)用重視。參考文獻(xiàn)[1]符純?nèi)A,計(jì)算機(jī)輔助設(shè)計(jì),四川理工學(xué)院,2005。[2]符純?nèi)A、石艷,計(jì)算機(jī)輔助設(shè)計(jì)上機(jī)實(shí)驗(yàn)指導(dǎo)書2005。[3]李學(xué)志,VisualLISP程序設(shè)計(jì),清華大學(xué)出版社,2006.5[4]汪琪美、霍新明,對(duì)話框與驅(qū)動(dòng)程序設(shè)計(jì),海洋出版社,1998。[5]吳勇進(jìn)、林美櫻,AutoLISP&DCL基礎(chǔ)篇,中國(guó)鐵道出版社,2003。[6]袁筱麟,CAD鈑金展開防樣,機(jī)械工業(yè)出版社,2005。[7]楊玉杰,鈑金展開200例,機(jī)械工業(yè)出版社,2005。致謝辭附錄附錄A:btl.lisp程序;===================================================;;程序功能:繪制國(guó)標(biāo):GB10609.1-89標(biāo)題欄。;參數(shù)說(shuō)明:ppt繪圖基點(diǎn),標(biāo)題欄右下角點(diǎn)坐標(biāo)。;tydh圖樣代號(hào),字符型。;ljxh鈑金名稱,字符型。;ljcl材料名稱,字符型。;;updatex裝彈出列表(defunupdata1()(start_list"sjz")(mapcar'add_listsjz_list)(end_list))(defunupdata2()(start_list"ljxh")(mapcar'add_listljxh_list)(end_list))(defunbtl(ppttydhljclasx/dcl_idljxh)(setq sjz_list(list"關(guān)風(fēng)琴""符純?nèi)A""唐松""杜開富");姓名彈出列表 ljxh_list(list"方錐管鈑金件""斜截圓柱鈑金件""圓臺(tái)鈑金件""等經(jīng)三通管鈑金件""無(wú)");圖樣名稱 ast0 asy0 sjz"關(guān)風(fēng)琴" );初始參置(setqsjrq1(rtos(getvar"cdate")20)sjrq(strcat(substrsjrq114) "-" (substrsjrq152) "-" (substrsjrq172)) );取系統(tǒng)日期構(gòu)成如2003-07-31的格式(setqdcl_id(load_dialog"鈑金\\dhk\\btl.dcl"))(if(not(new_dialog"btl"dcl_id))(exit))(updata1)(updata2)(mode_tile"ljxh"2)(action_tile"sjz""(do_sjz)")(action_tile"sjrq""(setqsjrq(get_tile\"sjrq\"))")(action_tile"tydh""(setqtydh(get_tile\"tydh\"))")(action_tile"ljxh""(do_ljxh)")(action_tile"ljcl""(setqljcl(get_tile\"ljcl\"))")(set_tile"sjrq"sjrq)(set_tile"sjz"(rtosast))(set_tile"ljxh"(rtosasy))(set_tile"tydh"tydh)(set_tile"ljcl"ljcl)(setqdo_what(start_dialog))(if(=do_what1)(btl11))(start_dialog)(unload_dialogdcl_id))(defundo_sjz(/index);取設(shè)計(jì)者姓名(setqindex(atoi(get_tile"sjz")) sjz(nthindexsjz_list) astindex ))(defundo_ljxh(/index);取零件序號(hào)(setqindex(atoi(get_tile"ljxh")) ljxh(nthindexljxh_list) asyindex ));===================================================;程序功能:繪制標(biāo)題欄與填寫標(biāo)題欄函數(shù)(defunbtl1(bl)(command"layer""m""btl""on""btl""c"9"btl""")(print"ok")(command"pline" ppt "w" 0.5 "" (polarppt(/pi2)56) (polar(polarppt(/pi2)56)pi180) (polarpptpi180) "c" "line" (setqppt1(polarpptpi50)) (polarppt1(/pi2)56) """line" (setqppt1(polarpptpi100)) (polarppt1(/pi2)56) "" "line" (setqppt1(polarpptpi116)) (polarppt1(/pi2)28) "" "line" (setqppt1(polarpptpi128)) (polarppt1(/pi2)28) "" "line" (setqppt1(polarpptpi140))

溫馨提示

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

評(píng)論

0/150

提交評(píng)論