基于AutoLisp的數(shù)控車床滾珠絲杠螺母副CAD二次開發(fā)
《基于AutoLisp的數(shù)控車床滾珠絲杠螺母副CAD二次開發(fā)》由會員分享,可在線閱讀,更多相關(guān)《基于AutoLisp的數(shù)控車床滾珠絲杠螺母副CAD二次開發(fā)(57頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 目 錄 摘 要..............................................................Ⅰ 第一章 緒 論 1 1.1 CAD二次開發(fā)國內(nèi)外研究現(xiàn)狀 1 1.2 課題研究的目的及意義 2 1.3 研究的內(nèi)容和方法 2 第二章 CAD二次開發(fā)方法的理論分析 3 2.1 Autolisp語言簡介 3 2.2 Autolisp 語言的數(shù)據(jù)類型及相關(guān)函數(shù) 3 2.2.1 Autolisp的數(shù)據(jù)類型 3 2.2.2 Autolisp的相關(guān)函數(shù) 5 2.3 加載和運行Autolisp程序 7 第三章 參數(shù)化設(shè)計程
2、序編制過程 9 3.1 圖形及參數(shù)分析 9 3.2 菜單設(shè)計 10 3.3 對話框設(shè)計 11 3.4 編制Autolisp繪圖程序 14 3.5 尺寸標(biāo)注程序 18 3.6 圖框程序 20 第四章 結(jié)果分析 25 第五章 總 結(jié) 25 參考文獻(xiàn) 27 Abstract 28 附 錄 29 基于AutoLisp的數(shù)控車床滾珠絲杠螺母副CAD二次開發(fā) 摘 要 AutoCAD 技術(shù)一直處于不斷發(fā)展和探索中,隨著CAD技術(shù)的功能不斷的完善和強(qiáng)大,已經(jīng)廣泛應(yīng)用于機(jī)械、建筑等各個領(lǐng)域,其二次開發(fā)技術(shù)也不斷受到人
3、們的應(yīng)用。本文以AutoCAD為平臺,利用Autolisp語言對AutoCAD二次開發(fā)的基本設(shè)計思路和方法對AutoCAD的參數(shù)化設(shè)計理念加以強(qiáng)化,加強(qiáng)了人性化的交互方式設(shè)計。系統(tǒng)研究并開發(fā)用于數(shù)控車床滾珠絲杠螺母副的參數(shù)化自動繪圖程序。在本文中,介紹了Autolisp語言,菜單,對話框的制作過程,通過lisp編程語言來完成對對話框參數(shù)的調(diào)用以及自動分析運算,實現(xiàn)自動繪圖功能。從而提高設(shè)計效率,減輕技術(shù)人員的勞動強(qiáng)度,快速完成多種型號不同參數(shù)的數(shù)控車床滾珠絲杠螺母副的繪圖工作。 關(guān)鍵詞 CAD AutoLisp 參數(shù)化 滾珠絲杠螺母副 數(shù)控車床
4、 Ⅰ 2010屆機(jī)械設(shè)計制造及其自動化專業(yè)畢業(yè)設(shè)計(論文) 第一章 緒 論 1.1 CAD二次開發(fā)國內(nèi)外研究現(xiàn)狀 CAD技術(shù)的發(fā)展和形成至今已有50多年的歷史了,20世紀(jì)50年代在美國誕生了第一臺計算機(jī)繪圖系統(tǒng),開始出現(xiàn)具有簡單繪圖輸出功能的被動式的計算機(jī)輔助設(shè)計技術(shù),即CAD技術(shù)。CAD軟件發(fā)展的初期,CAD的含義僅僅是圖版的代替品而非現(xiàn)在我們經(jīng)常討論的CAD所包含的全部內(nèi)容。CAD技術(shù)以從二維繪圖為主要目標(biāo)的算法一直持續(xù)到70年代末期,以后作為CAD技術(shù)的一個分支而相對單獨、平穩(wěn)地發(fā)展。早期
5、應(yīng)用較為廣泛的是CADAM軟件,近十年來占據(jù)繪圖市場的是AutoDesk公司的AutoCAD軟件。 60年代出現(xiàn)的三維CAD系統(tǒng)只是極為簡單的線框式系統(tǒng),它只能表達(dá)基本的幾何信息,不能有效表達(dá)幾何數(shù)據(jù)間的拓?fù)潢P(guān)系。進(jìn)入70年代,只能采用多截面視圖、特征緯線的方式來近似表達(dá)所設(shè)計的自由曲面。隨著計算機(jī)的發(fā)展,當(dāng)三維曲面造型系統(tǒng)出現(xiàn)時,標(biāo)志著計算機(jī)輔助設(shè)計技術(shù)從單純模仿工程圖紙的三視圖模式中解放出來,首次實現(xiàn)以計算機(jī)完整描述產(chǎn)品零件的主要信息的方式。 從70年代末到80年代初,隨著計算機(jī)技術(shù)的前進(jìn),同時在CAD技術(shù)方面也進(jìn)行了許多開拓。1979年世界上出現(xiàn)了第一個完全基于實體造型技術(shù)的大型CA
6、D軟件──I-DEAS。由于實體造型技術(shù)能夠精確表達(dá)零件的全部屬性,在理論上有助于CAD的模型表達(dá),給設(shè)計帶來了驚人的方便性,它代表著未來CAD技術(shù)的發(fā)展方向。在實體造型技術(shù)逐漸普及時,CAD技術(shù)的研究又有了重大進(jìn)展。在80年代中期,人們提出了一種比無約束自由造型更新穎、更好的算法——參數(shù)化實體造型方法。從算法上來說,這是一種很好的設(shè)想。它主要的特點是:基于特征、全尺寸約束、全數(shù)據(jù)相關(guān)、尺寸驅(qū)動設(shè)計修改。當(dāng)時參數(shù)化技術(shù)還處于一種發(fā)展初級階段,很多技術(shù)難點有待于攻克。進(jìn)入90年代,參數(shù)化技術(shù)變得比較成熟起來,充分體現(xiàn)出其在許多通用件、零部件設(shè)計上存在的簡便易行的優(yōu)勢。 技術(shù)理論上的認(rèn)可并非意味
7、著時間上的可行性,考慮到這種參數(shù)化的不完整性以及需要很長時間的過渡時期。但是在把線框模型、曲面模型以及實體模型疊加在一起的復(fù)合建模卻并非完全基于實體,只是主模型技術(shù)的雛形,難以全面應(yīng)用參數(shù)化技術(shù)。由于參數(shù)化技術(shù)和非參數(shù)化技術(shù)的本質(zhì)不同,用參數(shù)化技術(shù)造型后進(jìn)入非參數(shù)化系統(tǒng)要進(jìn)行內(nèi)部轉(zhuǎn)換,才能被系統(tǒng)接受,而大量的轉(zhuǎn)換極易導(dǎo)致數(shù)據(jù)丟失和其他不利條件,這樣的參數(shù)化技術(shù)的市場競爭力自然是不高的。全尺寸約束,即設(shè)計者在設(shè)計初期及全過程中,必須將形狀和尺寸聯(lián)合起來考慮,并且通過尺寸約束來控制形狀,通過尺寸的改變來驅(qū)動形狀的改變,一切以尺寸(即所謂的參數(shù))為出發(fā)點。 一旦所設(shè)計的零件形狀過于復(fù)雜時,面對滿屏幕
8、的尺寸,如何改變這些尺寸以達(dá)到所需要的形狀就很不直觀。實事上,全約束是對設(shè)計者的一種硬性規(guī)定。撇開這樣全約束的規(guī)定,沿著這個思路,在對現(xiàn)有各種造型技術(shù)進(jìn)行了充分地分析和比較以后,一個更新穎大膽的設(shè)想產(chǎn)生了。SDRC的開發(fā)人員以參數(shù)化技術(shù)為藍(lán)本,提出了一種比參數(shù)化技術(shù)更為先進(jìn)的實體造型技術(shù)──變量化技術(shù),使得現(xiàn)在的CAD技術(shù)和系統(tǒng)都具有良好的開放性。圖形接口、圖形功能日趨標(biāo)準(zhǔn)化。在CAD系統(tǒng)中,綜合應(yīng)用正文、圖形、圖像、語音等多媒體技術(shù)和人工智能、專家系統(tǒng)等技術(shù)大大提高了自動化設(shè)計的程度,出現(xiàn)了智能CAD新學(xué)科。智能CAD把工程數(shù)據(jù)庫及其管理系統(tǒng)、知識庫及其專家系統(tǒng)、擬人化用戶接口管理系統(tǒng)集于一
9、體。 目前國內(nèi)實際應(yīng)用的CAD系統(tǒng)可分為兩大類:一類是國產(chǎn)自主版權(quán)的CAD軟件;另一類是國外商品化的CAD軟件,由于國外的CAD軟件的功能齊全,性能優(yōu)良,并完成了商品化和工程化的需求,因此在國內(nèi)市場上占有很大的份額。然而此類商品化的CAD軟件一般是通用化軟件,用戶在應(yīng)用時必須依據(jù)各行業(yè)的特點進(jìn)行不同程度的二次開發(fā),方能發(fā)揮出應(yīng)有的效益。選擇做AutoCAD的二次開發(fā)方式也并不容易,二次開發(fā)軟件廠商必須要緊跟著AutoCAD的步伐進(jìn)行更新與完善,否則客戶將不能使用或出現(xiàn)很多問題。AutoCAD功能越來越強(qiáng)大,用戶的使用水平也在不斷提升,用戶對二次開發(fā)工具的依賴性在減小。而且AutoDesk也圍
10、繞AutoCAD完善產(chǎn)品線,憑借強(qiáng)大的研發(fā)實力,不斷推出建筑、規(guī)劃、機(jī)械、GIS等專業(yè)應(yīng)用。使得國內(nèi)做二次開發(fā)專業(yè)應(yīng)用的軟件在市場上占有很小一部分。 Autolisp是當(dāng)今世界上應(yīng)用最為廣泛的微機(jī)CAD系統(tǒng)軟件,它的用途遠(yuǎn)遠(yuǎn)多于其他任何系統(tǒng),究其原因,在于功能齊全,界面友好,易學(xué)易用。但它最大的有點莫過于其體系結(jié)構(gòu)的開放性,其內(nèi)嵌式程序設(shè)計語言Autolisp語言是人們對它進(jìn)行二次開發(fā)的最好工具,無論什么專業(yè)都可以根據(jù)本專業(yè)的特點開發(fā)出適合本專業(yè)的CAD應(yīng)用軟件。特別是隨著AutoCAD版本的不斷升級,其功能更強(qiáng)、開放性更好,更便于人們二次開發(fā)。為人們更好地開發(fā)本專業(yè)的CAD系統(tǒng)提供了更有利
11、的條件。 1.2 課題研究的目的及意義 本課題選用數(shù)控車床滾珠絲杠螺母副零件圖和裝配圖作為研究對象。通過應(yīng)用Autolisp語言,編制程序生成的菜單,利用DCL對話框控制語言設(shè)計接受用戶數(shù)據(jù)參數(shù)的對話框,編制Autolisp程序,調(diào)用參數(shù)對話框,分析運算,實現(xiàn)圖形參數(shù)化及智能化,分析計算與繪圖一體化,系統(tǒng)完成CAD二次開發(fā)自動繪圖功能。 隨著社會各行業(yè)的不斷發(fā)展,行業(yè)之間的競爭不斷增強(qiáng),其促進(jìn)發(fā)展技術(shù)的科技含量也不斷在增高,相應(yīng)的各種應(yīng)用軟件輔助工具也層出不窮。要適合行業(yè)要求滿足行業(yè)需要則需要對個應(yīng)用軟件進(jìn)行不同程度的改進(jìn)或開發(fā)來發(fā)揮其應(yīng)有的效益。那么針對本課題而言,便是對AutoC
12、AD二次開發(fā),通過Autolisp編程設(shè)計,利用參數(shù)化繪圖完成滿足用戶定義參數(shù)的各型號數(shù)控機(jī)床滾珠絲杠螺母副要求的零件圖,既提高了工作效率又滿足繪圖要求。 1.3 研究的內(nèi)容和方法 本課題擬用AutoCAD軟件以及二次開發(fā)語言Autolisp,以數(shù)控車床滾珠絲杠螺母副為研究對象,設(shè)計完成參數(shù)化自動繪圖功能的程序。其主要內(nèi)容和方法包括:針對研究對象對其參數(shù)和圖形進(jìn)行詳細(xì)分析,從而選擇繪圖程序的編程方式和參數(shù)變量的確定;設(shè)計制作菜單,對話框以及各部分的lisp程序;根據(jù)研究對象的圖形結(jié)構(gòu)要求設(shè)計編程,完成繪圖程序的編制;按照CAD作圖標(biāo)準(zhǔn)相應(yīng)的完成標(biāo)注、圖框等程序。按此設(shè)計思路、模型和實現(xiàn)
13、手段,利用Autolisp完成CAD系統(tǒng)二次開發(fā)。 第二章 CAD二次開發(fā)方法的理論分析 2.1 Autolisp語言簡介 Autolisp是AutoCAD內(nèi)嵌式編程語言,所謂內(nèi)嵌式就是指Autolisp已經(jīng)集成到AutoCAD軟件中,是AutoCAD本身支持且能在其中運行的高級語言。使用Autolisp可以直接調(diào)用幾乎所有的AutoCAD命令。Autolisp語言既具備一般語言的基本結(jié)構(gòu)和功能,又具有一般高級語言所沒有的強(qiáng)大圖形處理功能,是一種具有賦值能力的解釋性語言。在AutoCAD中,用戶十分方便地利用Autolisp編程語言對AutoCAD進(jìn)行二次開發(fā),把自
14、己日常工作中常用的某些操作以命令的形式添加到AutoCAD中,然后用戶就可以像使用AutoCAD標(biāo)準(zhǔn)命令一樣使用新添加的命令以完成特定的操作。用戶還可以直接增加和修改AutoCAD命令,隨意擴(kuò)大圖形編輯功能,建立圖形庫,并對當(dāng)前圖形進(jìn)行直接訪問和修改。Autolisp語言具有如下特點: (1) Autolisp語言中的所有成分都是以函數(shù)形式給出的,執(zhí)行程序就是執(zhí)行一些函數(shù),再調(diào)用其它函數(shù)。 (2) AutoLisp語言建立在基于普通的LISP語言基礎(chǔ)上,并擴(kuò)充了許多適用于CAD的特殊功能形成。 (3) 是一種能以直譯方式(不須先行編譯)亦可于AutoCAD內(nèi)部執(zhí)行的直譯性程序語言。
15、 (4) 擅長處理具有不同存儲量的各類數(shù)據(jù)對象。 (5) 數(shù)據(jù)及程序均統(tǒng)一以串行 (List)結(jié)構(gòu)表示。 (6) AutoLisp語言中的程序主要運行過程結(jié)構(gòu)是采用遞歸方式。 AutoCAD軟件本身是一種非參數(shù)化環(huán)境,不能實現(xiàn)尺寸驅(qū)動的參數(shù)化技術(shù),雖然可以調(diào)試大量繪圖程序確定的可變參數(shù)變量后調(diào)整可變參數(shù)來實現(xiàn),但工作量大難以實現(xiàn)。而Autolisp可以編制程序驅(qū)動AutoCAD的圖形數(shù)據(jù)庫,達(dá)到尺寸與圖形的一致變更,接受鼠標(biāo)或鍵盤的屏幕圖形信息,修改尺寸相關(guān)圖形自動按比例改變,從而實現(xiàn)參數(shù)化技術(shù)。因此,實現(xiàn)參數(shù)化繪圖程序設(shè)計是Autolisp語言最經(jīng)典的應(yīng)用之一。 A
16、utoLISP是一種程序開發(fā)語言,Visual LISP是為加速AutoLISP程序開發(fā)而設(shè)計的軟件開發(fā)工具,Visual LISP全面兼容AutoLISP程序,提供一個全新的集成開發(fā)環(huán)境。通過Visual LISP與AutoCAD命令窗口進(jìn)行交互來實現(xiàn)相應(yīng)程序的提示。進(jìn)而利用AutoLISP進(jìn)行各種工作的分析計算,自動繪制復(fù)雜的圖形,控制菜單,驅(qū)動對話框,定義新的命令,為AutoCAD擴(kuò)充智能化、參數(shù)化的功能。 2.2 Autolisp 語言的數(shù)據(jù)類型及相關(guān)函數(shù) 2.2.1 Autolisp的數(shù)據(jù)類型 Autolisp語言使用7種類型的數(shù)據(jù),它們是整數(shù)型、實數(shù)型、字符串、文件指
17、針、圖元名、表和選擇集。下面對在本次設(shè)計用得較多的數(shù)據(jù)類型作一下介紹。 (1) 字符串 字符串可以被Autolisp語言當(dāng)作一種數(shù)據(jù)類型使用,但是必須用雙引號引起來。引號內(nèi)的內(nèi)容可以傳遞給AutoCAD當(dāng)作指令執(zhí)行,所以在引號包括的字符串中,可以用反斜杠(\)添加控制字符。字符串在Autolisp程序中常用于文件名、標(biāo)識符及DCL中的控制名。字符串中的大小寫和空格符都是有含義的,同一字母的大小寫是不同的字符。而字符串的長度是字符串一對雙引號之間的字符個數(shù)(不包含雙引號)。 字符串中可以包括ASCII中的任何字符,通常格式“\nnn”,其中nnn是字符的八進(jìn)制ASCII碼,由于反斜杠已經(jīng)
18、作為字符串的前導(dǎo)轉(zhuǎn)義符,當(dāng)字符串中要使用反斜杠時,則必須使用“\\”或“\134”的轉(zhuǎn)義符。雙引號(“)被替用那個用于字符串定界,所以如果字符串需要包含它時,可以使用“\”或“\042”來表示。一些常用的控制符: \e 表示取消 ESC \n 表示換行 LF \t表示制表 HT \r表示回車 CR 其中e n t r 必須小寫。 (2) 表 Autolisp存儲和處理數(shù)據(jù)最有效的方式表。鑒于AutoCAD的數(shù)據(jù)是以鏈的方式進(jìn)行存儲的,所以Autolisp使用表這一數(shù)據(jù)類型。表是指在一對相匹配的左右圓括號之間元素的有序集合,表中的每一項成為表的元素,表中的元素可以是整
19、數(shù)、實數(shù)、字符串、符號,也可以是另一個表。 所有的圖形都是由點線面組成的,而線面又可以分解成點和點的組合,所以點是最基本的元素。為了處理圖形中的點的坐標(biāo),Autolisp對二維平面和三維空間的點的坐標(biāo)的表達(dá)如下:平面上的點可以表示為(x y),空間的點可以表示為(x y z)。 表就是包含在括號中以空格隔開的一組相關(guān)值,例如:(1 2.2 3)、(“a” “sheep” “it”)、(2 “this”)這些都是表??梢酝ㄟ^list函數(shù)創(chuàng)建和處理表。 表有兩種基本類型:標(biāo)準(zhǔn)表和引用表。標(biāo)準(zhǔn)表是從左括號開始到配對的右括號結(jié)束。對于標(biāo)準(zhǔn)表的第一元素(0號元素)必須是一個合法的而且已存在的Au
20、tolisp函數(shù)。AutoCAD將按照此函數(shù)的功能完成其操作。引用表是在左括號前加一撇,表示不對表作求值處理。 表的大小用其長度來衡量的,也就是說表的長度要看括號內(nèi)的元素個數(shù)的多少,長度就是指表中頂層元素的個數(shù)。例如: (setq a 5) 表的長度為3 (setq b (+ c(/ d 2))) 表的長度為3 如果表中沒有任何元素,則稱表為空表,在Autolisp中用nil或()表示。 (3) 符號 Autolisp中的符號用于存儲數(shù)據(jù),因此“符號”和“變量”這兩個詞的意思相同,可以相互交換使用。在Autolisp中,不允許使用數(shù)字作為符號名的第一個字
21、符,字符的大小寫是等效的,符號的長度不限,所有的字符都有意義,但盡量不要超過6個字符的符號名,否則要占用大量的內(nèi)存,而且會減慢程序的運行速度,程序的可讀性差,不利于對程序的理解。 在Autolisp中,當(dāng)把一個值賦給一個符號時,也就是把這個符號約束為那個值,因此可以將不同類型的數(shù)據(jù)賦值給同一個符號,使它在不同時刻有不同的值,使得編程十分靈活而簡練。值得注意的是:用戶在編寫程序的時候,程序中定義的符號不能與系統(tǒng)中的函數(shù)和符號名相同,從而引起后面的定義取代前面已定義的混亂現(xiàn)象。 2.2.2 Autolisp的相關(guān)函數(shù) 函數(shù)是許多計算機(jī)語言的重要組成部分,在Autolisp語言中,函數(shù)也占
22、有非常重要的地位。進(jìn)行Autolisp語言程序設(shè)計時,通過眾多函數(shù)才能實現(xiàn)賦值、計算、輸入輸出以及編寫條件語句、循環(huán)語句和子程序等。Autolisp語言中以表的形式寫出所有的函數(shù),每個函數(shù)在程序中表現(xiàn)為一條或多條語句,執(zhí)行特定的功能,最后返回某種Autolisp數(shù)據(jù)。Autolisp預(yù)定義了140多個函數(shù),下面對在本次設(shè)計用得較多的函數(shù)作一下介紹。 (1) 賦值函數(shù) 賦值函數(shù)是Autolisp的基本函數(shù),它將表達(dá)式的值賦給符號,并可以同時將多個表達(dá)式的值分別賦給多個符號。Set和setq函數(shù)用于為一個或多個變量賦值。其格式為: (setq <符號><值或表達(dá)式>[<符號><值或表達(dá)式>
23、]……) 它將表達(dá)式的值賦給符號,并返回最后一個表達(dá)式的值。例如: (setq a 125);把125賦給a,返回125。 (setq b 26 c 4.7);b值為26,c值為4.7,返回4.7。 (setq s “to”);s為字符串變量,其值為to,返回值為to。 (setq ab (2 4));ab的值為表(2 4),返回(2 4)。 表達(dá)式(setq x nil)和(setq y nil)則表示釋放變量x和y所占用的內(nèi)存空間。 Setq函數(shù)也可以與另一個函數(shù)連接為變量賦值。例如: (setq p1(getpoint “enter start point:”)) (
24、2) 計算函數(shù) 在Autolisp中絕大多數(shù)編程和數(shù)學(xué)運算中經(jīng)常使用計算功能函數(shù),在其中可以使用加、減、乘、除函數(shù),角度的正弦、余弦,反正切等不同功能的計算函數(shù)。 計算函數(shù)的格式為:(運算符 運算數(shù)1 運算數(shù)2 運算數(shù)3……) 這里運算符一定要放在最前面,這不同于一般數(shù)學(xué)計算表達(dá)式。運算符與運算數(shù)之間以及運算數(shù)與預(yù)算數(shù)之間至少要有一個空格。例如: 求和函數(shù):(+ 1 3);返回4 差函數(shù):(- 10 2 4);返回4 ,在差函數(shù)運算中,如果運算數(shù)超過兩個,則第一個數(shù)中減去后面所有數(shù)的和。 乘函數(shù):(* 0.4 3 -2);返回2.4 除函數(shù):(/ 1000 5);返回200
25、 求余函數(shù):(rem 7 3);返回1 指數(shù)函數(shù):(EXP 10);返回2.718282 自然對數(shù)函數(shù):(log 4.5);返回1.504077 平方根函數(shù):(sqrt 4);返回2 正弦函數(shù):(sin 1.0);返回0.841471(弧度) 余弦函數(shù):(cos 1.0);返回0.540302 反正切函數(shù):(atan 1.0);返回0.785398 (atan -3.0 2.0);返回0.982793(即返回<數(shù)1>/<數(shù)2>的反正切值),反正切函數(shù)的返回值弧度范圍為-π到+π。 (3) 邏輯函數(shù) 邏輯函數(shù)的返回值只有T(真,即非零)和nil(假,即零)兩種。邏輯函數(shù)有:
26、 (not <表達(dá)式>);返回表達(dá)式邏輯非 (null <表達(dá)式>);當(dāng)表達(dá)式為nil時返回T,否則返回nil。 (or <表達(dá)式1><表達(dá)式2>……);其中如果至少有一個表達(dá)式值為T,則函數(shù)的值為T,若個表達(dá)式的值均為nil,則函數(shù)的值為nil。 (and <表達(dá)式1><表達(dá)式2>……);返回一系列表達(dá)式的邏輯“與”,該函數(shù)對表達(dá)式從左至右求值,如有一個表達(dá)式的值為nil,則停止求值并返回nil,當(dāng)對所有表達(dá)式求值的結(jié)果都不為nil時才返回T。 (4) 條件執(zhí)行函數(shù) 條件執(zhí)行函數(shù)有兩種,其格式為: 第一種:(if<測試式><表達(dá)式1>[<表達(dá)式2>]) 該函數(shù)當(dāng)測試式為T時,
27、執(zhí)行表達(dá)式1,否則執(zhí)行表達(dá)式2,當(dāng)沒有表達(dá)式2時,如果測試式為nil,該函數(shù)返回nil.否則返回表達(dá)式1的值。 例如:(if(> a b)(setq c 3)(setq c 4));當(dāng)a>b,c值為3,否則c值為4。 第二種:(cond (<測試式1><表達(dá)式1>)(<測試式2><表達(dá)式2>)……) 該函數(shù)接管任意數(shù)目的表作為變元,它一次對各測試式進(jìn)行計算,一旦該式不為nil,則執(zhí)行后面的表達(dá)式而不再測試以后的式子。 (5) Autolisp自定義函數(shù) 用戶可以利用defun函數(shù)在Autolisp中定義自己的函數(shù)。一旦能完成定義,這些函數(shù)可以同標(biāo)準(zhǔn)函數(shù)一樣在AutoCAD命令提示行
28、、Visual lisp控制臺提示行或者是其它Autolisp表達(dá)式中使用。 其語法格式如下: (defun函數(shù)名(參數(shù)表/局部變量) (表達(dá)式1) (表達(dá)式2) ) 該函數(shù)可以有一個變量表和局部變量表,也可以沒有變量而只使用一對空括號。Defun函數(shù)本身返回它所定義的函數(shù)名稱,而調(diào)用defun所定義的函數(shù)則將返回該定義函數(shù)中的最后一個表達(dá)式的值。前面表達(dá)式不返回值,只是完成預(yù)定操作。局部變量用于函數(shù)的內(nèi)部,與本函數(shù)之外不發(fā)生任何聯(lián)系。在函數(shù)體內(nèi)部可以改變變量表中的符號或表的值,但是不會改變調(diào)用該函數(shù)時作為實際參數(shù)傳遞變量表的那些符號或表的值。 例如:(defun
29、 add 2(x) (+ x 2) ) 這是一個定義加2的函數(shù),調(diào)用(add 2 x),返回其加2 的結(jié)果。 值得注意的是:不能將Autolisp的內(nèi)部函數(shù)名和內(nèi)部符號名用做用戶定義的函數(shù)名,因為這將使Autolisp預(yù)定義的內(nèi)部函數(shù)不能使用。 用戶還可以使用defun定義AutoCAD中新的命令。通過定義新的命令,能夠用某些特定的命令完成一些特殊工作。 其語法格式如下: (defun C:命令名()表認(rèn)式…) 其中,“命令名”為所要定義的新命令的名稱,它前面的“C:”必須有,命令名后面必須帶一個沒有形參的變元素。 例如,我們定義一個函數(shù)畫一個圓: (defu
30、n c:circle() (setq point (getpoint“enter centerpoint:”)) (setq radius (getpoint“enter radius:”)) (command "circle" point radius) ) 這樣,circle就成為AutoCAD的一個新命令。使用時和其它任何AutoCAD的命令一樣,只需在命令提示符下鍵入該命令名circle即可,然后選取一點,再輸入半徑值,一個圓就可以完成了。 2.3 加載和運行Autolisp程序 Autolisp程序通常有兩個相關(guān)的名稱:程序文件名和函數(shù)名。所
31、有的Autolisp文件都以.lisp為文件擴(kuò)展名。在一個相同的Autolisp程序文件中可以有一個或多個函數(shù)定義。要運行一個函數(shù),定義該函數(shù)的Autolisp程序文件必須被加載。在Visual lisp文本編輯器窗口裝載一個Autolisp程序以如下操作過程完成: (1) 確保包含.lisp程序的文本編輯器窗口是激活的。 (2) 在Visual lisp界面中選擇“工具”→“加載編輯器中的文字”選項,或者直接在工具欄上點擊“加載活動編輯器窗口”按鈕。Visual lisp在控制臺窗口顯示一個程序已被加載的信息。 (3) 在控制臺里輸入帶括號的函數(shù)名稱,并回車或者在AutoCAD窗
32、口界面輸入被裝載的load函數(shù)名,則在圖形命令窗口提示數(shù)據(jù)響應(yīng)情況。 如果用戶想要使用Visual LISP,必須首先與AutoCAD中的圖形和命令窗口進(jìn)行交互來響應(yīng)程序的提示。當(dāng)Visual LISP將控制權(quán)交給AutoCAD時,如果AutoCAD被最小化了,那么用戶需要手工來恢復(fù)和激活窗口,因為Visual LISP不能自動恢復(fù)AutoCAD窗口。 打開AutoCAD軟件,可以在命令提示下輸入vlisp或在AutoCAD菜單中選擇“工具”→“AutoLISP”→“Visual LISP編輯器”。如圖2-1所示。 圖2-1 AutoLISP編輯器界面
33、 第三章 參數(shù)化設(shè)計程序編制過程 3.1 圖形及參數(shù)分析 (1) 圖形分析 圖3-1 滾珠絲杠螺母副裝配圖 圖3-1所示是數(shù)控車床滾珠絲杠螺母副的二維視圖,由主視圖、左視圖組成,其中主要元素包括線、圓、圓弧、長度標(biāo)注、直徑標(biāo)注等構(gòu)成,那么在用Autolisp編寫程序時要涉及到圖形的每個細(xì)節(jié)。繪圖時要按照AutoCAD的手工繪圖方式一樣選擇確定圖層,顏色以及線型、線寬等。因此依照上面的圖形結(jié)構(gòu)可以應(yīng)用Autolisp 的line(畫線命令),arc(畫圓弧命令),circle(畫圓命令)。無論是線還是圓,在繪圖過程中都要涉
34、及到點,那么便可以通過定位點來定位圖中各個元素,用Command函數(shù)組織定點,連接直線,畫圓。左視圖的6個Φ10圓均勻環(huán)形分布,那么在編程序時可以使用array(列陣)的命令作圖,從而減少定點個數(shù),不容易引起點與點之間的混亂,使程序顯得簡潔明了。 (2) 參數(shù)分析 數(shù)控機(jī)床的滾珠絲杠螺母副的參數(shù)設(shè)置見圖3-2和表3-1所示。 圖3-2 滾珠絲杠螺母副的參數(shù)圖 序號 參數(shù)名 含義 初值(mm) 1 x 繪圖起點的橫坐標(biāo) 500 2 y 繪圖起點縱坐標(biāo) 600 3 d0 滾珠絲杠公稱直徑 32
35、 4 d1 滾珠絲杠大徑 31.1 5 d2 滾珠絲杠底徑 28.9 續(xù)表3-1 6 d3 軸頸直徑 25 7 d4 滾珠直徑 2.381 8 L 滾珠絲杠總長度 170 9 l 滾珠絲杠螺紋長度 130 10 l1 軸頸長度 20 11 d 7 螺母的大徑 76 12 d 8 螺母節(jié)圓直徑 63 13 d 9 螺母右部分直徑 50 14 d 10 螺母上螺栓孔直徑 10 15 d 11 螺栓公稱直徑 6 16 a 螺栓孔的其起始角度 60 17 p 滾珠絲杠的導(dǎo)程 4 表3
36、-1 滾珠絲杠零件圖參數(shù)明細(xì) 結(jié)合以上的參數(shù),設(shè)計對話框,設(shè)計參數(shù)名以便將用戶輸入的數(shù)據(jù)參數(shù)傳入AutoLISP程序的相應(yīng)代碼中。在上述參數(shù)中以變量形式存在由用戶自定義的x、y二維點,把它作為基點,通過對直線、圓、圓弧的變量參數(shù)尺寸計算、分析確定點。結(jié)合AutoLISP語言的編程命令,如list(創(chuàng)建表)、atof(數(shù)據(jù)類型轉(zhuǎn)換)、相關(guān)的setq(賦值函數(shù))、command函數(shù)和加、減、乘、除的計算函數(shù)等進(jìn)行編程。 一張完整的圖紙當(dāng)然也少不了圖形的尺寸標(biāo)注和圖框的繪制,那么也要結(jié)合上述變量參數(shù)編制尺寸標(biāo)注程序和不同型號圖框的繪制程序。 3.2 菜單設(shè)計 針對數(shù)控車床滾珠絲杠螺母的C
37、AD二次開發(fā),在AutoCAD中的標(biāo)準(zhǔn)菜單中不包含用戶使用該項的菜單命令。為了實現(xiàn)菜單與lisp程序連接調(diào)用對話框進(jìn)行交互式操作,那么就要自定義菜單或是在菜單中添加所需的命令。 A utoCAD的主控界面菜單都是通過菜單文件來定義的。用戶可以修改菜單文件或創(chuàng)建自己的菜單。通過編輯菜單文件中的文本,可以定義菜單項的外觀和位置。菜單項可以包含CAD命令或AutoLISP程序。 依照該課題的設(shè)計要求建立下拉式菜單的具體步驟如下: (1) 決定所要增加的菜單的位置,即決定菜單在屏幕上顯示的位置或在圖形輸入的區(qū)域。 (2) 用Visual LISP編輯器編輯用戶自己的菜單文件,其文件
38、擴(kuò)展名必須是.mnu,然后存在當(dāng)前子目錄下。 (3) 在命令行中輸入menuload,將自定義菜單進(jìn)行裝載。 (4) 將加載后的自定義菜單插入到AutoCAD中的標(biāo)準(zhǔn)菜單中。 在對話框中單擊用戶要編譯的菜單文件名并拾取屏幕上會顯示出用戶菜單的內(nèi)容。選擇其中的菜單項,“確定”選項,系統(tǒng)開始編譯。編譯完成后,就可實現(xiàn)用戶定義的功能。 要實現(xiàn)菜單繪圖,則需要將菜單和.lisp程序連接,才能生成符合要求的繪圖菜單。 設(shè)計的菜單程序代碼如下: ***POP1 ***USER [參數(shù)化繪圖] [繪制絲杠圖] ^C^C^P(load" load_sg");load_sg;^P [
39、繪制螺母圖] ^C^C^P(load" load_lm");load_lm;^P [繪制螺母副圖] ^C^C^P(load "load_lmf");load_lmf;^P [繪制圖框]^c^c^p(load "tk");tk;^p [取消] ^C 其中,POP1為定義第一個下拉菜單,USER為下拉菜單的主菜單名,^C^C指連續(xù)兩次ESC鍵,^P為控制菜單的回顯狀態(tài)。(load" load_sg")用于加載load_sg.lsp程序文件。利用上面菜單的定制方法,可對己有的菜單進(jìn)行添加與刪除操作,達(dá)到用戶操作方便實用的目的。新增用戶菜單后的AutoCAD菜單如圖3-3所示。 圖3
40、-3 新增用戶菜單后的AutoCAD菜單 3.3 對話框設(shè)計 對話框是現(xiàn)在許多軟件進(jìn)行人機(jī)交互的常用方法。它簡捷、直觀,給用戶提供了更多的信息和選擇,大大的提高了計算機(jī)的擬人化程度,方便而直觀地實現(xiàn)程序設(shè)計時的數(shù)據(jù)傳輸和信息傳輸。在AutoCAD環(huán)境下設(shè)計的對話框可以采用對話框控制語言DCL編寫,DCL以ASCII文件形式定義對話框,是一種非過程的對象描述語言,它以非圖形的方式描述對話框的觀賞屬性和功能屬性。設(shè)計對話框講究美觀和功效性,用戶可以按照自己所希望的任何順序輸入。 AutoCAD中的對話框是由自身的框架以及各種控件所組成,對話框控件的屬性和布局都是由DCL文件定義的。用戶只
41、需提供最基本的位置信息,AutoCAD就可以自動確定對話框的大小和部件的布局。在進(jìn)行實際設(shè)計中,其控件的類型已經(jīng)被可編程對話框(PDB)功能模塊預(yù)定義了,那么在編程過程中可以按照其預(yù)定義的功能選擇控件的編組,進(jìn)行列分配、添加邊框等,這樣便可以創(chuàng)建復(fù)雜的控件也稱組件,使得對話框的布局有序美觀。 DCL 對話框本身并不能單獨運作,它僅僅是用于規(guī)劃對話框的屏幕畫面和接受用戶輸入數(shù)據(jù)而已, 本身并不具有數(shù)據(jù)處理的能力,真正的數(shù)據(jù)處理功能全部是在 AutoLisp 程序里執(zhí)行。利用 AutoLisp對話框的驅(qū)動程序,實現(xiàn)對話框的裝入、顯示及卸載等功能。AutoL isp 語言專門提供一個函數(shù)actio
42、n_tile處理用戶的動作, 然后載入運行對話框的AutoL isp 程序。 本課題是以滾珠絲杠螺母副為研究對象,下面以絲杠為例,根據(jù)相關(guān)參數(shù)確定控件組成需要的對話框。在Visual lisp編輯器中輸入如下代碼,并保存為c_sg.dcl文件。其程序代碼為: c_sg:dialog{ //定義該對話框的名稱c_sg label="絲杠主視圖"; //定義該對話框的標(biāo)題 :text{ //開始定義字符串 label="先輸入數(shù)據(jù),然后單擊開始";//添加提示性語句,提醒用戶操作順序 } :
43、boxed_row{ //第一個行框 label="輸入絲杠的起始點"; //指定行框的標(biāo)題 :edit_box{ //輸入橫作坐標(biāo)的編輯框 label="X軸坐標(biāo)(單位:mm)"; //指定編輯框的標(biāo)題 key="cpx"; //設(shè)置鍵值 fixed_width=true; //啟動“使用者自定義寬度”功能 width=5; //指定編輯框的寬度 align
44、ment=centered; } :edit_box{ //輸入縱坐標(biāo)的編輯框 label="y軸坐標(biāo)(單位:mm)"; key="cpy"; fixed_width=true; width=5; alignment=centered; } } //結(jié)束第一個行框定義 :boxed_row{ //第二個行框 label="輪廓尺寸參數(shù)"; :edit_box{ //輸入絲杠全長的編輯框 l
45、abel="絲杠全長(單位:mm)"; key="qc"; edit_limit=20; edit_width=5; } :edit_box{ //輸入絲杠公稱直徑編輯框 label="公稱直徑(單位:mm)"; key="zj"; edit_limit=20; //指定編輯框可用的最大字符位數(shù) edit_width=5; //指定編輯框的寬度 } :edit_box{ //輸入絲杠導(dǎo)程的編輯框 label="基本導(dǎo)程(單位:mm)";
46、 key="dc"; edit_limit=20; edit_width=5; } //結(jié)束編輯框定義 } //結(jié)束第二個行框定義 :boxed_row{ //第三個行框 :edit_box{ //輸入絲杠外徑編輯框 label="絲杠外徑(單位:mm)"; key="wj"; edit_limit=20; edit_width=5; } :edit_box{ //輸入絲杠底徑編輯框
47、 label="絲杠底徑(單位:mm)"; key="dj"; edit_limit=20; edit_width=5; } :edit_box{ //輸入滾珠直徑編輯框 label="滾珠直徑"(單位:mm); key="gzj"; edit_limit=20; edit_width=5; } } :boxed_row{ //第四個行框 label="軸頸參數(shù)"; :edit_box{ //輸入軸頸長度編輯框 label="軸頸長度(單位:mm)"; key="zc"
48、; edit_limit=20; edit_width=5; } :edit_box{ //輸入軸頸直徑編輯框 label="軸頸直徑(單位:mm)"; key="zz"; edit_limit=20; //指定編輯框可用的最大字符位數(shù) edit_width=5; //指定編輯框的寬度 } } :boxed_row{ //第五個行框 :button{ //定義“開始”按鈕 label="開始"; key="begin";
49、 //設(shè)置鍵值 fixed_width=true; //啟動“使用者自定義寬度”功能 width=5; //指定編輯框?qū)挾? } ok_only; //設(shè)置“確定”按鈕 } //結(jié)束第五個行框定義 } //結(jié)束整個對話框定義 將程序加載運行的對話框如圖3-4所示。 圖3-4 滾珠絲杠輸入?yún)?shù)對話框 3.4 編制Autolisp繪圖程序 Autolisp程序的編制是整個設(shè)計的核心部分,它涉及到
50、菜單的連接、對話框的調(diào)用功能的實現(xiàn),零件圖形的完整繪制過程,他們都必須在lisp程序中完成。下面介紹一下在編程中應(yīng)用較多的函數(shù)。 (1) command函數(shù) 函數(shù)格式:(command[命令][參數(shù)子命令]……) 功能:直接向AutoCAD的“command”發(fā)送命令。 本函數(shù)在Autolisp內(nèi)部執(zhí)行AutoCAD命令,并總返回nil。函數(shù)后的[命令][參數(shù)或子命令]等即是在AutoCAD圖形編輯狀態(tài)的提示符command下輸入的命令、數(shù)據(jù)及選擇項(子命令)等。具體傳送的參數(shù)應(yīng)根據(jù)調(diào)用的AutoCAD命令序列的要求來決定,其中,AutoCAD的命令及選擇項等都是作為字符串來傳送的。
51、 所執(zhí)行命令后跟的參數(shù)它們可以是字符串、實數(shù)型、整數(shù)型或點表,但這必須與所要執(zhí)行的命令所需的參數(shù)類型一致。 例如:命令:(command ”circle””100 100” 10) Circle指定畫圓,100,100指定圓的圓心,10指定圓的半徑,執(zhí)行上面語句就會在以(100,100)坐標(biāo)為圓心,以10為半徑畫圓。 (2) atof函數(shù) 該函數(shù)是一種參數(shù)類型轉(zhuǎn)換函數(shù),結(jié)構(gòu):atof<字符串>,該函數(shù)的返回將<字符串>轉(zhuǎn)換成實數(shù)型的結(jié)果。 例如:(atof “50”);返回50.000000 (3) princ函數(shù) 該函數(shù)屬于輸出函數(shù),基本格式為:(princ<表達(dá)式>[<文
52、件描述符>])。該函功能就是將程序運行的結(jié)果輸出到AutoCAD界面上。函數(shù)princ和prinl基本相同,唯一的差別在于princ能夠?qū)崿F(xiàn)<表達(dá)式>中控制符的控制功能。例如: (prinl “\t Hello!”);打印 “\t Hello!”,返回“\t Hello!” (princ “\t Hello!”);打印 返回 “Hello!” (4) polar函數(shù) 該函數(shù)為求值函數(shù),基本格式為:(polar<基點><角度><距離>),此函數(shù)返回一個點的坐標(biāo),該點與<基點>之間的距離為<距離>,該點和<基點>的連線與X軸正方向夾角為<角度>,(以弧度為單位,夾角按逆時針方向
53、度量)。 (5) 編制絲主視圖和側(cè)視圖程序 在文本編輯器中輸入以下代碼,保存為文件名load_sg.lsp的文件。 ;;;;;;;;;;;;;;;;;;;;;主函數(shù);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun c:load_sg(/ dcl_id x y l l1 d0 d1 d2 d3 d4 d5 d6 p p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 p16 p17 p18 p19 p20 p21 p22 p23 p24 p25 p26 p27 p28 p29 p30 p31 p32
54、 pl pr pz px pl1 pl2 pr1 pr2 r);;;;給定變量以及根據(jù)絲杠 參數(shù)進(jìn)行分析所確定的點的變量 (setq dcl_id (load_dialog "c_sg.dcl"));;;將c_sg.dcl的程序通過load_dialog 來加載這個dcl文件 (if (not(new_dialog "c_sg" dcl_id))(exit));;;調(diào)用new_dialog顯示指定對話框 (action_tile "begin" "(data_manage)");;;;;;;;通過設(shè)置控件值來初始化對話框,調(diào)用action_tile函數(shù)來指定與控件相關(guān)聯(lián)的Autoli
55、sp表達(dá)式 (start_dialog);;;;;;;;;;調(diào)用該函數(shù)將控制權(quán)交給對話框,以便用戶進(jìn)行數(shù)據(jù)輸入 (unload_dialog dcl_id);;;;;;結(jié)束對話框時,在調(diào)用該函數(shù)來卸載DCL程序 (drawl);;;;;;;;;;;;;;;;;;調(diào)用繪圖子程序即主視圖和側(cè)視圖 (princ);;;;;;;;;;;;;;;;;;;;;輸出 ) (defun data_manage() (setq x (atof(get_tile "cpx")));;將對話框中輸入的參數(shù)轉(zhuǎn)化成實數(shù)型 (setq y (atof(get_tile "cpy"))) (
56、setq p0 (list x y ));;;;;;;設(shè)置用戶繪圖起點 (setq l (atof(get_tile "qc"))) (setq l1 (atof(get_tile "zc")));;將對話框中輸入的參數(shù)轉(zhuǎn)化成實數(shù)型 (setq d0 (atof(get_tile "zj"))) ┇ (setq p (atof(get_tile "dc"))) (setq p1 (list x (+ y (/ d3 2))));;;通過函數(shù)分析,計算確定繪圖相關(guān)點的位置,以便連接成直線或是確定圓形畫圓 (setq p2
57、(list (- x (- l1 2)) (+ y (/ d3 2)))) (setq p3 (list (- x l1)(+ y(-(/ d3 2)2)))) (setq p5 (list (- x(- l1 2)) (- y(/ d2 2)))) (setq p6 (list x (- y(/ d3 2)))) (setq p7 (list x (- y(- (/ d1 2)2)))) ;;;設(shè)置繪制絲杠主視圖的各點 ┇ (setq p27 (list (+ x (- l 2))(- y (/ d1 2)))) (setq p28 (list (+ x
58、 (- l 2))(- y (/ d0 2)))) (setq p29 (list (+ x (* 0.75 l))(+ y (/ d1 2)))) (setq p30 (list (+ x (+ (* 0.75 l )d4))(+ y (/ d1 2))));;;;;;設(shè)置繪制絲杠螺紋及滾珠的點 (setq p31 (list (+ x (+ (* 0.75 l )(* 1.5 d4))(- y (/ d1 2))))) (setq p32 (list (+ x (+ (* 0.75 l )(* 2.5 d4))(- y (/ d1 2)))))
59、 (setq r (/ d4 2)) (setq d5(- d3 4)) (setq d6(- d1 4)) (setq pl (list (- x(+ l1 5))y));;;;;;;;;;;;;確定主視圖中心線位置 (setq pr (list (+ x (+ 5(+ l l1)))y)) (setq pz (list (+ x (+ 100 (+ l l1)))y));;;;;確定側(cè)視圖的繪制中心 (setq px (polar pz (+ alf (* 0.5 pi))(/ d2 2))) (setq pl1 (polar pz (+
60、alf pi)(+ 5 (/ d0 2))));定側(cè)視圖中心線位置 (setq pr1 (polar pz alf (+ (/ d0 2)))) (setq pl2 (polar pz (+ alf (* 0.5 pi))(+ 5 (/ d0 2)))) (setq pr2 (polar pz (+ alf (* -0.5 pi))(+ 5 (/ d0 2)))) ) (defun drawl() (command "layer" "m" 0 "c" 1 "" "");;設(shè)置圖層0及線條顏色為紅色 (command "linetype" "s" "center
61、" "");;設(shè)置線型為中心線 (command "lweight" 0);;;;;;;;;;;;;;;;設(shè)置當(dāng)前線寬為0 (command "line" pl pr);;;;;;;;;;;;;;連接中心線 (command "layer" "m" 1 "c" 2 "" "");;;;;設(shè)置圖層1,線條顏色為白色 (command "linetype" "s" "bylayer" "");設(shè)置當(dāng)前線隨層 (command "lweight" 0.3);;;;;;;;;;;;;設(shè)置線條寬度為0.3 (command "line" p0 p1 "");;;;;;
62、;;;;;;連接個點,畫粗實線 (command "line" p1 p2 "") ┇ (command "line" p16 p27 "") (command "line" p13 p19 "") (command "line" p7 p11 "") (command "linetype" "s" "bylayer" "");;;;;;設(shè)置當(dāng)前線隨層 (command "lweight" 0);;;;;;;;;;;;;;;;;;;;;;設(shè)置線寬為0 (command "line" p14 p15 "");;;;;;;;;連接
63、點畫細(xì)實線 (command "line" p12 p17 "") (command "line" p8 p26 "") (command "line" p10 p28 "") (command "line" p29 p31 "") (command "line" p30 p32 "") (command "arc" p29 "e" p30 "r" r);;;;;畫絲杠與滾珠連接的圓弧 (command "arc" p30 "e" p31 "r" r) (command "layer" "m" 0 "c" 1 "" "");設(shè)置圖層0及線條顏色
64、紅色 (command "linetype" "s" "center" "");設(shè)置中心線 (command "lweight" 0);設(shè)置當(dāng)前線寬為0 (command "line" pl1 pr1 "");畫側(cè)視圖中心線 (command "line" pl2 pr2 "") (command "linetype" "s" "bylayer" "");設(shè)置當(dāng)前線隨層 (command "lweight" 0.3);;;;;;;;;;;;;;;設(shè)置線寬為0.3 (command "circle" pz "D" d1 "" );;;;;;畫側(cè)視圖的各圓
65、 (command "circle" pz "D" d3 "" ) (command "circle" pz "D" d5 "" ) (command "circle" pz "D" d6 "" ) (command "linetype" "s" "bylayer" "");;;設(shè)置當(dāng)前線隨層 (command "lweight" 0);;;;;;;;;;;;;設(shè)置線寬為0 (command "ciecle" pz d0 "") (command "arc" "c" pz px "a" "270.0");;;;畫絲杠側(cè)視圖四分之三圓弧 (comman
66、d "layer" "m" 0 "on" "" "");;;;;;;;調(diào)用0圖層待命 ) 將程序加載并運行,其結(jié)果如圖3-5所示。 圖3-5 滾珠絲杠主、左視圖 3.5 尺寸標(biāo)注程序 零件圖紙的繪制少不了尺寸的標(biāo)注,那是反映所繪零件外形尺寸最直觀的條件。尺寸標(biāo)注包括長度尺寸標(biāo)注和直徑、半徑尺寸,角度尺寸標(biāo)注標(biāo)注。下面介紹AutoLISP語言尺寸標(biāo)注的相關(guān)命令。 (1) dinmlinear 命令 該命令是command函數(shù)調(diào)用標(biāo)注長度的命令。由于長度尺寸的標(biāo)注需要確定尺寸線是水平的還是垂直的,這些方向定位也是需要用命令來確定,那么dinmlinear命令常與表示指定方向的命令連用,來達(dá)到標(biāo)注的效果。 例如:對繪制的一條直線進(jìn)行標(biāo)注的程序代碼如下: (setq p1 (10 15) p2(20 30) p3(15 25)) (command "line"p1 p2 "") (command "dinmlinear" p1 p2 "h" p3) 通過這樣一條命令來標(biāo)注p1 p2 這條直線,其中p1、p2 表示的是這條直線的尺寸界線起點位置
- 溫馨提示:
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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。