機(jī)械畢業(yè)論文---基于autocad平臺(tái)用戶應(yīng)用程序中深溝球軸承的設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩44頁(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)介

1、<p>  基于AutoCAD平臺(tái)用戶應(yīng)用程序中深溝球軸承的設(shè)計(jì)</p><p><b>  摘 要:</b></p><p>  計(jì)算機(jī)輔助繪圖技術(shù)已廣泛應(yīng)用于機(jī)械制造中, 該項(xiàng)技術(shù)是技術(shù)人員必備的技能之一。CAD技術(shù)近幾年在國(guó)內(nèi)的廣泛推廣和運(yùn)用使得許多企業(yè)從繁重的設(shè)計(jì)、修改和繪圖等工作中解脫出來(lái). AutoCAD內(nèi)嵌的Visual lisp編輯器允許用

2、戶對(duì)AutoCAD進(jìn)行二次開發(fā),將Lisp語(yǔ)言與AutoCAD有機(jī)的結(jié)合起來(lái),可以直接調(diào)動(dòng)幾乎全部的AutoCAD命令,同時(shí)Lisp語(yǔ)言又具備一般高級(jí)語(yǔ)言的基本結(jié)構(gòu)和功能,并且具有一般高級(jí)語(yǔ)言所沒(méi)有的強(qiáng)大的圖形處理功能,編程十分靈活,是當(dāng)今世界上CAD軟件中被廣泛采用的設(shè)計(jì)語(yǔ)言之一。機(jī)械零件中的一些標(biāo)準(zhǔn)件、常用件,他們的外形基本相似,只是尺寸大小有所不同。利用一般的AutoCAD命令進(jìn)行繪圖雖然能比手工繪圖快,但是由于對(duì)于這些大小不一形

3、狀相似的零件要重復(fù)進(jìn)行繪制,大大降低了工作效率。這個(gè)時(shí)候,我們就可以利用Lisp語(yǔ)言對(duì)這些零件進(jìn)行參數(shù)化程序設(shè)計(jì)繪圖。使用程序設(shè)計(jì)繪圖,我們可以根據(jù)輸入的參數(shù)不同,直接繪制出相應(yīng)的圖紙,這樣就可以大大提高我們繪圖的速度和效率。下面以深溝球軸承為例,簡(jiǎn)單介紹一下LISP語(yǔ)言的程序設(shè)計(jì)。</p><p>  關(guān)鍵詞:CAD ,Lisp語(yǔ)言, 二次開發(fā), 深溝球軸承</p><p><b&

4、gt;  Abstract</b></p><p>  Auto CAD technology has been widely used in machinery manufacturing, for a sill man, the technology is one of the required skills. In recent years in China, the extensive pro

5、motion and use of CAD technology which make many enterprises out from the heavy design, modification and mapping. AutoCAD embedded Visual lisp editor allows the user to develop the AutoCAD in the second time, the combina

6、tion of Lisp language and AutoCAD can mobilize almost all of the AutoCAD command directly, while Lisp lang</p><p>  Key words: CAD, Lisp language, develop the AutoCAD in the second time, bearings of deep gro

7、ove ball</p><p><b>  第一章 概論</b></p><p><b>  引言</b></p><p>  AutoLisp是當(dāng)今世界上應(yīng)用最為廣泛的微機(jī)CAD系統(tǒng)軟件,它的用途遠(yuǎn)遠(yuǎn)多于其它任何CAD系統(tǒng)。究其原因,在于其功能齊全,界面友好,易學(xué)易用等。但它最大的優(yōu)點(diǎn)莫過(guò)于其體系結(jié)構(gòu)的開放性,其

8、內(nèi)嵌式程序設(shè)計(jì)語(yǔ)言AutoLisp語(yǔ)言是人們對(duì)它進(jìn)行二次開發(fā)的最好工具,無(wú)論什么專業(yè)都可以根據(jù)本專業(yè)的特點(diǎn)開發(fā)出適合本專業(yè)需要的CAD應(yīng)用軟件。特別是隨著AutoCAD版本的不斷升級(jí),其功能更強(qiáng)、開放性更好.更便于二次開發(fā)。為人們更好地開發(fā)適合本專業(yè)的CAD系統(tǒng)提供了更便利條件</p><p>  LISP(List Processing Language)是一種計(jì)算機(jī)的表處理語(yǔ)言,是在人工智能學(xué)領(lǐng)域廣泛應(yīng)用的

9、一種程序設(shè)計(jì)語(yǔ)言。AutoLISP語(yǔ)言是嵌套于AutoCAD內(nèi)部,將LISP語(yǔ)言和AutoCAD有機(jī)結(jié)合的產(chǎn)物。使用AutoLISP可直接調(diào)用幾乎全部AutoCAD命令。AutoLISP語(yǔ)言既具備一般高級(jí)語(yǔ)言的基本結(jié)構(gòu)和功能,又具有一般高級(jí)語(yǔ)言所沒(méi)有的強(qiáng)大的圖形處理功能,美國(guó)AutoDesk公司在AutoCAD內(nèi)部嵌入AutoLISP的目的是使用戶充分利用AutoCAD進(jìn)行二次開發(fā):實(shí)現(xiàn)直接增加和修改AutoCAD命令,隨意擴(kuò)大圖形編輯

10、功能,建立圖形庫(kù)和數(shù)據(jù)庫(kù)并對(duì)當(dāng)前圖形進(jìn)行直接訪問(wèn)和修改,開發(fā)CAD軟件包等。</p><p>  1.AutoLisp語(yǔ)言概述</p><p>  語(yǔ)言又稱為符號(hào)語(yǔ)言、函數(shù)式語(yǔ)言。在它的語(yǔ)言中,最基本的數(shù)據(jù)</p><p>  類型是符號(hào)表達(dá)式,處理符號(hào)是AutoLisp的特性之一 Lisp很容易定</p><p>  義和調(diào)用一個(gè)用戶編寫的

