趙龍
摘 要:在地圖上無法按照比例表示的一些地物,統(tǒng)稱為獨立地物。它一般高出于其他建筑物,具有明顯的方位意義,對地圖定向、判斷方位等意義較大。獨立地物因無法依真型顯示,所以大都用幾何符號來表示。在地圖上,獨立地物符號必須精確的表示地物位置,符號要規(guī)定定位點,便于定位。AutoLISP語言是嵌套在AutoCAD內(nèi)部,將LISP語言和AutoCAD有機結(jié)合的產(chǎn)物。它具有強大的開發(fā)功能,運用AutoLISP語言編寫程序可以方便、快捷的繪制自己所需要的獨立地物符號。
關(guān)鍵詞:AutoLISP;AutoCAD;編程;獨立地物符號
LISP(List Processing Language)語言是人工智能領(lǐng)域中廣泛采用的一種程序設(shè)計語言,是一種計算機表處理語言。LISP語言處理的對象是符號表達式,因此也被成為符號式語言。LISP語言的程序和數(shù)據(jù)都是以符號表達式的形式來表示的,因此,一個LISP程序可以把另一個LISP程序作為它的數(shù)據(jù)來處理。LISP語言語法簡單,數(shù)據(jù)類型豐富,編寫程序比較方便,靈活性較高。LIPS語言的內(nèi)部數(shù)據(jù)結(jié)構(gòu)非常適合用表來表示,并且表中還可以嵌套其他的表,這種構(gòu)成表的符號表達式放在一對括號中。利用LISP語言很容易定義和調(diào)用用戶編寫的函數(shù),這使得LISP語言的編程十分靈活。AutoLISP語言嵌套于AutoCAD內(nèi)部,它是LISP語言和AutoCAD有機結(jié)合的產(chǎn)物。AutoLISP是為二次開發(fā)AutoCAD專門設(shè)計的編程語言。AutoLISP語言嵌入AutoCAD之后,AutoCAD不再只是交互式的圖形繪制軟件,而成為了真正能夠進行計算機輔助設(shè)計、繪圖的CAD軟件。
AutoLISP具有以下顯著特點:
(1)在普通LISP語言的基礎(chǔ)上,AutoLISP語言擴充了許多適用于CAD應(yīng)用的特殊功能,它是一種只能以解釋方式運行于AutoCAD內(nèi)部的程序設(shè)計語言。
(2)在AutoLISP語言中,許多成分都是以函數(shù)的形式給出的,其中沒有語句概念或其他語法結(jié)構(gòu)。執(zhí)行AutoLISP程序?qū)嵸|(zhì)上就是執(zhí)行一些函數(shù),再調(diào)用另一些函數(shù)。
(3)AutoLISP把數(shù)據(jù)和程序統(tǒng)一表達為表結(jié)構(gòu),就可以把程序當(dāng)做數(shù)據(jù)來處理,也可以把數(shù)據(jù)當(dāng)做程序來執(zhí)行。
(4)AutoLISP語言中的程序運行過程就是對函數(shù)的求值過程,是在對函數(shù)的求值過程中實現(xiàn)了函數(shù)的功能。
(5)AutoLISP語言的功能函數(shù)強大,除了具有一般性的功能函數(shù)外,還有為數(shù)不少的控制配合AutoCAD的特殊函數(shù)。而且AutoLISP可執(zhí)行所有的AutoACD指令,并使用所有的AutoCAD系統(tǒng)變量。
(6)AutoLISP語言是一種解釋型語言,程序不需要再做編譯,“即寫即測”,“即測即用”,可以立即在AutoCAD中得到相應(yīng)的成果。
(7)AutoLISP語言的主要控制結(jié)構(gòu)采用遞歸方式。遞歸方式的使用,使得程序設(shè)計簡單易懂。
使用AutoLISP語言編制一些實用繪圖程序,可以保障繪圖的精度、提高繪圖效率。獨立地物是地形圖(尤其大比例地形圖)的重要地物元素,在地形圖繪制中獨立地物的數(shù)量往往較多,獨立地物精確合理的繪制是地形圖繪制基本要求。一般情況下,繪圖軟件往往能夠提供多數(shù)獨立地物符號的繪制方法,但對一些較為特殊或生僻的獨立地物符號,繪圖軟件有時沒有繪制這種符號的功能。
下面介紹用AutoLISP語言編程,繪制《中國海圖圖式》中“海港航標(biāo)燈樁”的方法,該程序?qū)⒗L制一個外接圓直徑為3mm的紅色實心五角星,定位點在五角星中心。
(1)新建一個記事本文件,文件名改為HGDZ.lsp(注意:擴展名必須為.lsp),保存該文件;
(2)將下列代碼輸入到該文件中:
(defun C:wjx()
(setq pt0 (getpoint "\n插入點:"))
(setq sc (getint "\n輸入比例因子:"))
(setq pt1 (polar pt0 (angtof "90") (* sc 1.5)))
(setq pt2 (polar pt1 (angtof "-108") (* sc 1.0898)))
(setq pt3 (polar pt2 pi (* sc 1.0898)))
(setq pt4 (polar pt3 (angtof "-36") (* sc 1.0898)))
(setq pt5 (polar pt4 (angtof "-108") (* sc 1.0898)))
(setq pt6 (polar pt5 (angtof "36") (* sc 1.0898)))
(setq pt7 (polar pt6 (angtof "-36") (* sc 1.0898)))
(setq pt8 (polar pt7 (angtof "108") (* sc 1.0898)))
(setq pt9 (polar pt8 (angtof "36") (* sc 1.0898)))
(setq pt10 (polar pt9 pi (* sc 1.0898)))
(command "color" "T" '(255,0,0))
(command "pline" pt1 pt2 pt3 pt4 pt5 pt6 pt7 pt8 pt9 pt10 "c")
(setq s1 (entlast))
(command "_bhatch" "p" "solid" "s" s1 "" "")
)
(3)在AutoCAD中選擇菜單欄“工具”→“AutoLISP” →“加載應(yīng)用程序”菜單命令,彈出“加載/卸載應(yīng)用程序”對話框,找到步驟(1)創(chuàng)建的HGDZ.lsp,單擊“加載”按鈕,此時AutoCAD顯示已成功加載HGDZ.lsp。
(4)AutoCAD加載上述代碼文件后,在命令行輸入:wjx,命令行提示“插入點:”,在這個提示下輸入坐標(biāo)或單擊鼠標(biāo)左鍵在圖中拾取定位點坐標(biāo),按回車后命令行提示“輸入比例因子:”,輸入比例因子并回車,同時繪制“海港航標(biāo)燈樁”,如下圖所示:
結(jié)論
AutoLISP語言具有強大的開發(fā)功能,可以將復(fù)雜的繪圖操作編寫成程序,并通過用戶命令的形式實現(xiàn)參數(shù)化繪圖功能,有助于繪圖人員更精確、高效的完成繪圖工作。
參考文獻
[1]周樂來,馬婧.AutoCAD 2008 VisualLISP二次開發(fā)入門到精通[M].北京:機械工業(yè)出版社,2008.4.