版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 序言1、參數(shù)化繪圖及二次開發(fā)參數(shù)化繪圖就是通過設(shè)計參數(shù)來驅(qū)動生成所需的圖形。一般通過編程實(shí)現(xiàn)。因此要求設(shè)計者具備編程能力,存在工作量大,修改圖形不方便等問題。但它應(yīng)用靈活,適應(yīng)面廣。對某些應(yīng)用參數(shù)化設(shè)計系統(tǒng)解決不了的問題,通??刹捎脜?shù)化繪圖的方法加以解決,例如在開發(fā)某些機(jī)器的CAD系統(tǒng)時,要求設(shè)計、計算、查表、繪圖一體化時,顯然適合采用參數(shù)化繪圖的方法加以解決。通過編程實(shí)現(xiàn)參數(shù)化繪圖,其程序設(shè)計的總體思路是:將設(shè)計計算的關(guān)系式融入程序中,在程序的控制下,執(zhí)行計算及交互輸入主要參數(shù),程序應(yīng)能對參數(shù)輸入進(jìn)行有效性檢驗,根據(jù)用戶的交互輸入完成視圖的繪制。AutoCAD作為一種具有高度開放結(jié)構(gòu)的C
2、AD平臺軟件,它提供了強(qiáng)大的二次開發(fā)環(huán)境。它允許用戶和開發(fā)者采用高級編程語言對其進(jìn)行擴(kuò)充和修改,即二次開發(fā),能最大限度地滿足用戶的特殊要求。帶有參數(shù)化設(shè)計功能的CAD系統(tǒng)固然在設(shè)計繪圖上有某些顯著特點(diǎn),如不需要編程就可實(shí)現(xiàn)圖形的參數(shù)化,修改圖形及其方便,工作量小,且可由草圖生成正式圖。然而,當(dāng)零件結(jié)構(gòu)非常復(fù)雜及形狀極不規(guī)則時,參數(shù)化設(shè)計就顯得力不從心。為了區(qū)別于參數(shù)化設(shè)計,把應(yīng)用高級語言編程使具體圖形實(shí)現(xiàn)參數(shù)化稱為參數(shù)化繪圖(ParamericDrawing),在參數(shù)化繪圖中,圖中的部分尺寸(或全部尺寸)被事項定義為參數(shù)尺寸,當(dāng)交互輸入?yún)?shù)值后,即可畫出圖形。2、二次開發(fā)工具介紹(1)Auto
3、LISPAutoLISP的全名是LISTProcessingLanguage,她出現(xiàn)于1985年推出的AutoCADR2。18中,是一種嵌入在AutoCAD內(nèi)部的編程語言,是LISP原版的一個子集,她一直是低版本AutoCAD的首選編程語言。它是一種表處理語言,是被解釋執(zhí)行的,任何一個語句鍵入后就能馬上執(zhí)行,它對于交互式的程序開發(fā)非常方便。其缺點(diǎn)是繼承了LISP語言的編程規(guī)則而導(dǎo)致繁多的括號。(2)ADSADS的全名是AutoCADDevelopmentSystem,它是AutoCAD的C語言開發(fā)系統(tǒng),ADS本質(zhì)上是一組可以用C語言編寫AutoCAD應(yīng)用程序的頭文件和目標(biāo)庫,它直接利用用戶熟悉
4、的各種流行的C語言編譯器,將應(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è)計CAD、工程分析CAD、建筑結(jié)構(gòu)CAD、土木工程CAD、化學(xué)工程CAD、電氣工程CAD等。(3)ObjectARXObjectARX是一種嶄新的開發(fā)AutoCAD應(yīng)用程序的工具,她以C+為編程語言,采用先進(jìn)的面向?qū)ο蟮木幊淘?,提供可與AutoCAD直接交互的開發(fā)環(huán)境,能使用戶方便快捷地開發(fā)出高效簡潔的AutoCAD應(yīng)用程序。ObjectARX并沒有包
5、含在AutoCAD中,可在AutoDESK公司網(wǎng)站中去下載,其最新版本是ObjectARXforAutoCAD2000,它能夠?qū)utoCAD的所有事務(wù)進(jìn)行完整的、先進(jìn)的、面向?qū)ο蟮脑O(shè)計與開發(fā),并且開發(fā)的應(yīng)用程序速度更快、集成度更高、穩(wěn)定性更強(qiáng)。(4)VisualLISPVisualLISP已經(jīng)被完整地集成到AutoCAD2000中,她為開發(fā)者提供了嶄新的、增強(qiáng)的集成開發(fā)環(huán)境,一改過去在AutoCAD中內(nèi)嵌AtuoLISP運(yùn)行引擎的機(jī)制,這樣開發(fā)者可以直接使用AutoCAD中的對象和反應(yīng)器,進(jìn)行更底層的開發(fā)。其特點(diǎn)為自身是AutoCAD2000中默認(rèn)的代碼編輯工具;用它開發(fā)AutoLISP程序
6、的時間被大大地縮短,原始代碼能被保密,以防盜版和被更改;能幫助大家使用ActiveX對象及其事件;使用了流行的有色代碼編輯器和完善的調(diào)試工具,使大家很容易創(chuàng)建和分析LISP程序的運(yùn)行情況。在VisualLISP中新增了一些函數(shù):如基于AutoLISP的ActiveX/COM自動化操作接口;用于執(zhí)行基于AutoCAD內(nèi)部事件的LISP程序的對象反應(yīng)器;新增了能夠?qū)Σ僮飨到y(tǒng)文件進(jìn)行操作的函數(shù)。(5)VBAVBA即Mcrosoftoffice中的VisualBasicforApplications,它被集成到AutoCAD2000中。VBA為開發(fā)者提供了一種新的選擇,也為用戶訪問AutoCAD200
7、0中豐富的技術(shù)框架打開一條新的通道。VBA和AutoCAD2000中強(qiáng)大的ActiveX自動化對象模型的結(jié)合,代表了一種新型的定制AutoCAD的模式構(gòu)架。通過VBA,我們可以操作AutoCAD,控制ActiveX和其它一些應(yīng)用程序.。在以上開發(fā)工具中,作者采用了VisualLISP語言作為開發(fā)工具,因為VisualLISP語言具有以下優(yōu)勢:(1)VisualLISP語言是AutoCAD的內(nèi)嵌開發(fā)工具。是LISP語言和AutoCAD有機(jī)結(jié)合的產(chǎn)物,同時也是AutoCAD軟件包的一個重要組成部分。用戶可以通過AutoLISP直接調(diào)用AutoCAD的命令,也可以對AutoCAD命令進(jìn)行擴(kuò)展,還可以
8、實(shí)現(xiàn)對AutoCAD當(dāng)前圖形直接訪問和修改。(2)VisualLISP語言語法格式簡單易學(xué),其與AutoCAD練習(xí)函數(shù)Command可直接調(diào)用AutoCAD命令,命令格式與繪圖順序和格式完全一致,對于經(jīng)常使用AutoCAD的用戶極為方便。(3)編輯環(huán)境實(shí)用、方便。繪圖環(huán)境提供了控制臺,在控制臺的命令行作AutoLISP命令,可以直接看到結(jié)果;應(yīng)用彩色字符源代碼檢查,可以在編輯窗中同時顯示AutoLISP和DCL源程序的命令,注釋,提示等以各種顏色區(qū)分表示出來,易于檢查;VisualLISP程序自動縮進(jìn)和標(biāo)準(zhǔn)格式化;括號匹配檢查;使用VisualLISP編程可避免LISP程序繁鎖的調(diào)試過程,提高
9、了編程效率。螺栓標(biāo)準(zhǔn)件介紹二、標(biāo)準(zhǔn)件螺栓介紹六角螺栓是在螺栓種類里使用最頻繁的一種,它所擁有的外螺紋的主要功能是與螺母配合。利用這種螺紋連接方法,使兩個零件合為一體。C級的六角螺栓主要使用在表面比較粗糙,對精度要求不高的鋼鐵結(jié)構(gòu)機(jī)械,設(shè)備上。A級和B級的六角螺栓主要使用在表面光潔,對精度要求高的機(jī)械,設(shè)備上。牙紋一般分為粗牙與細(xì)牙兩種,粗牙螺紋的螺栓較為被普遍使用。圖2-1六角頭螺栓圖2-2六角頭螺栓M20型號表2-1螺栓型號及參數(shù)表螺紋規(guī)格dM5M6M8M10M12M14M16M18M20M22S(公稱)8101316182124273034K(公稱)3.545.36.47.58.81011
10、.512.514R(最小)0.20.250.40.40.60.60.60.60.80.8E(最?。?.610.914.217.619.922.826.229.63337.3A(最大)2.4344.55.3667.57.57.5bLW12516182226303438424650125200L(公稱)25-530-640-845-155-160-165-180-180-290-200000204060800020全螺紋長度L10-512-616-820-125-130-135-135-140-245-200000204060800020100mm長的質(zhì)0.00.00.00.00.00.10.10
11、.20.20.3量13203763902772238259表2-1常用LISP函數(shù)高級語言(如BASIC、FORTRAN、C等)的語法均采用中綴式,即運(yùn)算符在變量的中間,如a=b+c,而LISP語言采用前綴式,即運(yùn)算符在前面,變量在后面如(+bc),這是LISP語言和其他高級語言最大的不同。1、+、一、X、/函數(shù)(1)+函數(shù)格式:(+參數(shù)1參數(shù)2。)舉例:(+12)返回3(2)函數(shù)格式:(-參數(shù)1參數(shù)2。)舉例:(-5040)返回10(3)*函數(shù)格式:(*參數(shù)1參數(shù)2。)舉例:(*23)返回6(4)/函數(shù)格式:(/參數(shù)1參數(shù)2。)舉例:(/1002)返回502、Setq函數(shù)格式:(setq變量
12、1表達(dá)式1變量2表達(dá)式2)功能:將一個或多個符號的值設(shè)置為相應(yīng)表達(dá)式的值。例:下面的函數(shù)調(diào)用將變量a設(shè)為5.0:命令:(setqa5.0)返回5.03、Defun函數(shù)格式:(defun函數(shù)名(參數(shù)表)表達(dá)式1表達(dá)式2表達(dá)式N)功能:增加、修改、恢復(fù)AutoCAD的命令舉例:(defunc:yun(cprlwpl)4、Polar函數(shù)格式:(polar基點(diǎn)方向角距離)功能:用于球出一個點(diǎn)的極坐標(biāo),方向角為弧度。舉例:為polar提供一個三維點(diǎn):命令:(polar(l13.5)0.7853981.414214)返回(2.02.03.5)5、If函數(shù)格式:(if測試表達(dá)式then表達(dá)式else表達(dá)式)
13、功能:先對測試表達(dá)式求值,若結(jié)果為非nil,則執(zhí)行then表達(dá)式,并其求值結(jié)果作為if函數(shù)的調(diào)用返回值;若then表達(dá)式的求值結(jié)果為nil,且任選項else表達(dá)式)存在,則執(zhí)行else表達(dá)式,且返回其求值結(jié)果。如果else表達(dá)式不存在,則返回nil。舉例:(if(ab)(setqc1)(setqc-1)當(dāng)ab時,返回1,否則返回1。6、Getpoint函數(shù)格式:(getpoint基點(diǎn)提示)功能:暫停以等待用戶輸入點(diǎn),并返回該點(diǎn)。舉例:(setqp(getpoint(1.52.0)“第二點(diǎn):”)7、Getint函數(shù)格式:(getint提示)功能:暫停以等待用戶輸入以個整數(shù)并返回該整數(shù)舉例:命令:
14、(setqnum(getint)輸入15返回158、Getreal函數(shù)格式:(getreal提示)功能:暫停以讓用戶輸入一個實(shí)數(shù)并返回該實(shí)數(shù)。舉例:命令:(setqval(getreal“縮放比例:”)縮放比例:12返回12.09、Atof函數(shù)格式:(atof數(shù)字串)功能:將數(shù)字串轉(zhuǎn)換成實(shí)型數(shù)返回舉例:命令:(atof“97.1”)返回97.110、Atoi函數(shù)格式:(atoi數(shù)字串)功能:將數(shù)字串轉(zhuǎn)換成整型數(shù)返回,所返回的整型經(jīng)過“截尾取整”后的結(jié)果。舉例:命令:(atoi“3.9”)返回311、Rtos函數(shù)格式:(rtos數(shù)字方式精度)功能:根據(jù)參數(shù)方式和精度將數(shù)字轉(zhuǎn)換成相應(yīng)的字符串。方式
15、和精度參數(shù)對應(yīng)于系統(tǒng)變量lunits和luprec。如果省略這兩個參數(shù),rtos函數(shù)使用lunits和luprec的當(dāng)前值。舉例:設(shè)置變量x:命令:(setqx17.5)返回17.5將x的值轉(zhuǎn)換為科學(xué)記數(shù)格式的字符串,精度為4:12、Command函數(shù)格式:(command參數(shù))功能:將每一個參數(shù)順序傳給AutoCAD以響應(yīng)提示。它以字符串形式提交命令名和選項。Command函數(shù)的參數(shù)調(diào)用格式與AutoCAD的命令及其所需的數(shù)據(jù)類型密切相關(guān),有以下規(guī)定:1)調(diào)用AutoCAD的命令及其子命令和選擇項都用字符串表示,其中字符大寫均可。2)數(shù)值常量可以寫成數(shù)本身,也可以寫成字符串形式。3)對于點(diǎn)常
16、數(shù)有2種表示方法。一種是用AutoLISP表的形式,其調(diào)用格式于數(shù)據(jù)類型必須符合表定義的規(guī)定。另一種是表示為字符串的形式,字符串中的數(shù)據(jù)只要符合AutoCAD的數(shù)據(jù)表示規(guī)定即可。4)command調(diào)用參數(shù)中的空串(“”等效于在鍵盤上按一次空格鍵,利用它可以給一個需要不定個數(shù)定數(shù)據(jù)定AutoCAD命令的執(zhí)行,或是采用命令的缺省值。5)如果不帶任何參數(shù)調(diào)用command函數(shù),則等效于在鍵盤上按一次CTRL+C組合鍵或esc鍵,它可以中斷大多數(shù)AutoCAD命令。6)需要等待用戶輸入發(fā)get族函數(shù)不能用在command函數(shù)內(nèi),否則系統(tǒng)將提示出錯。7)對于要做對象選擇的那些AutoCAD命令(如bre
17、ak和trim等),用由entsel函數(shù)獲得等一個表去取代為選擇一個對象必須拾取一個點(diǎn)。 ) 六角頭螺栓二次開發(fā)41驅(qū)動尺寸skrea42繪圖程序(1)確定繪圖順序見右圖,以所標(biāo)各點(diǎn)確定繪圖順序P15P16pl4p9p4PIpl7P5I-11p6pUlp8p!3p!8plOP3pvP12pll圖4-1六角頭螺栓例圖3、確定繪圖流程圖、.結(jié)束/圖4-2六角頭螺栓繪圖流程圖4、編寫LISP繪圖程序文件名為bolt.lsp,程序如下(以六角頭螺栓M10為例):(3)程序(defunbolt1()(setql35k3.5d7dw10e12b30)(setqp00(getpoint插入點(diǎn))(setqp0
18、1(list(+(carp00)lk10)(cadrp00)(setqp1(list(-(carp01)10)(+(cadrp01)(/d2.0)p15(polarp1pi(-l1)p3(polarp1(*1.5pi)d)p16(polarp3pi(-l1)(setqp2(polarp15(*0.5pi)(/(-edw)2.0)p4(polarp16(*1.5pi)(/(-edw)2.0)p17(polarp2pi1)p18(polarp4pi1)(setqp6(polarp17(*0.5pi)(/(-edw)2.0)p5(polarp18(*1.5pi)(/(-edw)2.0)p14(pol
19、arp5pik)p13(polarp6pik)(setqp7(polarp1pib)p8(polarp3pib)(setqp9(polarp3(*0.5pi)0.8)p10(polarp1(*1.5pi)0.8)p11(polarp10pib)p12(polarp9pib)p20(polarp15pi1.0)p19(polarp20pik)p22(polarp16pi1.0)p21(polarp22pik)(commandlinep00p01)(commandlinep1p15p2p17p6p13p14p5p18p4p16p3p1)(commandlinep7p8)(commandlinep1
20、7p18)(commandlinep10p11)(commandlinep9p12)(commandlinep15p16)(commandlinep19p20)(commandlinep21p22)六角頭螺栓其他型號程序略5、運(yùn)行結(jié)果以深溝球軸承60000型號為例,所繪制圖形如下圖4-3運(yùn)行程序所繪六角頭螺栓 對話框設(shè)計在第四章的螺栓繪圖程序中,繪圖參數(shù)的輸入是通過getint和getreal函數(shù)實(shí)現(xiàn)。參數(shù)輸入時在命令行逐個進(jìn)行提示并輸入相關(guān)數(shù)據(jù)。一旦輸入有誤必須結(jié)束程序重新輸入,這在輸入很少參數(shù)如1個或2個時尚可,但在需要輸入較多參數(shù)時極為不便,故需要采用對話框進(jìn)行參數(shù)輸入。AutoCAD中
21、的對話框可以通過DCL語言設(shè)計界面(通過VisualLISP繪圖環(huán)境編制程序),用PDB工具來驅(qū)動完成。1、對話框部件對話框由其本身點(diǎn)框架和其中點(diǎn)組件組成??删幊虒υ捒颍≒DB)功能模塊已經(jīng)預(yù)定義了基本控件類型,用戶可以使用這些基本控件創(chuàng)建各種組合的控件,即組件??梢园凑招谢蛄袑⑦@些控件進(jìn)行編組,也可以選擇是否在這些成組的控件周圍添加一個封閉的框架和邊框。使用組件可以將許多對話框中都需要使用的控件定義成組。例如:可以將“確定”、“取消”和“幫助”按鈕定義成一個組件。使用中,組件包含的控件被稱為子組件。DCL文件按照樹型結(jié)構(gòu)方式定義對話框,其中樹型結(jié)構(gòu)頂端的控件(dialog)用于定義對話框本身
22、??丶蚪M件的布局、外觀和動作由DCL中控件的屬性指定。例如,dialog和多數(shù)控件類型都有一個label屬性,用于指定于控件相關(guān)聯(lián)都文字。其中,dialog和label屬性用于指定對話框頂部都標(biāo)題,按鈕都label屬性用于指定按鈕內(nèi)的文字等。DCL還允許定義新的控件,稱為控件原型,控件原型不需要和特定對話框相關(guān)聯(lián)。這一特性使得用戶可以非常方便地在多個對話框中使用同一不見。可以在DCL文件中引用由其他DCL文件定義的控件原型,修改其屬性的方法與修改定義控件屬性的方法相同。設(shè)計對話框初期,即開始編碼和調(diào)試之前,需要考慮設(shè)計對話框和應(yīng)用程序的具體細(xì)節(jié)。主要表現(xiàn)在控件次序的安排,從而使用戶能夠更加方
23、便地輸入數(shù)據(jù)。盡管這樣做有可能會使得程序結(jié)構(gòu)不如按照慣例編寫地連貫,但可以更好地反映出用戶工作但方式。庁持京象何Iimige扁讒臣矣和育向-ZJ行詬盞X):口n口口列偏悠謝:butLull陣列韋麼IA):預(yù)監(jiān)辿幫助(W馱認(rèn)恃吮r,縱果廳扁移刀宜隹貝|廳忝加在下區(qū)如杲刊偏移為負(fù)值,現(xiàn)劉添加龍古邊-圖5-1常用對話框部件2、常用部件有:(1)按鈕按鈕適應(yīng)于立即產(chǎn)生可視的操作,如退出對話框,彈出子對話框及其他特定操作。每個對話框至少含有一個OK按鈕(或功能相當(dāng)?shù)目丶?。按鈕的類型是button。它有action、alignment、fixed_height、fixed_widthheight等等共十
24、三個屬性。(2)編輯框編輯框用于輸入字符串。它的類型是edit_box。它是actionalignmentallow_acceptedit_limitedit_widthfixed_heightfixed_widthheightis_enabledis_tab_stopkeylablemnemonicvaluepassword_char共16個屬性。其標(biāo)簽顯示在該框的左邊,它的默認(rèn)寬度為12個字符,當(dāng)輸入的字符多于12時,文本自動向左滾動,框內(nèi)的字符串即為編輯框的值。(3)圖像按鈕圖像按鈕將圖像顯示在按鈕上,它的類型是image_button。它有actionalignmentallow_ac
25、ceptaspect_ratiocolorfixed_widthfixed_heightis_enabledis_tab_stopkeylablemnemonic和width共13個屬性。圖像按鈕很有用的一個特性是,通過LISP程序可以被單擊時的位置,從而根據(jù)不同的位置設(shè)計相應(yīng)的動作。(4)下拉列表下拉列表的類型是popup_list。它具有actionalignmentedit_widthfixed_heightfixed_widthheightis_enabledis_tab_stopkeylablelistmnemonictabsvalue和width共15個屬性。下拉列表具有編輯框和列
26、表框的兩個特點(diǎn),它的初始狀態(tài)像一個編輯框,標(biāo)簽顯示在框的左邊,框內(nèi)只有一行字符和一個向下的箭頭,單擊框內(nèi)箭頭將彈出一個列表,選取表內(nèi)文本之后,列表自動關(guān)閉,在編輯框內(nèi)選中的內(nèi)容。下拉列表的值是被選中的文本行的序號。(5)列表框3、DCL語言介紹DCL語言結(jié)合了AutoLISP與DCL兩種語法的功能,可以讓用戶半自動地架構(gòu)出圖形模式的對話框界面,即可編程對話框PDB,DCL對話框的屏幕畫面以框欄(Tile)為基本結(jié)構(gòu),將框欄按左右,上下或混合排行之后,就組成了對話框的主要外觀。每個框欄內(nèi)部可以容納對話框的基本控件。DCL語法可以自動調(diào)整控件之間的相對位置,用戶只需要將控件代碼和各控件的排行模式代
27、碼按順序?qū)懺贒CL文件里即可,一般不用考慮控件的尺寸問題。系統(tǒng)會自動計算應(yīng)有的對話框尺寸,并自動規(guī)劃適當(dāng)?shù)目臻g來放置這些控件。(1)常用屬性Alignment:格式:alignment二position;為控件組中但控件指定水平或垂直位置。對于列中但子控件,其值可以使(left)、右(right)或居中(centered)(缺省值為左)。對于行中的子控件,其值可以使頂(top)、底(bottom)或居中(centered)(缺省值為居中)。Fixed_width格式:fixed_width=true/false;指定控件的寬度是否可以填滿整個可用空間。如果屬性值為true。則控件的寬度不會填滿
28、為布局或?qū)R操作留出的可用空間。其值可用是true或false(缺省值為false)。Is_cancel格式:is_cancel=true/false;指定用戶按ESC鍵時按鈕是否被選中。其值可用是true或false(缺省值為false)。Is_default格式:is_default=true/false;指定是否將一個按鈕作為缺省按鈕,用戶按下接受鍵時,將選中該按鈕(被按下)。其值可以是true或false(缺省值為false)。如果用戶將edit_box、list_box或image_button的allow_accept屬性設(shè)置為true,則用戶按下接受鍵或雙擊時,也會選中缺省按鈕。
29、如果當(dāng)前焦點(diǎn)正位于其他按鈕上,則按下接受鍵時不選中缺省按鈕,而選中焦點(diǎn)所在當(dāng)按鈕。對話框中只能有以個按鈕當(dāng)is_default屬性可以被設(shè)置為true。Key格式:key二“string”;指定應(yīng)用程序引用特定空間當(dāng)名稱。其值是被引號括起來的字符串(無缺省值)。在對話框中,每個key屬性值都必須是唯一的。該字符串區(qū)分大小寫:如果key屬性值為BigTile,則不能用bigtile引用它。由于key屬性值對用戶不可鍵,因此設(shè)計者可以隨意指定此屬性值(值要保證其唯一性)。同理,在將應(yīng)用程序翻譯成其他語言時,key屬性對值可以不必翻譯。Label作為標(biāo)題出現(xiàn)。如果指定了標(biāo)簽,它將在edit_box控
30、件中向坐對齊。Edit_width格式:edit_width=number;以字符寬度為單位指定框的編輯或輸入?yún)^(qū)(即edit_width加框部分)的寬度。其值時以個整數(shù)或?qū)崝?shù)。如果沒有指定edit_width屬性值,或指定為零,并非控件的寬度不固定,則編輯框?qū)U(kuò)展至填滿全部可用空間。如果edit_width非零,則該框在空間占用空間內(nèi)向右對齊。(2)DCL語言對話框控制語言(DCL)的語法非常簡單。空間和空間聚合的定義方式極為相似,它們的聚合就構(gòu)成零對話框。但用戶應(yīng)注意以下編寫規(guī)則:控件的定義和屬性用小寫字母。控件的屬性應(yīng)放置在一對大括號中。DCL文件采用縮格形式以便清楚地表達(dá)語句地從屬關(guān)系。
31、屬性用等號來賦值,以分號結(jié)束??丶孛Q可包含字母、數(shù)字和下劃線,但名字要以字母開頭。空行忽略。舉例:下面是BASE.DCL中retirement_button控件的定義:retirement_button:buttonfixed_width=true;width=8;alignment=centered;在該例中,retirement_button是控件名,其中只用到一個預(yù)定義控件button。在大括號指定來三個屬性fixed_width、width、alignment及其true、8、centered。由此程序定義的控件retirement_button的屬性是將這三個屬性及button中
32、與這三個屬性不同名的屬性4、布局原則一個好看的對話框,能給別人留下好的印象。因而在布局時候,不要弄得參差不齊,最好整齊一致,各組件和文字不要顯得太擠太密和太空,疏密要恰當(dāng)。因而很有必要用width、fixed_width、alignment、spacer、spacer_0之類的語句或控件來使之漂亮。對話框的布局應(yīng)盡量美觀,此外還有一些應(yīng)當(dāng)注意的問題。建議開發(fā)對話框時考慮以下幾個方面的內(nèi)容:(1)外形美觀(2)使用方便(3)功能定義和提示一致(4)控件的互鎖功能(5)良好的容錯能力(6)文字內(nèi)容規(guī)范(7)掛件編輯的一般要求(8)缺省值和助記鍵5、深溝球軸承對話框設(shè)計圖5-2為本畢業(yè)設(shè)計所設(shè)計對話
33、框,對話框文件名為bolt.dcl,對應(yīng)del程序如下:螺栓型號M5M6M8O1A48_?.J161o1佃1佃2MoMoMn_10麗2680|1T.TT|14.陰|螺栓公稱直徑!螺帽寬度螺紋有效檢度匕螺栓底度1螺帽外接圓直徑包螺帽凸臺直徑觸取消確定圖5-2六角頭繪圖輸入對話框bolt:dialoglabel二螺栓;:row:column:popup_listlabel二螺栓種類;key=bolt1;fixed_width=true;width=32;alignment=left;list=六角頭螺栓n六角頭螺栓全螺紋n六角頭螺栓C級n;:list_boxlabel二螺栓型號;key=bolt_
34、list;fixed_width=true;width=32;alignment=left;:edit_boxlabel=螺栓公稱直徑d;key=bolt_d;width=10;fixed_width=true;alignment=right;:edit_boxlabel二螺帽寬度;key=bolt_k;width=10;fixed_width=true;alignment=right;:edit_boxlabel二螺紋有效長度b;key=bolt_b;width=10;fixed_width=true;alignment=right;:edit_boxlabel二螺栓長度l;key=bolt
35、_l;width=10;fixed_width=true;alignment=right;:edit_boxlabel=螺帽外接圓直徑e;key=bolt_e;width=10;fixed_width=true;alignment=right;:edit_boxlabel=螺帽凸臺直徑dw;key=bolt_dw;width=10;fixed_width=true;alignment=right;:imagekey=bolt_image;width=60;aspect_ratio=0.6;color=graphics_background;ok_cancel;6、PDB工具PDB(Progra
36、mmableDialogBox)工具是用來聯(lián)系DCL程序與LISP程序之間的工具,或者說是用來驅(qū)動DCL程序以初始化、顯示、關(guān)閉和處理對話框相關(guān)動作的控制工具。對話框的初始化和常用處理函數(shù)如下:動作表達(dá)式初始化action_tile功能:為某一對話框控件指定一個動作表達(dá)式,用戶在對話框中選中這個控件時,就會執(zhí)行該動作表達(dá)式。調(diào)用格式:(action_tile控件名(key)動作表達(dá)式)返回值:T獲取運(yùn)行時的控件值get_tile功能:獲取對話框指定的當(dāng)前運(yùn)行時的值調(diào)用格式:(get_tile控件名(key)返回值:控件值字符串(3)裝入指定DCL文件的函數(shù)load_dialog功能:加載DCL
37、文件調(diào)用格式:(load_dialogDCL文件名)返回值:如果成功則返回正整數(shù)值,如果load_dialog不能打開文件,則返回負(fù)整數(shù)。(4)啟動對話框的函數(shù)start_dialog功能:顯示對話框并控制交給對話框調(diào)用格式:(start_dialog)返回值:start_dialog函數(shù)返回done_dialog函數(shù)的結(jié)束方式參數(shù)status缺省情況下,用戶按下OK按鈕時返回1,用戶按下cancel按鈕時返回0而在用term_dialog函數(shù)終止所有對話框時返回-1。但是,如果給done_dialog函數(shù)一個大于1的整數(shù)形式的結(jié)束狀態(tài)代碼。Start_dialog函數(shù)就會將這個值返回,它的含
38、義取決與應(yīng)用程序。(5)圖像組件的預(yù)覽和放大和縮小技術(shù)首先用dimX_tile,dimY_tile獲得圖像組件像素的高寬。然后(start_imagekey)開始圖像處理。用(end_image)結(jié)束圖像控件的處理。7、用PDB工具驅(qū)動的六角頭螺栓繪圖源程序(帶對話框)(defunC:bolt()(setqdcl_id(load_dialogi:/cyf/bolt.dcl)(if(not(new_dialogboltdcl_id)(quit)(setqx1(dimx_tilebolt_image)(setqy1(dimy_tilebolt_image)(start_imagebolt_imag
39、e)(action_tilebolt1(info)(end_image)(action_tilebolt_list(info2)(action_tileaccept(done_dialog1)(action_tilecancel(done_dialog)(setqtemp(start_dialog)(if(=temp1)(progn(cond(=vara0)(bolt0)(=vara1)(bolt1)(=vara2)(bolt2)(defuninfo()(setqvara(read(get_tilebolt1)(condi:blt1)i:blt2)i:blt3)TOC o 1-5 h z(=v
40、ara0)(progn(add1)(slide_image00 x1y1(=vara1)(progn(add2)(slide_image00 x1y1(=vara2)(progn(add2)(slide_image00 x1y1);(if(=vara0)(slide_image00 x1y1i:blt1);(if(=vara1)(slide_image00 x1y1i:blt2);(if(=vara2)(slide_image00 x1y1i:blt3)(defunadd1()(setqlist1(listM5M6M8M10M12(M14)M16(M18)M20(M22)M24(M27)M30
41、M36M36M42M48M56M64)(start_listbolt_list3)(mapcaradd_listlist1)(end_list)(defunadd2()(setqlist1(listM5M6M8M10M12(M14)M16(M18)M20(M22)M24(M27)M30M36M36M42M48M56M64)(start_listbolt_list3)(mapcaradd_listlist1)(end_list)(defunadd3()(setqlist1(listM5M6M8M10M12(M14)M16(M18)M20(M22)M24(M27)M30M36M36M42M48M5
42、6M64)(start_listbolt_list3)(mapcaradd_listlist1)(end_list)(defuninfo2()(setqvar2(read(get_tilebolt_list)(setqf1(openi:/cyf/bolt.txtr)(setqfft)(whileff(setqf2(read(read-linef1)(setqi(nth1f2)(if(=var2i)(progn(setqnam(nth0f2)d(nth2f2)k(nth3f2)b(nth4f2)l(nth5f2)e(nth6f2)dw(nth7f2)(setqffnil)(closef1)(se
43、t_tilebolt_d(rtosd)(set_tilebolt_k(rtosk)(set_tilebolt_b(rtosb)(set_tilebolt_l(rtosl)(set_tilebolt_e(rtose)(set_tilebolt_dw(rtosdw)(defunbolt0()/1/-1(commandlayermcen1r丄丄credcenltcentercen(setqp00(getpoint插入點(diǎn))(setqp01(list(+(carp00)lk10)(cadrp00)(commandline(polarp00pi5)(polarp0105)TOC o 1-5 h z/1/-
44、1c(commandlayers0)(setqp1(list(-(carp01)10)(+(cadrp01)(/d2.0)p15(polarp1pi(-l1)p3(polarp1(*1.5pi)d)p16(polarp3pi(-l1)(setqp2(list(carp15)(+(cadrp00)(*0.5dw)p4(polarp2(*1.5pi)dw)p17(polarp2pi2)p18(polarp4pi2)(setqp6(polarp17(*0.5pi)(/(-edw)2.0)p5(polarp18(*1.5pi)(/(-edw)2.0)p14(polarp5pik)p13(polarp6
45、pik)(setqp7(polarp1pib)p8(polarp3pib)(setqp9(polarp3(*0.5pi)0.8)p10(polarp1(*1.5pi)0.8)p11(polarp10pib)p12(polarp9pib)p20(polarp15pi2.0)p19(polarp20pik)p22(polarp16pi2.0)p21(polarp22pik)(commandlinep1p15p2p17p6p13p14p5p18p4p16p3p1)(commandlinep7p8)(commandlinep17p18)(commandlinep10p11)(commandlinep9
46、p12)(commandlinep15p16)(commandlinep19p20)(commandlinep21p22)菜單設(shè)計菜單是一個固定大小的對話框,用于簡化和方便數(shù)據(jù)的輸入。本畢業(yè)設(shè)計如不采用菜單,程序調(diào)試時須在命令行輸入LISP程序加載命令(Load“f:/bearingl.lsp”),很顯然對不熟悉LISP的用戶來說是不方便的,也不便于記憶和理解。而使用菜單,用戶不管是否熟悉LISP,都可以很方便地點(diǎn)取選項調(diào)用命令。菜單分類:屏幕菜單、下拉式菜單、彈出式菜單、圖標(biāo)菜單、圖形輸入板菜單和光標(biāo)菜單。1、概述在Windows環(huán)境下,幾乎所有的應(yīng)用軟件都通過菜單實(shí)現(xiàn)各種操作。而對于Vis
47、ualBasic應(yīng)用程序來說,當(dāng)操作比較簡單時,一般通過控件來執(zhí)行;而操作較復(fù)雜時,用菜單具有十分明顯的優(yōu)勢。2、菜單介紹AutoCAD中常用菜單分為以下幾類:(1)屏幕菜單屏幕菜單位于屏幕的右側(cè),可通過下拉菜單“工具”“選項”“顯示”選項卡來打開,自AutOCAD14.0版本以后默認(rèn)不顯示此菜單。(2)下拉菜單各種應(yīng)用軟件均有此菜單,即從屏幕最上面的標(biāo)題欄向下垂直列表顯示的各列菜單。(3)彈出式菜單(或稱快捷菜單)即按下鼠標(biāo)右鍵或Shift+鼠標(biāo)右鍵彈出的菜單,方便用戶操作。3、菜單文件菜單文件的類型:.mnu、.mnc、.mnr、.mns、.mnt、.mnl這些文件包含由菜單文件使用的AutoLISP表達(dá)式。當(dāng)加載同名的菜單文件時這些文
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 科技驅(qū)動農(nóng)產(chǎn)品電商
- 科技農(nóng)業(yè)投資視角
- 專業(yè)房產(chǎn)經(jīng)紀(jì)服務(wù)協(xié)議2024版范本版
- 二零二四宇通客車零部件銷售代理及市場拓展合作協(xié)議3篇
- 2025年度電商新零售線下體驗店合作合同3篇
- 專業(yè)銷售服務(wù)協(xié)議書2024年3篇
- 2025年度跨境電商物流中心場地承包經(jīng)營合同4篇
- 2025年度航空航天復(fù)合材料加工技術(shù)合同4篇
- 2025年度茶樓裝修工程合同標(biāo)準(zhǔn)樣本8篇
- 2025年度教育機(jī)構(gòu)場地租賃保證金合同8篇
- 2024版塑料購銷合同范本買賣
- 【高一上】【期末話收獲 家校話未來】期末家長會
- JJF 2184-2025電子計價秤型式評價大綱(試行)
- GB/T 44890-2024行政許可工作規(guī)范
- 有毒有害氣體崗位操作規(guī)程(3篇)
- 二年級下冊加減混合豎式練習(xí)360題附答案
- 吞咽解剖和生理研究
- TSG11-2020 鍋爐安全技術(shù)規(guī)程
- 汽輪機(jī)盤車課件
- 異地就醫(yī)備案個人承諾書
- 蘇教版五年級數(shù)學(xué)下冊解方程五種類型50題
評論
0/150
提交評論