摘錄一段AutoLisp 和Visual Lisp的介紹
AutoLISP是為二次開發(fā)AutoCAD而專門設(shè)計(jì)的編程語言仰剿,它起源于LISP語言,嵌入在AutoCAD的內(nèi)部漂坏,是LISP語言和AutoCAD有機(jī)結(jié)合的產(chǎn)物。
AutoLISP采用了和CommonLISP最相近的語法和習(xí)慣約定,具有CommonLISP的特性展运,但又針對AutoCAD增加了許多功能活逆。它既有LISP語言人工智能的特性,又具有AutoCAD強(qiáng)大的圖形編輯功能的特點(diǎn)拗胜。它可以把AutoLISP程序和AutoCAD的繪圖命令透明地結(jié)合起來蔗候,使設(shè)計(jì)和繪圖完全融為一體,還可以實(shí)現(xiàn)對AutoCAD圖形數(shù)據(jù)庫的直接訪問和修改埂软。
利用AutoLISP語言可以進(jìn)行各種工程分析計(jì)算锈遥、自動繪制復(fù)雜的圖形,還可以定義新的AutoCAD命令勘畔、驅(qū)動對話框所灸、控制菜單。為AutoCAD擴(kuò)充具有一定智能化炫七、參數(shù)化的功能爬立,可以使設(shè)計(jì)人員的主要精力用于產(chǎn)品的構(gòu)思和創(chuàng)新設(shè)計(jì)上,實(shí)現(xiàn)真正意義上的計(jì)算機(jī)輔助設(shè)計(jì)万哪。
在VLISP集成環(huán)境下可以便捷懦尝、高效地開發(fā)AutoLISP程序,可以經(jīng)過編譯得到運(yùn)行效率更高壤圃、代碼更加緊湊陵霉、源代碼受到保護(hù)的應(yīng)用程序。
Visual LISP是新一代AutoLISP語言伍绳,它對AutoLISP語言進(jìn)行了擴(kuò)展踊挠,可以通過Microsoft ActiveX Automation接口與AutoCAD對象交互,可以通過反應(yīng)器函數(shù)擴(kuò)展AutoLISP響應(yīng)事件的能力冲杀。
如果使用Visual LISP對AutoLISP擴(kuò)展功能的部份效床,必須調(diào)用vl-load-com函數(shù),或者將調(diào)用該函數(shù)的表達(dá)式寫在acad2006doc.lsp 文件內(nèi)权谁。
AutoLISP除了一般程序設(shè)計(jì)語言具有的整型剩檀、實(shí)型、字符串等類型之外旺芽,還有表沪猴、函數(shù)、文件描述符采章、AutoCAD選擇集运嗜、AutoCAD圖元名、VLA對象悯舟、函數(shù)分頁表和外部函數(shù)等數(shù)據(jù)類型担租。
1.整型(INT)
整型即整數(shù),整數(shù)由數(shù)字和正負(fù)號組成抵怎,正號可省略奋救。整數(shù)為32位帶符號的數(shù)字岭参,其范圍從-2147483648到+2147483647。
2.實(shí)型(REAL)
實(shí)型數(shù)是帶小數(shù)點(diǎn)的數(shù)尝艘。在-1和1之間的實(shí)數(shù)必須以0開頭演侯,例如:.5是錯誤的,應(yīng)該寫成0.5利耍。實(shí)數(shù)用雙精度的浮點(diǎn)數(shù)表示,并且至少有14位有效位數(shù)的精度盔粹。注意隘梨,Visual LISP不顯示所有的有效位。
3.字符串(STR)
字符串的最大長度為100舷嗡,字符串可以是空的轴猎,即""。
任何字符都可以用\nnn的格式表示进萄,其中反斜杠“\”是ASCII碼的前導(dǎo)標(biāo)識字符捻脖,nnn是該字符八進(jìn)制的ASCII碼。例如中鼠,字符串ABCD也可表示為\101\102\123\104可婶。一些常用的控制字符,象反斜杠援雇、雙引號矛渴,除了可以用 \nnn的格式表示之外,還可以用“\”轉(zhuǎn)義字符的格式表示為“\”惫搏、“"”等特殊字符具温,常用的一些轉(zhuǎn)義字符有:
控制字符顯示 | 字母轉(zhuǎn)義方式 | ASCII轉(zhuǎn)義方式 |
---|---|---|
反斜杠 | \\ | \134 |
雙引號 | " | \042 |
ESC鍵 | \e | \033 |
換行 | \n | \012 |
回車 | \r | \015 |
Tab鍵 | \t | \011 |
注意上述字母必須是小寫
4.表(LIST)
表以左圓括號開始,以配對的右圓括號結(jié)束筐赔,表可以是空的铣猩,可以有若干個元素;元素可以是簡單的茴丰,也可以是復(fù)雜的达皿,還可以是其它的表。例如:(+ 1 2 3)贿肩、(sin (* 0.5 pi))鳞绕、(A B)、((A B) C (C D))尸曼、(0 "LINE")们何、(10 1.5 2.6 0.0)、()都是合法的表控轿。
5.函數(shù)(SUBS)
函數(shù)相當(dāng)于子程序或過程冤竹。函數(shù)分為內(nèi)部函數(shù)和外部函數(shù)拂封。AutoLISP提供的或用AutoLISP定義的函數(shù)為內(nèi)部函數(shù)。用ADS鹦蠕、ADSRX或ARX定義的函數(shù)為外部函數(shù)冒签。例如sin 、cos钟病、sqrt為內(nèi)部函數(shù)萧恕。
運(yùn)算符在AutoLISP里屬于函數(shù),例如“+”肠阱、“-”票唆、“*”、“/”分別稱之為加屹徘、減走趋、乘、除函數(shù)噪伊,“<”簿煌、“<=”、“>”分別稱之為小于鉴吹、小于等于和大于函數(shù)姨伟。
其它計(jì)算機(jī)語言里的子程序、過程豆励、程序流程控制的關(guān)字授滓,在AutoLISP里也屬于函數(shù),例如“if”肆糕、 “while”分別稱之為條件和條件循環(huán)函數(shù)般堆。
6.文件描述符(FILE)
文件描述符是AutoLISP賦于被打開文件的標(biāo)識號,它類似于文件指針诚啃。下面的例子是以“讀”的方式打開文件myfile.dat淮摔,并將該文件的描述符賦予符號f1。
(setq f1 (open "myfile.dat" "r")) 返回<File:#34614>
7.圖元名(ENAME)
圖元名是AutoCAD為圖形對象指定的16進(jìn)制的數(shù)字標(biāo)識始赎。
AutoLISP通過該標(biāo)識和橙,找到該圖形對象在圖形數(shù)據(jù)庫中的位置,以便對其進(jìn)行訪問或編輯造垛。
8.選擇集(PICKSET)
選擇集是一個或多個圖形對象命名的集合魔招。可以通過AutoLISP程序建立選擇集五辽、向指定的選擇集添加或移去圖形對象办斑,通過選擇集可以對其內(nèi)指定的成員進(jìn)行訪問或編輯。
9.VLA 對象
VLA 對象是ActiveX 應(yīng)用程序的主要組成部分。 不僅直線乡翅、圓弧鳞疲、多義線和圓等都被稱為VLA對象,圖層蠕蚜、組尚洽、塊、視圖靶累、視口腺毫、圖形的模型空間、圖紙空間挣柬、線型和尺寸標(biāo)注樣式等也被稱為VLA對象潮酒,甚至連AutoCAD本身也被認(rèn)為是VLA對象。