11、函數(shù),且Lisp函數(shù)可以使用遞歸來(lái)定義,遞</p><p>  歸是Lisp的又一重要特性。</p><p>  (1)AutoLisp是AutoCAD的內(nèi)嵌式編程語(yǔ)言.即AutoCAD本身支持的,在AutoCAD內(nèi)容中運(yùn)行的高級(jí)語(yǔ)言,AutoCAD是Command Lisp的一個(gè)擴(kuò)展了的子集,它擴(kuò)充了若干有關(guān)AutoCAD繪圖及AutoCAD圖形數(shù)據(jù)庫(kù)操作的函數(shù),使其成為一種使用方便、功

12、能極強(qiáng)的開發(fā)工具,可以用來(lái)開發(fā)具有專業(yè)特點(diǎn)的實(shí)用化的CAD軟件。</p><p>  (2)Lisp語(yǔ)言擅長(zhǎng)處理圖形數(shù)據(jù)結(jié)構(gòu),是具有表賦值能力的語(yǔ)言.屬于一種解釋性語(yǔ)言,適合CAD過(guò)程中的自由交互式人機(jī)對(duì)話。</p><p>  (3)由于Lisp初始的設(shè)計(jì)目的,所以易于設(shè)計(jì)專家系統(tǒng),且具有極其簡(jiǎn)單的語(yǔ)法規(guī)則,比較易于掌握,其解釋程序可以僅由幾個(gè)函數(shù)來(lái)實(shí)現(xiàn),用戶程序可以編寫的非常短小精干&

13、lt;/p><p>  (4)Auto Lisp擅長(zhǎng)處理具有不同存儲(chǔ)容量的各類數(shù)據(jù)對(duì)象。</p><p>  軸承是機(jī)械產(chǎn)品中最常見的零件,主要用于支撐傳動(dòng)零件和傳遞動(dòng)力,在許多產(chǎn)品的設(shè)計(jì)圖紙中基本都包含軸類零件的零件圖。簡(jiǎn)單的使用AutoCAD的繪圖命令進(jìn)行繪圖,雖然速度較之手工繪圖有所提高,但是針對(duì)不同尺寸、不同結(jié)構(gòu)的軸,我們就需要進(jìn)行重復(fù)的繪制,還是大大降低了工作效率??紤]到軸承大致形狀

14、的相似性,我們希望能找到一種方法可以根據(jù)軸承的尺寸結(jié)構(gòu)直接將軸承畫出,也就是我們說(shuō)的參數(shù)化設(shè)計(jì)。輸入設(shè)計(jì)零部件的參數(shù),由CAD系統(tǒng)自動(dòng)輸出相應(yīng)零部件的工程圖紙,這樣可以減少大量的重復(fù)勞動(dòng),減輕設(shè)計(jì)工作量,并充分體現(xiàn)出參數(shù)化技術(shù)在許多通用零部件設(shè)計(jì)上的簡(jiǎn)便易行的優(yōu)勢(shì)。而使用Lisp語(yǔ)言我們就可以對(duì)軸承的繪制進(jìn)行參數(shù)化設(shè)計(jì),AutoCAD為用戶設(shè)計(jì)對(duì)話框提供了定義用戶對(duì)話框界面的對(duì)話框控制語(yǔ)言DCL(Dialog-box Control L

15、anguage)和可編程對(duì)話框PDB函數(shù)(Programmable Dialog box)(或ADS,ARX)驅(qū)動(dòng)用戶的對(duì)話框。通過(guò)對(duì)對(duì)話框控制語(yǔ)言DCL和可編程對(duì)話框函數(shù)的編輯,可以解決以上那些問(wèn)題。已達(dá)到縮短設(shè)計(jì)周期,提高設(shè)計(jì)效率的目的。</p><p>  第二章 Auto lisp 對(duì)話框設(shè)計(jì)</p><p><b>  1.1對(duì)話框概述</b></p

16、><p>  1.Auto LISP使用方法</p><p>  在Auto CAD下拉菜單中選擇工具Auto LISPVisual LISP編輯器 點(diǎn)擊即可進(jìn)入Auto LISP。</p><p>  圖1 進(jìn)入Visual LISP的用戶界面 </p><p>  在Auto CAD下拉菜單中選擇工具選項(xiàng),點(diǎn)擊“支持文件搜索路徑”,設(shè)置你所做

17、的DCL文件所在的路徑,以便于文件的讀取。</p><p><b>  圖2 路徑的選擇</b></p><p>  進(jìn)入Auto LISP系統(tǒng)后點(diǎn)擊打開,選擇你所設(shè)計(jì)的LISP文件。除了使用標(biāo)準(zhǔn)的Windows的窗口切換方法之外,還可以點(diǎn)擊Visual LISP對(duì)話框中的按鈕來(lái)激活A(yù)utoCAD窗口</p><p>  下圖所示的Visual

18、 LISP集成環(huán)境。</p><p>  圖3 Visual LISP的用戶界面</p><p>  1.2.對(duì)話框的特點(diǎn)</p><p>  對(duì)話框是用AutoCAD提供的DCL語(yǔ)言(Dialog Control Language)定義,對(duì)話框形象、直觀,可以隨意輸入、隨時(shí)修改,鼠標(biāo)、鍵盤并用,是一種深受用戶歡迎的界面。</p><p> 

19、 對(duì)話框用DCL語(yǔ)言(Dialog Control Language)定義,得到"DCL類型的文件,用AutoLISP或C程序驅(qū)動(dòng)。其可以在AutoCAD內(nèi)嵌的VisualLisp編輯器中編寫,VisualLisp編輯器提供直觀預(yù)覽DCL文件所定義的對(duì)話框界面。</p><p><b>  3.對(duì)話框的組成</b></p><p>  對(duì)話框由若干控件組成,

