【摘 要】AutoLISP程序語言是AutoCAD的二次開發(fā)軟件之一。它應(yīng)用靈活,語法簡單易學(xué),具有強大的函數(shù)功能及繪圖功能。用戶通過Auto LISP程序的編寫來強化AutoCAD原有命令或是處理參數(shù)式繪圖,從而實現(xiàn)大幅度提高繪圖效率的目的?;贏utoLISP程序語言編寫的自動排樣程序比較全面的展示了AutoLISP語言的特點。并且在鈑金材料數(shù)控切割生產(chǎn)過程中發(fā)揮巨大作用,能夠最大限度的提高材料利用率及工作效率。
【關(guān)鍵詞】AutoLISP AutoCAD 二次開發(fā) 數(shù)控切割 自動排樣 邏輯判斷 陣列
1 AUTOLISP程序語言特點
AutoCAD應(yīng)用于機械設(shè)計、土木建筑、地理地圖、服裝設(shè)計等各個行業(yè)。但往往在應(yīng)對各行業(yè)相對獨特的繪圖需要時卻力不從心。而Auto LISP就是一種用來擴展AutoCAD功能、定制AutoCAD和開發(fā)AutoCAD的程序語言。用戶通過AutoCAD提供的程序應(yīng)用界面,以AutoCAD為平臺,利用AutoLISP語言發(fā)展特殊的應(yīng)用程序,實現(xiàn)獨有繪圖功能。
相比其他程序語言,Auto LISP具有其鮮明的特點:
語法非常簡單且風格獨特;
功能函數(shù)強大,除一般性的功能函數(shù)外,還擁有控制配合AutoCAD的特殊函數(shù),并可以直接調(diào)用執(zhí)行所有AutoCAD的命令;
撰寫的環(huán)境不挑剔,只要一般的窗口文本編輯軟件都適用;
直譯式程序,不用再作編譯,即寫即測,即測即用,馬上可以在AutoCAD中響應(yīng)效果。
鈑金材料數(shù)控切割生產(chǎn)中的自動排樣程序較為復(fù)雜,比較全面的展現(xiàn)了AutoLISP語言的特點。自動排樣程序的設(shè)計是為了滿足鈑金材料的數(shù)控切割過程中能夠最大限度的提高材料利用率及工作效率的需要。在自動排樣程序中將相對規(guī)則的零件劃分為圓形、三角形、平行四邊形、梯形四類。它們排樣程序設(shè)計的思路與方法大同小異,本文以三角形零件的自動排樣為例,介紹其程序設(shè)計的思路與方法。
2 程序設(shè)計思路與方法
2.1排錯主程序PAIYANG
為方便維護與除錯,程序共建立了4個模塊,分別為:排錯PAIYANG主程序、數(shù)據(jù)處理DATA子程序、初始化判斷PANDUAN子程序、陣列ARRAY子程序。
排錯PAILIAO主程序中具有進行總程序的統(tǒng)籌、調(diào)用功能,另外還具有排錯功能。在系統(tǒng)初始化之后,主程序立即進行數(shù)據(jù)計算及邏輯判斷,看材料尺寸是否與零件相匹配。如果不符合排樣的最基本要求則返回系統(tǒng)變量輸入狀態(tài),重新輸入變量進行排樣,避免程序死循環(huán)。流程圖見圖1。
2.2數(shù)據(jù)處理子程序DATA
數(shù)據(jù)處理DATA子程序主要完成零件圖形集的數(shù)據(jù)讀取和預(yù)處理并輸出,為進一步的排樣工作做準備。圖形預(yù)處理如圖2所示。
2.3初始化判斷子程序PANDUAN
程序采用單排法和旋轉(zhuǎn)混合算法計算出各種排料結(jié)果,并進行方案比較。在只采用單排算法時,有兩種排樣結(jié)果,即:橫向排樣與縱向排樣。在材料尺寸和零件尺寸相同的情況下,橫向單排與縱向單排的排樣總數(shù)可能相同也可能不同。程序的方案比較功能會在這種情況下自動的選擇排樣總數(shù)最大、材料利用率較大的一種排樣形式進行排樣。另外,在實際生產(chǎn)過程中,經(jīng)常會遇到這樣的情況,就是在進行完橫向單排或縱向單排以后,材料一邊的余量還較大,還可以通過零件圖形編輯轉(zhuǎn)換,在材料余量內(nèi)進行再排樣,顯然排樣結(jié)果會使材料利用率更大些。這就要求單排排樣與旋轉(zhuǎn)混合排樣結(jié)合起來,達到最佳的排樣結(jié)果,使材料利用率盡可能高。能夠旋轉(zhuǎn)組合排樣是這一程序軟件的主要優(yōu)勢之一,但也是該程序編制的主要難點之一。程序流程圖見圖3。
2.4陣列子程序ARRAY
本段程序采用正排和倒排分別陣列的方式來組成一個完整的排樣圖形。首先建立正排和倒排的基圖,然后根據(jù)計算結(jié)果陣列正排圖形,接著陣列倒排圖形。接下來對余量進行排樣。在進行完方案比較以后,將我們在前面作好的四種方向的基圖進行選擇,選擇合適的基圖,并按事先算出的基點插入圖形。當然,如果算出的余量不足以再排樣,那么這一步省略。然后進行余量排樣,陣列選定的基圖。流程圖見圖4。
從ARRAY子程序流程圖中可以看出,這個程序斷的邏輯判斷多、程序執(zhí)行的步驟多。但大體上四種排樣過程大致相同,主要區(qū)別是主次嵌套。
ARRAY子程序主要進行排樣的過程,這也是該系統(tǒng)的核心部分。程序思想:采用逐次If嵌套、逐次比較排樣的方法。如果排樣總數(shù) amass1為四種狀況下排樣總數(shù)的最大值,則進行單排排樣賦值準備工作。然后先進行單排,在單排之前先判斷需陣列的列數(shù)和行數(shù),如果兩者至少有一項大于1則進行陣列,否則將不進行陣列。在進行完單排排樣之后,判斷余量是否可進行排樣,如果可以再排樣,則進行旋轉(zhuǎn)排樣。在進行旋轉(zhuǎn)排樣之前仍需判斷所需陣列的行數(shù)和列數(shù),如果兩者之一大于1則進行陣列,否則將不進行陣列。如果排樣總數(shù)Amass1不是四種情況下總數(shù)的最大值,則進行Amass2 If判斷。依次循環(huán)至最后的Amass4排樣。
3 程序運行實例
首先繪制零件圖形,如圖5所示。調(diào)用程序后在“排樣”對話框中輸入“材料長度”、“材料寬度”、“圖樣間距”的數(shù)值,并點擊“OK”按鈕,如圖6所示。
得到排樣圖形及排樣結(jié)果,如圖7、圖8所示。
4 結(jié)束語
基于AutoLISP語言的自動排樣程序操作簡單,最大限度提高材料利用率的同時,排樣效率及排樣準確性都是原始工藝中技師依靠經(jīng)驗及簡單計算的手工排樣所無法比擬的。
參考文獻:
[1]吳永進,林美櫻.《AutoLISPDCL基礎(chǔ)篇》[M].北京:中國鐵道出版社,2003.
[2]藍屹生.《AutoLISP學(xué)習指導(dǎo)》[M].北京:中國鐵道出版社,2003.
[3]沈旭,宋正和.《AutoCAD2010實用教程》[M].北京:清華大學(xué)出版社,2011.