王伯黎 張興蓉
摘 要:通過對AutoLISP語言特點的研究,探討了基于AutoLisp的AutoCAD參數(shù)化繪圖程序設計的基本步驟。以底板參數(shù)化繪圖為例,詳細闡述了應用DCL創(chuàng)建人機交流對話框,應用AutoLISP編寫參數(shù)化繪圖程序的具體過程。實踐證明,AutoLISP語言功能強大,易學易用,是重要的AutoCAD二次開發(fā)工具。
關鍵詞:AutoLISP;DCL;AutoCAD;參數(shù)化繪圖
1 概述
AutoCAD是美國AutoDesk公司開發(fā)的一個交互式繪圖軟件,它不僅具有強大的繪圖、編輯功能,還具有開放的體系結構,允許用戶通過內置的AutoLISP語言實現(xiàn)二次開發(fā)。在CAD的二次開發(fā)中,參數(shù)化繪圖是其中的一項,它可以讓設計者自己通過修改設計參數(shù)來制作產品零件的模型圖形。參數(shù)化繪圖已經從傳統(tǒng)的模式中擺脫出來,全面的簡化了使用者對零件模型的修改過程,從而提高了效率。
2 AutoLISP語言特點
AutoLISP是一種內嵌式表處理語言,是CAD開放式體系結構的一種體現(xiàn),同時也是LISP(List Processor)語言和CAD相結合的產物。AutoLISP語言不僅擁有普通的高級語言所具備的功能,而且還有普通的高級語言所不具備的強大的處理圖形的功能。它最大的好處在于語法簡單易懂,易于掌握,可直接調用幾乎全部AutoCAD命令,因此被廣泛應用于AutoCAD二次開發(fā)上。AutoLISP語言最典型的應用之一就是實現(xiàn)參數(shù)化繪圖程序設計。
3 參數(shù)化繪圖設計方案
3.1 繪圖對象的選擇
任何機器或部件都是由若干零件按一定的技術要求裝配而成。零件分為標準件和非標準件兩大類。標準件的結構和尺寸都由標準系列確定,通常由專業(yè)廠家生產;而非標準件的結構、形狀、大小等需要根據(jù)它們在機器或部件中的作用進行設計確定,據(jù)此畫出每個零件的零件圖,以便加工制造。
底板是箱體類零件的一個組成部分,主要起連接、固定零件的作用,一般由中心孔、定位銷孔、槽孔等組成,不同的零件,其底板的大小、形狀、定位銷孔的數(shù)量也不同,這些都可以通過改變程序中的設計參數(shù)來實現(xiàn)。在此,以非標準零件中常見的箱體類零件的矩形倒圓角底板為模型進行參數(shù)化繪圖設計,設計人員可以根據(jù)實際需要,輸入相應參數(shù),直接繪制出圖形文件。
3.2 參數(shù)化繪圖程序的設計程序
使用者按照參數(shù)對話框的提示,輸入與之相配合的參數(shù),生成所需要的圖形圖像,就叫做參數(shù)化繪圖。針對參數(shù)化繪圖的程序所研究的步驟是:研究所要繪制的零件的結構特征,確定繪圖參數(shù);根據(jù)繪圖參數(shù),設計人機交互界面;按照圖形需要,編輯繪圖程序;加載相關LISP程序,繪制所需圖形。
圖1 底板主視圖
4 參數(shù)化繪圖設計思路
4.1 主要設計參數(shù)
在工程的設計過程中,所有的圖形文件都可以分解為點、直線、圓弧、圓這四個基本的圖形。在二維的圖形中,幾何信息是代表圖形元素的關鍵點。比如點的坐標就是如此,它可以用不同的參數(shù)來代表,從而把這些參數(shù)的關系和信息編繪成程序,進而可以設計出無論是形狀還是結構都極為相似的模型產品,只要改變數(shù)據(jù)庫中的參數(shù),便可以生成不同大小尺寸的圖形。通過分析圖1所示的矩形倒圓角底板主視圖,根據(jù)圖形特點,確定將構成圖形的一組特定尺寸結構定義為參數(shù)化繪圖程序的繪圖參數(shù),用變量表示分別為:底板長度l 、底板寬度w、倒角半徑r、中心圓直徑d1、圓孔直徑d2、圓孔長度方向間距l(xiāng)s 、圓孔寬度方向間距ws。圖形中關鍵點也作為繪圖參數(shù),分別用變量P0~P12表示。
4.2 人機交互界面
根據(jù)矩形倒圓角底板的繪圖參數(shù),用DCL語言創(chuàng)建人機交互的對話框,如圖2所示。
(action_tile "cancel" "(done_dialog 0)")
(setq what_next(start_dialog))
(if(= what_next 1)(draw)))
(unload_dialog index_value)(princ))
(defun getdata();;;參數(shù)獲取子程序
(setq l (atof (get_tile "key_l")))
……
(setq ws (atof (get_tile "key_ws"))))
(defun draw();;;圖形繪制子程序
(command "limits" "" (list (* l 2) (* w 2)))
(command "zoom" "a")
(setq p0 (list 0 0))
(setq p1 (list l w))
(setq p2 (list (/ l 2) (/ w 2)))
(setq p3 (list (/ (- l ls) 2) (/ (- w ws) 2)))
(command "rectang" "f" r p0 p1)
(command "circle" p2 (/ d1 2))
……
(command "redraw"))
4.4 參數(shù)化繪圖程序運行結果分析
在程序運行時,用戶按對話框提示輸入尺寸參數(shù),程序自動進行坐標點的計算并繪制圖形,如圖3是兩組不同的參數(shù)輸入所繪制的圖形。由結果比較圖可見,利用參數(shù)化繪圖可實現(xiàn)基本結構相似的系列化零部件繪圖設計。
底板的參數(shù)化繪圖設計只是利用AutoLISP語言的一個實例,用AutoLISP編寫的程序可根據(jù)參數(shù)的不同,將原本需要逐點逐線的繪制,變成輸入?yún)?shù),由程序自動計算、運行,得到不同大小和形狀的圖形。由此推及其他,可見典型零件的參數(shù)化繪圖設計在產品設計中發(fā)揮了越來越重要的作用。
圖3 兩組不同參數(shù)繪制圖形結果比較
5 結論
參數(shù)化繪圖技術擺脫了交互式繪圖的弊端,在通用和標準化,以及系列化的機械產品設計等占據(jù)了很大的有利性,它不僅適用范圍廣泛,而且原理非常簡單,而且可靠性好,采用參數(shù)化繪圖可極大地節(jié)省工程師設計時間,提高工作效率和設計的準確性。
參考文獻:
[1]清漢計算機工作室.AutoCAD2000中文版綜合應用實例[M].北京:機械工業(yè)出版社,2000.
[2]郭慧.華東理工大學工程圖學研究室.機械制圖及CAD[M].上海:華東理工大學出版社,2012.