20、見圖4??丶梢允前粹o、切換開關(guān)、編輯框、列表或圖像等</p><p><b>  圖4 對(duì)話框的組成</b></p><p><b>  4.對(duì)話框的控件</b></p><p>  控件是構(gòu)造對(duì)話框的元件。AutoCAD為用戶預(yù)定義了23種控件和8個(gè)常用的固定控件。每一種控件屬于一種類型。每一個(gè)控件有多個(gè)屬性。每個(gè)屬性

21、都有一個(gè)名字和值。多數(shù)的屬性都有它的默認(rèn)值。一個(gè)控件具有哪些屬性是由它的類型所決定的。控件的這些屬性確定了它的外觀形式和動(dòng)作行為。</p><p>  1.2.1.可以定義動(dòng)作行為的常用控件</p><p>  這類控件具有動(dòng)作行為(action)的屬性,動(dòng)作行為是用AutoLISP的函數(shù)或表達(dá)式表示定義的,用鼠標(biāo)單擊這樣的控件時(shí),就會(huì)執(zhí)行相應(yīng)的函數(shù)或表達(dá)式。</p><

22、;p>  1.按鈕(Button) </p><p>  按鈕適用于立即產(chǎn)生可視的操作,如退出對(duì)話框、彈出子對(duì)話框及其它特定操作。每個(gè)對(duì)話框至少包含一個(gè)OK按鈕(或功能相當(dāng)?shù)目丶?lt;/p><p>  按鈕的類型是button。有action、alignment、fixed_height、fixed_width、height、is_cancel、is_default、is_enab

23、led、is_tab_stop、key、label、mnemonic、width 共13個(gè)屬性。它的標(biāo)簽(label)顯示在按鈕上。</p><p>  若要?jiǎng)?chuàng)建與OK等價(jià)的控件,其關(guān)鍵字必須為"accept",并將其屬性is_default設(shè)定為true(真)。</p><p><b>  如:</b></p><p> 

24、 :button{label="插入點(diǎn):";</p><p>  key="pick";</p><p><b>  }</b></p><p>  2.編輯框(Edit Box)</p><p>  編輯框用于輸入字符串。它的類型是edit_box。有action、alignme

25、nt、allow_accept、edit_limit、edit_width、fixed_height、fixed_width、height、is_enabled、is_tab_stop、key、label、mnemonic、value、width、password_char 16個(gè)屬性。其標(biāo)簽顯示在該框的左邊,它的默認(rèn)寬度為12個(gè)字符,當(dāng)輸入的字符多于12時(shí),文本自動(dòng)向左滾動(dòng),框內(nèi)的字符串即為編輯框的值(value)。</p>

26、;<p>  如::edit_box{label="插入角度:";</p><p><b>  key="A";</b></p><p>  edit_width=8.5;</p><p><b>  }</b></p><p>  3.圖像按鈕

27、(Image Button)</p><p>  圖像按鈕將圖像顯示在按鈕上。圖像由AutoLISP程序確定。它的類型是image_button。有action、alignment、allow_accept、aspect_ratio、color、fixed_height、fixed_width、height、is_enabled、is_tab_stop、key、mnemonic、width 13個(gè)屬性。</

