摘錄一段AutoLisp 和Visual Lisp的介紹
AutoLISP是為二次開發AutoCAD而專門設計的編程語言,它起源于LISP語言,嵌入在AutoCAD的內部,是LISP語言和AutoCAD有機結合的產物。
AutoLISP采用了和CommonLISP最相近的語法和習慣約定,具有CommonLISP的特性,但又針對AutoCAD增加了許多功能。它既有LISP語言人工智能的特性,又具有AutoCAD強大的圖形編輯功能的特點。它可以把AutoLISP程序和AutoCAD的繪圖命令透明地結合起來,使設計和繪圖完全融為一體,還可以實現對AutoCAD圖形數據庫的直接訪問和修改。
利用AutoLISP語言可以進行各種工程分析計算、自動繪制復雜的圖形,還可以定義新的AutoCAD命令、驅動對話框、控制菜單。為AutoCAD擴充具有一定智能化、參數化的功能,可以使設計人員的主要精力用于產品的構思和創新設計上,實現真正意義上的計算機輔助設計。
在VLISP集成環境下可以便捷、高效地開發AutoLISP程序,可以經過編譯得到運行效率更高、代碼更加緊湊、源代碼受到保護的應用程序。
Visual LISP是新一代AutoLISP語言,它對AutoLISP語言進行了擴展,可以通過Microsoft ActiveX Automation接口與AutoCAD對象交互,可以通過反應器函數擴展AutoLISP響應事件的能力。
如果使用Visual LISP對AutoLISP擴展功能的部份,必須調用vl-load-com函數,或者將調用該函數的表達式寫在acad2006doc.lsp 文件內。
AutoLISP除了一般程序設計語言具有的整型、實型、字符串等類型之外,還有表、函數、文件描述符、AutoCAD選擇集、AutoCAD圖元名、VLA對象、函數分頁表和外部函數等數據類型。
1.整型(INT)
整型即整數,整數由數字和正負號組成,正號可省略。整數為32位帶符號的數字,其范圍從-2147483648到+2147483647。
2.實型(REAL)
實型數是帶小數點的數。在-1和1之間的實數必須以0開頭,例如:.5是錯誤的,應該寫成0.5。實數用雙精度的浮點數表示,并且至少有14位有效位數的精度。注意,Visual LISP不顯示所有的有效位。
3.字符串(STR)
字符串的最大長度為100,字符串可以是空的,即""。
任何字符都可以用\nnn的格式表示,其中反斜杠“\”是ASCII碼的前導標識字符,nnn是該字符八進制的ASCII碼。例如,字符串ABCD也可表示為\101\102\123\104。一些常用的控制字符,象反斜杠、雙引號,除了可以用 \nnn的格式表示之外,還可以用“\”轉義字符的格式表示為“\”、“"”等特殊字符,常用的一些轉義字符有:
控制字符顯示 | 字母轉義方式 | ASCII轉義方式 |
---|---|---|
反斜杠 | \\ | \134 |
雙引號 | " | \042 |
ESC鍵 | \e | \033 |
換行 | \n | \012 |
回車 | \r | \015 |
Tab鍵 | \t | \011 |
注意上述字母必須是小寫
4.表(LIST)
表以左圓括號開始,以配對的右圓括號結束,表可以是空的,可以有若干個元素;元素可以是簡單的,也可以是復雜的,還可以是其它的表。例如:(+ 1 2 3)、(sin (* 0.5 pi))、(A B)、((A B) C (C D))、(0 "LINE")、(10 1.5 2.6 0.0)、()都是合法的表。
5.函數(SUBS)
函數相當于子程序或過程。函數分為內部函數和外部函數。AutoLISP提供的或用AutoLISP定義的函數為內部函數。用ADS、ADSRX或ARX定義的函數為外部函數。例如sin 、cos、sqrt為內部函數。
運算符在AutoLISP里屬于函數,例如“+”、“-”、“*”、“/”分別稱之為加、減、乘、除函數,“<”、“<=”、“>”分別稱之為小于、小于等于和大于函數。
其它計算機語言里的子程序、過程、程序流程控制的關字,在AutoLISP里也屬于函數,例如“if”、 “while”分別稱之為條件和條件循環函數。
6.文件描述符(FILE)
文件描述符是AutoLISP賦于被打開文件的標識號,它類似于文件指針。下面的例子是以“讀”的方式打開文件myfile.dat,并將該文件的描述符賦予符號f1。
(setq f1 (open "myfile.dat" "r")) 返回<File:#34614>
7.圖元名(ENAME)
圖元名是AutoCAD為圖形對象指定的16進制的數字標識。
AutoLISP通過該標識,找到該圖形對象在圖形數據庫中的位置,以便對其進行訪問或編輯。
8.選擇集(PICKSET)
選擇集是一個或多個圖形對象命名的集合。可以通過AutoLISP程序建立選擇集、向指定的選擇集添加或移去圖形對象,通過選擇集可以對其內指定的成員進行訪問或編輯。
9.VLA 對象
VLA 對象是ActiveX 應用程序的主要組成部分。 不僅直線、圓弧、多義線和圓等都被稱為VLA對象,圖層、組、塊、視圖、視口、圖形的模型空間、圖紙空間、線型和尺寸標注樣式等也被稱為VLA對象,甚至連AutoCAD本身也被認為是VLA對象。