28、p><p>  圖像按鈕很有用的一個(gè)特性是,通過(guò)AutoLISP程序可以獲取被單擊時(shí)的位置,從而根據(jù)不同的位置設(shè)計(jì)相應(yīng)的動(dòng)作。</p><p>  如::boxed_column{label="軸承樣式的預(yù)覽";</p><p>  :image_button{</p><p>  key="scr1";&

29、lt;/p><p><b>  color=0;</b></p><p><b>  width=25;</b></p><p>  height=10;</p><p><b>  }</b></p><p>  4. 列表框(List Bbox)<

30、/p><p>  列表框的類型是list_box。有action、alignment、allow_accept、fixed_height、fixed_width、height、is_enabled、is_tab_stop、key、label、list、mnemonic、multiple_select、tabs、value、width 16個(gè)屬性。列表內(nèi)含有若干行可供選擇的文本,當(dāng)表的內(nèi)容超出表的范圍時(shí),將自動(dòng)在表的右

31、側(cè)出現(xiàn)一個(gè)滑動(dòng)條。</p><p><b>  如:</b></p><p>  :text{value=" d d1最小 D B 軸承代號(hào)";}</p><p>  :list_box{</p><p>  key="list&qu

32、ot;;</p><p>  list="3\t4.2\t8\t3\t619/3\n3\t4.2\t10\t4\t623\n4\t4.8\t9\t3.5\t628/4\n4\t5.2\t11\t4\t619/4\n4\t5.6\t13\t5\t624\n4\t6.4\t16\t5\t634\n5\t6.6\t13\t4\t619/5\n5\t6.6\t14\t5\t605\n5\t7.4\t16\t5\

33、t625\n5\t7.4\t19\t6\t626\n6\t7.2\t13\t5\628/9\n6\t7.6\t15\t5\t619/6\n6\t8.4\t17\t6\t606\n6\t8.4\t19\t6\t626\n7\n8.2\n14\t5\t288/7\n7\t9.4\n17\5\t619/7\n7\t9.4\t19\t6\t607\n7\t9.4\t27\t7\t627\n8\t9.6\t16\t5\t628/8\n8\t10.

34、4\t19\t6\t619/8\n8\t10.4\t22\t7\t608\n8\t10.4\t24\t8\t628\n9\t10.6\t17\t5\t628/9\n9\t11.4\t2</p><p>  edit_width=32;</p><p><b>  height=6;</b></p><p><b>  tabs=9;&

35、lt;/b></p><p><b>  }</b></p><p>  5. 下拉列表(Popup List) </p><p>  下拉列表具有編輯框和列表框的兩個(gè)特點(diǎn),初始狀態(tài)象一個(gè)編輯框,標(biāo)簽顯示在框的左邊,框內(nèi)只有一行字符和一個(gè)向下的箭頭。單擊框內(nèi)箭頭,將彈出一個(gè)列表,選取表內(nèi)文本之后,列表自動(dòng)關(guān)閉,在編輯框內(nèi)顯示選中的內(nèi)容。下

36、拉列表的值是被選中的文本行的序號(hào)。 </p><p>  如::popup_list{key="popup_list";</p><p>  label="軸承直徑系列";</p><p>  edit_width=40;</p><p>  list="3系列\(zhòng)n4系列\(zhòng)n5系列\(zhòng)n6系列\(zhòng)

37、n7系列\(zhòng)n8系列\(zhòng)n9系列\(zhòng)n10系列\(zhòng)n12系列\(zhòng)n15系列\(zhòng)n17系列\(zhòng)n20系列\(zhòng)n25系列\(zhòng)n30系列\(zhòng)n35系列\(zhòng)n40系列\(zhòng)n45系列\(zhòng)n50系列\(zhòng)n55系列\(zhòng)n60系列\(zhòng)n65系列\(zhòng)n70系列\(zhòng)n75系列\(zhòng)n80系列\(zhòng)n85系列\(zhòng)n90系列\(zhòng)n95系列\(zhòng)n100系列"; </p><p><b>  }</b></p><p>  1.2.2

38、組合類控件</p><p>  組合類控件可以將相關(guān)的控件組合在一起,使得對(duì)話框的布局更加美觀、合理,操作更加方便。</p><p>  1.加框列(boxed column)</p><p>  顧名思義加框列就是加了一個(gè)矩形框的列。</p><p>  加框列的類型是boxed_bolumn。有alignment、children_ali

39、gnment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width 9個(gè)屬性。</p><p><b>  如:</b></p><p><b>  :row{</b></p><p>  :boxed_

40、column{</p><p>  :popup_list{label="比例:";</p><p><b>  key="BL";</b></p><p>  edit_width=8;</p><p>  list="1:1\n1:1.5\n1:2\n1:2.5\n1

41、:3\n1:4\n1:5\n1:10\n2:1\n2.5:1\n4:1\n5:1\n10:1";</p><p><b>  }</b></p><p>  :edit_box{label="插入角度:";</p><p><b>  key="A";</b></p&

42、gt;<p>  edit_width=8.5;</p><p><b>  }</b></p><p><b>  spacer;</b></p><p><b>  spacer;</b></p><p>  :button{label="插入點(diǎn):&

43、quot;;</p><p>  key="pick";</p><p><b>  }</b></p><p><b>  }</b></p><p>  2.加框行(Boxed Row)</p><p>  加框行就是加了一個(gè)矩形框的行。</p&

44、gt;<p>  加框行的類型是boxed_row。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width 9個(gè)屬性。</p><p>  如::boxed_row{:edit_box{label="d:"

45、;;</p><p><b>  key="d1";</b></p><p>  edit_width=4;</p><p><b>  }</b></p><p>  :edit_box{label="d1最小:";</p><p>

46、  key="dxin";</p><p>  edit_width=4;</p><p><b>  }</b></p><p>  :edit_box{label="D:";</p><p><b>  key="d";</b><

47、/p><p>  edit_width=4;</p><p><b>  }</b></p><p>  :edit_box{label= "B:";</p><p><b>  key="t1";</b></p><p>  edit_w

48、idth=4;</p><p><b>  }</b></p><p><b>  }</b></p><p>  :spacer{width=0.8;}</p><p>  3. 對(duì)話框(dialog)</p><p>  對(duì)話框本身也可以看作是一種控件,它是對(duì)話框的主體,

49、不能單獨(dú)使用,且至少要有一個(gè)確認(rèn)(OK)或取消(Cancel)按鈕。它的類型是dialog,有initial_focus、label、value 3個(gè)屬性。標(biāo)簽是對(duì)話框的標(biāo)題。屬性value也可以作為標(biāo)題,這樣的標(biāo)題在程序運(yùn)行時(shí)可以被改變。initial_focus用于指定初始聚焦的控件。</p><p><b>  1.3控件的屬性</b></p><p>  控件

50、的外觀和功能是由該控件的屬性確定的。屬性如同程序中的變量,具有名字和值。屬性的值有整型、實(shí)型和字符串類型,有的屬性值只能是預(yù)定義的保留字。實(shí)數(shù)的小數(shù)點(diǎn)前必須有數(shù)字,例如".1"是錯(cuò)的,應(yīng)為"0.1"。字符串是由雙引號(hào)括起的文本,與AutoLISP一樣,用"\"做轉(zhuǎn)義符。預(yù)定義的保留字有true、false、left、centered、right、top和bottom,它們必須小

51、寫。AutoLISP程序在運(yùn)行中可以改變控件的一些屬性。</p><p>  控件的類型不同,其屬性的數(shù)量也不同。有些屬性在所有的控件中的含義是相同的,有些屬性在不同的控件中含義也不同。AutoCAD為用戶預(yù)定義了35個(gè)屬性。在這里我們只選一些常用的給大家介紹一下。</p><p><b>  1. action</b></p><p>  確

52、定控件的活動(dòng),活動(dòng)是是用雙引號(hào)括起的AutoLISP表達(dá)式或函數(shù)。表達(dá)式中不能含有AutoCAD的命令。當(dāng)選中該控件時(shí),執(zhí)行相應(yīng)的AutoLISP表達(dá)式或函數(shù)。AutoLISP驅(qū)動(dòng)程序可以設(shè)置控件的一些屬性,且覆蓋DCL定義時(shí)的該屬性。</p><p>  相關(guān)的控件有:button、edit_box、image、image_button、list_box、popup_list、radio_button、slid

53、er、toggle。</p><p><b>  默認(rèn)值:無(wú)</b></p><p>  2. alignment</p><p>  確定控件自身的定位方式。列類型的控件可選left(左對(duì)齊)、centered(中間對(duì)齊)和right(右對(duì)齊);行類型的控件可選top(頂對(duì)齊)、centered(中間對(duì)齊)和bottom(底對(duì)齊)。</

54、p><p>  相關(guān)的控件有:全部控件。</p><p>  默認(rèn)值:列類型控件為left,行類型控件為centered</p><p>  3. allow_accept</p><p>  若該屬性的值為true,按下接受鍵(如Enter鍵),就如同單擊了默認(rèn)按鈕(is_default 為 true的按鈕)。</p><p

55、>  相關(guān)的控件有:edit_box、image_button、list_box</p><p><b>  默認(rèn)值:false</b></p><p>  4. aspect_ratio</p><p>  圖像控件的寬與高之比,與寬、高之一確定圖像控件的大小。若該屬性的值為零,則默認(rèn)為將圖像控件調(diào)整為最合適的寬與高之比。</p&

56、gt;<p>  相關(guān)的控件有:image、image_button</p><p><b>  默認(rèn)值:無(wú)</b></p><p>  5. edit_limit</p><p>  確定編輯框可容納的最多字符數(shù),最大值為256。</p><p>  相關(guān)的控件有:edit_box。</p>

57、<p><b>  默認(rèn)值:132</b></p><p>  6. edit_width</p><p>  確定編輯框的寬度,以字符為單位。若該屬性的值默認(rèn)為0,編輯框的寬度將是不固定的,布局時(shí)可自動(dòng)擴(kuò)充到整個(gè)可用空間。</p><p>  相關(guān)的控件有:edit_box、popup_list</p><p&

58、gt;  默認(rèn)值:擴(kuò)充到整個(gè)可用空間。</p><p><b>  7. height</b></p><p>  確定控件的最小高度,數(shù)值類型是整數(shù)或?qū)崝?shù)型。單位為屏幕字符的最大高度。如果屬性fixed_height的值為ture,height是控件的實(shí)際高度,否則,在自動(dòng)布局時(shí),控件的實(shí)際高度會(huì)超出該值。通常,不需指定該值,系統(tǒng)能自動(dòng)采用合適的數(shù)值(圖像及圖像按鈕

59、除外)。</p><p>  相關(guān)的控件有:全部控件。</p><p><b>  默認(rèn)值:無(wú)</b></p><p><b>  8.width</b></p><p>  確定控件的最小寬度,數(shù)值類型是整數(shù)或?qū)崝?shù)型。寬度單位為大小寫字符的平均寬度。如果屬性fixed_width的值為ture,w

60、idth是控件的實(shí)際寬度,否則,在自動(dòng)布局時(shí),控件的實(shí)際寬度會(huì)超出該值。通常,不需特別指定該值,系統(tǒng)能自動(dòng)采用合適的數(shù)值(圖像及圖像按鈕除外)。</p><p>  相關(guān)的控件有:全部控件。</p><p><b>  默認(rèn)值:無(wú)</b></p><p><b>  9. color</b></p><

61、p>  確定圖像背景、矢量或填充塊的顏色。普通顏色與AutoCAD的標(biāo)準(zhǔn)顏色名(red、yellow等)和顏色號(hào)所定義的顏色含義相同,此外還有表12-1所示的特殊顏色。</p><p>  相關(guān)的控件有:image、image_button。</p><p><b>  默認(rèn)值:7(白色)</b></p><p><b>  1

62、0. key</b></p><p>  確定控件的關(guān)鍵字,關(guān)鍵字是控件的標(biāo)識(shí),在一個(gè)對(duì)話框中的關(guān)鍵字必須是唯一的。關(guān)鍵字的值為字符串,且大小寫不等價(jià)。AutoLISP程序根據(jù)控件的關(guān)鍵字施加相應(yīng)控件的操作。</p><p>  相關(guān)的控件有:Button、edit_box、image、image_button、list_box、popup_list、radio_button、

63、slider、text、toggle。</p><p><b>  默認(rèn)值:無(wú)</b></p><p><b>  11. list</b></p><p>  確定列表框或下拉列表框內(nèi)的初始內(nèi)容(字符串),行之間用"\n"分隔,行內(nèi)用制表符"\t"分隔。</p>&l

64、t;p>  相關(guān)的控件有:list_box、popup_list。</p><p><b>  默認(rèn)值:無(wú)</b></p><p><b>  12. tabs</b></p><p>  確定列表框或下拉列表框內(nèi)的制表符"\t"停止的位置(字符個(gè)數(shù))。</p><p> 

65、 相關(guān)的控件有:list_box、popup_list</p><p><b>  默認(rèn)值:無(wú)</b></p><p>  第三章 機(jī)器中標(biāo)準(zhǔn)件CAD系統(tǒng)開發(fā)深溝球軸承的設(shè)計(jì)</p><p>  2.1 AutoLISP簡(jiǎn)單函數(shù)及解釋</p><p><b>  1.函數(shù)</b></p>

66、<p>  Defun:defun 是以名稱 sym 來(lái)定義函數(shù),此名稱函數(shù)會(huì)自動(dòng)加上引號(hào),函數(shù)名稱之后是一個(gè)參數(shù)表函數(shù)。在參數(shù)后, 可以使用一個(gè)“/”符號(hào)和一個(gè)或一個(gè)以上的 sym 區(qū)域性符號(hào)。區(qū)域性符號(hào)和參數(shù)的間隔必須以“/”符號(hào)來(lái)分隔。同時(shí), 要隔一個(gè)空格。如果沒(méi)有給出參數(shù)或區(qū)域性符號(hào), 那么必須在函數(shù)名稱的后面加上一空白的括號(hào)。</p><p>  Setq:這是 AutoLISP 中最基本

67、的設(shè)定函數(shù)。賦值函數(shù)。</p><p>  Setvar:變量設(shè)定函數(shù),變量名稱一定要以雙引號(hào)括起。</p><p>  Cmdecho:控制在AutoLISP命令函數(shù)運(yùn)行時(shí)是否回顯提示和輸入。</p><p>  Command:調(diào)用執(zhí)行 AutoCAD命令。</p><p>  Progn:此函數(shù)將會(huì)判別每一個(gè)expr,同時(shí)返回最后一個(gè)表

68、達(dá)式的值。當(dāng)某一函數(shù)只允許您使用一個(gè)表達(dá)式時(shí),您就可以使用progn 函數(shù)來(lái)一次執(zhí)行好幾個(gè)表達(dá)式。(progn [expr]...) 常用于配合if、cond等函數(shù)</p><p>  Slide_image:在目前作用的圖片上繪制一個(gè)AutoCAD的幻燈片。</p><p>  Cond:AutoLISP語(yǔ)言中基本的條件函數(shù)。此函數(shù)可接受任何數(shù)值的表為參數(shù), 同時(shí)由表的第一個(gè)項(xiàng)目開始分析

69、, 直到這些項(xiàng)目中有一值不為 nil 為止。然后再運(yùn)算此測(cè)試成功的表達(dá)式, 并返回最后子表表達(dá)式值。若子表內(nèi)缺少 <result>, 那么 cond 將返回 test表達(dá)式的值。(cond (test1 result1...)...)。</p><p>  Rtos:(rtos 數(shù)值 模式[精度])返回:實(shí)數(shù)轉(zhuǎn)成字符串。</p><p>  Atof:(atof 字符串)返

70、回:字符串轉(zhuǎn)成實(shí)數(shù)值。</p><p>  Polar:此函數(shù)將返回距某點(diǎn)某角度(angle)某距離的點(diǎn)。</p><p>  Mapcar:將作為本函數(shù)參數(shù)的一個(gè)或多個(gè)表的各個(gè)元素提供給指定函數(shù)進(jìn)行求值,并將由求值結(jié)果構(gòu)成的表返回</p><p>  Pi:常數(shù),其值約為3.1415926。</p><p>  Car:此函數(shù)將返回表中第1

71、個(gè)元素。</p><p>  Pline:畫多段線。</p><p><b>  Line:畫直線。</b></p><p>  Arc:畫圓弧,先定義起點(diǎn)。</p><p>  Hatch:圖案填充。</p><p>  Strcat:此函數(shù)將用來(lái)連接字符串,并返回最后得到的字符串。</p

72、><p><b>  Ver:垂直。</b></p><p>  Ridius:半徑。</p><p>  Nth:(nth n 列表)返回:列表的第n個(gè)元素。</p><p>  2. 數(shù)學(xué)運(yùn)算功能函數(shù)</p><p> ?。ㄊ?數(shù)值 數(shù)值…)返回:累計(jì)實(shí)數(shù)或整數(shù)數(shù)值</p>

73、<p> ?。ㄒ?數(shù)值 數(shù)值…)返回:差值</p><p>  (* 數(shù)值 數(shù)值…)返回:所有數(shù)值乘積</p><p> ?。? 數(shù)值 數(shù)值…)返回:第一個(gè)數(shù)值除以第二個(gè)以后數(shù)值的商</p><p> ?。╟os 角度)返回:角度的余弦值,角度值為弧度</p><p> ?。╩ax 數(shù)值 數(shù)值…)返回:數(shù)值中的最大值</

74、p><p> ?。╩in 數(shù)值 數(shù)值…)返回:數(shù)值中的最小值</p><p> ?。╯in 角度)返回:角度的正旋值,角度值為弧度</p><p> ?。╯qrt 數(shù)值)返回:數(shù)值的平方根</p><p>  3. 檢驗(yàn)與邏輯運(yùn)算功能函數(shù)</p><p> ?。? 表達(dá)式1 表達(dá)式2)比較表達(dá)式1是否等于式2,適用數(shù)值

75、及字符串</p><p> ?。ǎ? 表達(dá)式1 表達(dá)式2)比較表達(dá)式1是否大于等于表達(dá)式2(< 表達(dá)式1 表達(dá)式2) 比較表達(dá)式1是否<小于表達(dá)式2</p><p> ?。ǎ? 表達(dá)式1 表達(dá)式2)比較表達(dá)式1是否<一小于等于表達(dá)式2</p><p> ?。ǎ?表達(dá)式1 表達(dá)式2) 比較表達(dá)式1是否>大于表達(dá)式2</p>

76、<p> ?。ǎ? 表達(dá)式1 表達(dá)式2) 比較表達(dá)式1是否大于等于表達(dá)式2</p><p>  2.2 深溝球軸承對(duì)話框界面的設(shè)計(jì)</p><p>  如圖所示是參數(shù)化繪制深溝球軸承的對(duì)話框界面,其DCL文件代碼是:</p><p>  圖5 深溝球軸承對(duì)話框界面</p><p>  pdtlqzc:dialog{label=&

77、quot;深溝球軸承 (GB/T276-1994)";</p><p>  :popup_list{key="popup_list";</p><p>  label="軸承直徑系列";</p><p>  edit_width=40;</p><p>  list="3系列\(zhòng)n4系

78、列\(zhòng)n5系列\(zhòng)n6系列\(zhòng)n7系列\(zhòng)n8系列\(zhòng)n9系列\(zhòng)n10系列\(zhòng)n12系列\(zhòng)n15系列\(zhòng)n17系列\(zhòng)n20系列\(zhòng)n25系列\(zhòng)n30系列\(zhòng)n35系列\(zhòng)n40系列\(zhòng)n45系列\(zhòng)n50系列\(zhòng)n55系列\(zhòng)n60系列\(zhòng)n65系列\(zhòng)n70系列\(zhòng)n75系列\(zhòng)n80系列\(zhòng)n85系列\(zhòng)n90系列\(zhòng)n95系列\(zhòng)n100系列"; </p><p><b>  }</b></p><

79、p>  :text{value=" d d1最小 D B 軸承代號(hào)";}</p><p>  :list_box{</p><p>  key="list"; list="3\t4.2\t8\t3\t619/3\n3\t4.2\t10\t4\t623\n4\t4

80、.8\t9\t3.5\t628/4\n4\t5.2\t11\t4\t619/4\n4\t5.6\t13\t5\t624\n4\t6.4\t16\t5\t634\n5\t6.6\t13\t4\t619/5\n5\t6.6\t14\t5\t605\n5\t7.4\t16\t5\t625\n5\t7.4\t19\t6\t626\n6\t7.2\t13\t5\628/9\n6\t7.6\t15\t5\t619/6\n6\t8.4\t17\t6\

81、t606\n6\t8.4\t19\t6\t626\n7\n8.2\n14\t5\t288/7\n7\t9.4\n17\5\t619/7\n7\t9.4\t19\t6\t607\n7\t9.4\t27\t7\t627\n8\t9.6\t16\t5\t628/8\n8\t10.4\t19\t6\t619/8\n8\t10.4\t22\t7\t608\n8\t10.4\t24\t8\t628\n9\t10.6\t17\t</p>

82、<p>  edit_width=32;</p><p><b>  height=6;</b></p><p><b>  tabs=9;</b></p><p><b>  }</b></p><p>  :boxed_row{:edit_box{label=&

83、quot;d:";</p><p><b>  key="d1";</b></p><p>  edit_width=4;</p><p><b>  }</b></p><p>  :edit_box{label="d1最小:";</p>

84、;<p>  key="dxin";</p><p>  edit_width=4;</p><p><b>  }</b></p><p>  :edit_box{label="D:";</p><p><b>  key="d";&l

85、t;/b></p><p>  edit_width=4;</p><p><b>  }</b></p><p>  :edit_box{label= "B:";</p><p><b>  key="t1";</b></p><p

86、>  edit_width=4;</p><p><b>  }</b></p><p><b>  }</b></p><p>  :spacer{width=0.8;}</p><p><b>  :row{</b></p><p>  :bo

87、xed_column{</p><p>  :popup_list{label="比例:";</p><p><b>  key="BL";</b></p><p>  edit_width=8;</p><p>  list="1:1\n1:1.5\n1:2\n1:2.

88、5\n1:3\n1:4\n1:5\n1:10\n2:1\n2.5:1\n4:1\n5:1\n10:1";</p><p><b>  }</b></p><p>  :edit_box{label="插入角度:";</p><p><b>  key="A";</b><

89、;/p><p>  edit_width=8.5;</p><p><b>  }</b></p><p><b>  spacer;</b></p><p><b>  spacer;</b></p><p>  :button{label="插

90、入點(diǎn):";</p><p>  key="pick";</p><p><b>  }</b></p><p><b>  }</b></p><p>  :boxed_column{label="軸承樣式的預(yù)覽";</p><p

91、>  :image_button{</p><p>  key="scr1";</p><p><b>  color=0;</b></p><p><b>  width=25;</b></p><p>  height=10;</p><p>&

92、lt;b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  ok_cancel;</p><p><b>  }</b></p><p>  2.3參數(shù)化繪制圓錐齒輪零件

93、工作圖繪圖程序設(shè)計(jì)</p><p>  對(duì)話框界面中各控件的功能即是獲取應(yīng)用程序中所需的參數(shù),其在對(duì)話框設(shè)計(jì)中被成為對(duì)話框驅(qū)動(dòng),根據(jù)對(duì)話框驅(qū)動(dòng)程序獲得的參數(shù),通過(guò)AutoLISP語(yǔ)言所提供的函數(shù)進(jìn)行計(jì)算,并編寫AutoLISP程序,實(shí)現(xiàn)參數(shù)化繪圖的功能。</p><p>  2.3.1 插入點(diǎn)的設(shè)置</p><p>  2.3.2用極坐標(biāo)方法計(jì)算各點(diǎn)</p&g

94、t;<p>  如圖6:軸承各點(diǎn)坐標(biāo)</p><p>  (defun getdata ()</p><p>  (setq d (atof (get_tile "d1")))</p><p>  (setq d11 (atof (get_tile "dxin")))</p><p>  

95、(setq d1 (atof (get_tile "d")))</p><p>  (setq t1(atof(get_tile "t1")))</p><p>  (setq ang1 (atof (get_tile "A")))</p><p>  (setq ang(* ang1(/ pi 180))

96、)</p><p><b>  )</b></p><p>  (defun qubili()</p><p>  (setq s_list(list 1(/ 1.0 1.5) 0.5 0.4(/ 1.0 3.0) 0.25 0.2 0.1 2 2.5 4 5 10))</p><p>  (setq bl_no(ato

97、i(get_tile "BL")))</p><p>  (setq bl(get_tile "BL"))</p><p>  (setq s(nth bl_no s_list))</p><p><b>  )</b></p><p>  (defun draw4((setq d

98、(* s d) d1(* s d1)t1(* s t1))</p><p>  (setq p1(polar p0(+ ang (/ pi 2))(/ d 2.0)))</p><p>  (setq p2(polar p0(+ ang (/ pi 2))(/ d1 2.0)))</p><p>  (setq p3(polar p2(+ ang 0)t1))<

99、;/p><p>  (setq p4(polar p1(+ ang 0)t1))</p><p>  (setq p00(polar p0(+ ang 0)(/ t1 2.0)))</p><p>  (setq p5(polar p00(+ ang (/ pi 2))(+(/(- d1 d)4.0)(/ d 2.0))))</p><p>  

100、(setq a(*(/(- d1 d)8.0)(sin (/ pi 3.0))))</p><p>  (setq b(*(/(- d1 d)8.0)(cos (/ pi 3.0))))</p><p>  (setq p6(polar p5(+ ang (- (/ pi 2)))b))</p><p>  (setq p7(polar p6(+ ang 0)a))

101、</p><p>  (setq p8(polar p7(+ ang (/ pi 2))(* 2 b)))</p><p>  (setq p9(polar p8(+ ang pi )(* a 2)))</p><p>  (setq p10(polar p9(+ ang (-(/ pi 2)))(* 2 b)))</p><p>  

102、(setq p11(polar p10(+ ang pi )(-(/ t1 2)a)))</p><p>  (setq p12(polar p11(+ ang (/ pi 2))(* 2 b)))</p><p>  (setq p14(polar p7(+ ang 0)(-(/ t1 2)a)))</p><p>  (setq p13(polar p14(+

103、ang (/ pi 2))(* 2 b)))</p><p>  (setq p15(polar p5(+ ang pi)(+(/(- d1 d)8.0)2)))</p><p>  (setq p16(polar p5(+ ang (/ pi 2))(+(/(- d1 d)8.0)2)))</p><p>  (setq p17(polar p5(+ ang 0)

104、(+(/(- d1 d)8.0)2)))</p><p>  (setq p18(polar p5(+ ang (-(/ pi 2)))(+(/(- d1 d)8.0)2)))</p><p>  (setq p19(polar p1(+ ang (-(/ pi 2)))d))</p><p>  (setq p20(polar p2(+ ang (-(/ pi

105、 2)))d1))</p><p>  (setq p21(polar p3(+ ang (-(/ pi 2)))d1))</p><p>  (setq p22(polar p4(+ ang (-(/ pi 2)))d))</p><p>  (setq p23(polar p5(+ ang (-(/ pi 2)))(+(/(- d1 d)2.0)d)))

106、</p><p>  (setq p24(polar p23(+ ang pi)(+(/(- d1 d)8.0)2)))</p><p>  (setq p25(polar p23(+ ang (/ pi 2))(+(/(- d1 d)8.0)2)))</p><p>  (setq p26(polar p23(+ ang 0)(+(/(- d1 d)8.0)2

107、)))</p><p>  (setq p27(polar p23(+ ang (-(/ pi 2)))(+(/(- d1 d)8.0)2)))</p><p>  2.3.3畫深溝球軸承</p><p>  (command "layer" "m" 1 "c" 7 "" "

108、;l" "continuous" "" "")</p><p>  (command "pline" p1 p11 p10 "a" "ce" p5 p7 "l" p14 p4 p1 "")</p><p>  (setq

109、 st1(ssget "l"))</p><p>  (command "pline" p13 p8 "a" "ce" p5 p9 "l" p12 p2 p3 p13 "")</p><p>  (setq st2(ssget "l"))</p

110、><p>  (command "arc" p9 "ce" p5 p10 "")</p><p>  (command "arc" p7 "ce" p5 p8 "")</p><p>  (command "line" p11 p1

111、2 "")</p><p>  (command "line" p14 p13 "")</p><p>  (command "line" p15 p17 "")</p><p>  (command "line" p16 p18 "&q

112、uot;)</p><p>  (command "line" p19 p20 p21 p22 p19 "")</p><p>  (command "line" p24 p26 "")</p><p>  (command "line" p25 p27 "

113、")</p><p>  (command "line" p1 p19 "")</p><p>  (command "line" p4 p22"")</p><p>  (command "layer" "m" 2 "c&qu

114、ot; 1 "" "l" "continuous" "" "")</p><p>  (command "hatch" "u" 135 1 "n" st1 "")</p><p>  (command "

115、;hatch" "u" 135 1 "n" st2 "")</p><p><b>  (princ)</b></p><p><b>  )</b></p><p>  2.3.4數(shù)據(jù)的調(diào)用</p><p><b> 

116、 部分程序:</b></p><p>  (defun c:pdtlqzc(/)</p><p>  (setvar "cmdecho" 0)</p><p>  (setvar "blipmode" 0)</p><p>  (setvar "osmode" 0)<

117、;/p><p>  (setqd 3 d11 4.2 d1 8 t1 3 zcxh 619/3 ang1 0 bl "0" zcxl "0") </p><p>  (setq list0 '( "3 4.2 8 3 619/3" &l

118、t;/p><p>  "3 4.2 10 4 623 "</p><p><b>  )</b></p><p><b>  )</b></p><p>  (setq dcl_id (load_dialog

119、"pd"))</p><p>  (if (< dcl_id 0)(exit))</p><p>  (setq std 2)</p><p>  (while (> std 1)</p><p>  (if(not (new_dialog "pdtlqzc" dcl_id))(exit)

120、)</p><p>  (set_tile "d1" (rtos d 2 2))</p><p>  (set_tile "dxin" (rtos d11 2 2))</p><p>  (set_tile "d" (rtos d1 2 2))</p><p>  (set_til

121、e "t1" (rtos t1 2 2))</p><p>  (set_tile "A" (rtos ang1 2 2))</p><p>  (set_tile "BL" bl)</p><p>  (start_image "scr1")</p><p> 

122、 (slide_image 0 0 (dimx_tile "scr1") (dimy_tile "scr1")</p><p><b>  "pdq"</b></p><p><b>  )</b></p><p>  (end_image)</p>

123、<p>  (start_list "list")</p><p>  (mapcar 'add_list list0)</p><p>  (end_list)</p><p>  (action_tile "popup_list" "(setq zcxl $value)(do_list)&qu

124、ot;)</p><p>  (action_tile "BL" "(set_tile $key $value)")</p><p>  (action_tile "list" "(setq zcs (atoi $value))(take)")</p><p>  (action_til

125、e "pick" "(getdata)(qubili) (done_dialog 2)")</p><p>  (action_tile "accept" "(getdata)(qubili)(done_dialog 1)")</p><p>  (action_tile "cancel"

126、"(done_dialog -1)")</p><p>  (setq std (start_dialog))</p><p>  (if(= std 2)(progn(setvar "osmode" 32)(setq p0 (getpoint "Insert point:"))(setvar"osmode"

127、 0)))</p><p><b>  )</b></p><p>  (if(= std 1)(draw4))</p><p>  (unload_dialog dcl_id)</p><p><b>  (princ)</b></p><p><b>  )&l

128、t;/b></p><p>  (defun do_list()</p><p><b>  (cond</b></p><p>  ((= zcxl "0")(setq list0'("3 4.2 8 3 619/3"

溫馨提示

  • 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ù)僅提供信息存儲(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)論