AutoLISP語言程式設計

AutoLISP語言程式設計

本書主要介紹了AutoCAD內部的程式語言AutoLISP,系統而詳細地介紹了AutoLISP的各類函式和語法規則。從AutoLISP的數據類型和程式結構入手,循序漸進地介紹了AutoLISP的基本函式、AutoLISP繪圖功能、AutoLISP建築設計製圖程式範例等內容。本書列舉了豐富的程式實例,圖文並茂,清晰易懂。本書可作為高等院校建築學及相關專業的教材,也可供其他從事設計繪圖工作、學習AutoLISP語言的有關人員參考,還可作為AutoLISP培訓學習的教材,對讀者有很大幫助。

基本信息

版權資訊

書 名: AutoLISP語言程式設計
作 者:郭秀娟 范小鷗
出版社化學工業出版社
出版時間: 2008
ISBN: 9787122032362
開本: 16
定價: 29.00 元

內容簡介

在工程設計領域中,AutoCAD得到了普遍套用,有許多人在研究使用AutoCAD,並畫出了很多工程圖紙。然而,人們總會感到作圖效率還不夠高,這是因為AutoCAD是一個通用繪圖軟體,不具備專業特色。AutoCAD開放的結構為不同的使用者留出了廣闊的空間,提供了許多二次開發工具,AutoLISP是其中最強的一個,可以利用AutoLISP開發出具有專業特點的高效率的套用軟體。鑒於此,人們希望了解AutoLISP的程式結構,掌握AutoLISP程式設計方法,進而開發出適合本專業特點的套用CAD系統。一些高等院校的工程設計相關專業也開設了AutoLISP語言課程。然而,各類現行出版的AutoLISP參考手冊,除了屈指可數的幾個例子之外,剩下的就是按字典順序排列起來的函式功能簡介,使人望之卻步,看後卻不得要領,無法實現深度學習及開發構想和願望。
編者通過查閱有關資料,閱讀現存的參考手冊,在計算機上慢慢摸索研究,歷經多年,對AutoLISP語言有了較為深入的理解,積累了一些難得的實踐資料,已成功套用於教學實踐之中。同時,和從事CAD工作的同志切磋交流,開發了相關的CAD套用軟體,在工程設計領域得到了套用。
本書共11章,前9章系統而詳細地介紹了AutoLISP的各類函式和語法規則,提供了大量的AutoLISP程式,使讀者從例子中深化對概念的理解,領悟程式設計方法;第10章提供了若干個建築設計製圖AutoLISP程式範例,便於建築專業學生作課程設計或工程設計人員對autocad二次開發。第11章介紹了Auto CAD的基本命令。書中每章後面附有練習題,以供讀者練習。
本書第1章至第5章由郭秀娟編寫,第6章由王祥瑞編寫,第7章、第11章和附錄部分由范小歐編寫,第8章至第10章由於全通老師編寫,全書的圖形部分由孫東和林娜撰稿,程式實例驗證由崔星華和吉林省經濟管理幹部學院的張樹彬共同完成。最後,全書由郭秀娟老師統稿,於全通老師排版設計。

目錄

第1章AutoLISP語言概述1
1.1AutoLISP語言簡介1
1.1.1開發AutoCAD的重要工具1
1.1.2AutoLISP的特點1
1.2AutoLISP數據類型2
1.2.1原子(ATOM)2
1.2.2表和點對4
1.3AutoLISP的程式結構5
1.4AutoLISP的運行環境7
1.5AutoLISP的記憶體分配8
1.6AutoLISP程式的執行過程8
練習題9
第2章數值函式11
2.1計算函式11
2.1.1(+<數1><數2>…)11
2.1.2(–<數1><數2>…)11
2.1.3(1+<數>)和(1–<數>)12
2.1.4(*<數1><數2>…)12
2.1.5(/<數1><數2>…)12
2.1.6(REM<數1><數2>…)12
2.1.7(GCD<數1><數2>)13
2.1.8(MAX<數1><數2>…)(MIN<數1><數2>…)13
2.1.9(EXP<數>)13
2.1.10(EXPT<底數><冪>)13
2.1.11(LOG<數>)14
2.1.12(SQRT<數>)14
2.1.13(ABS<數>)14
2.1.14(MINUSP<數>)14
2.1.15(ZEROP<數>)14
2.1.16(NUMBERP<項>)14
2.1.17(FLOAT<數>)15
2.1.18(FIX<數>)15
2.2布爾運算函式15
2.2.1(LOGAND<整數><整數>…)15
2.2.2(LOGIOR<整數><整數>…)15
2.2.3(LSH<整數><次數>)16
2.3三角函式16
2.3.1(SIN<角度>)16
2.3.2(COS<角度>)16
2.3.3(atan<數1>&#91;<數2>&#93;)16
2.4綜合舉例17
練習題18
第3章表處理函式20
3.1提取表中數據的函式20
3.1.1(CAR<表>)20
3.1.2(CDR<表>)20
3.1.3(LAST<表>)21
3.1.4(NTH<表>)N=0,1,2,…21
3.1.5(LENGTH<表>)22
3.2構造和修改表的函式22
3.2.1(LIST<表達式>…)22
3.2.2(APPEND<表>…)22
3.2.3(CONS<新的第一個元素><表>)23
3.2.4(REVERSE<表>)23
3.3提取並修改表中數據的函式23
3.3.1(ASSOC<關鍵字><關聯表>)23
3.3.2(subst<新項><舊項><表>)24
3.4表的循環處理函式24
3.4.1(FOREACH<符號原子><表><表達式>…)24
3.4.2(MAPCAR<函式名><表1><表2>…<表n>)25
3.5其他表處理函式26
3.5.1(MEMBER<表達式><表>)26
3.5.2(LISTP<項>)26
3.6綜合舉例26
練習題27
第4章符號和函式處理函式29
4.1符號處理函式29
4.1.1賦值函式29
4.1.2禁止求值函式與再求值函式30
4.1.3其他符號處理函式31
4.2函式處理函式34
4.3綜合舉例40
練習題43
第5章AutoCAD函式45
5.1GET類輸入函式45
5.2圖形處理函式50
5.2.1(POLAR<點><方向角><距離>)50
5.2.2(DISTANCE<點1><點2>)51
5.2.3(ANGLE<點1><點2>)51
5.2.4(INTERS<端點1><端點2><端點3><端點4>&#91;<任選項>&#93;)51
5.2.5目標捕捉函式OSNAP52
5.3COMMAND函式53
5.4坐標系轉換及單位變換函式56
5.4.1(TRANS<點>FROMTO&#91;位移量&#93;)56
5.4.2(CVUNITVALUEFROM—UINTTO—UNIT)57
5.5查詢和設定系統狀態的函式58
5.5.1(SETVAR<變數名><值>)58
5.5.2(GETVAR<變數名>)58
5.5.3(getenv<變數名>)58
5.5.4(SETCFGCFGNAMEEFGVALUE)59
5.5.5(GETCFGCFGNAME)59
5.5.6(ACAD_COLORDLGcolornum&#91;flag&#93;)59
5.5.7(VER)59
5.6顯示控制函式60
5.6.1(GRAPHSCR)60
5.6.2(TEXTSER)60
5.6.3(TEXTPAGE)60
5.6.4(PRIN1&#91;<表達式>&#91;<檔案標識符>&#93;&#93;)60
5.6.5(PRINT&#91;<表達式>&#91;<檔案標識符>&#93;&#93;)60
5.6.6(PRINC&#91;<表達式>&#91;<檔案標識符>&#93;&#93;)60
5.6.7(TERPRI)61
5.6.8(MENUCMD<字元串>)61
5.6.9(GRVECSVLIST&#91;TRANS&#93;)62
5.6.10(VPORTS)63
5.7綜合舉例63
練習題71
第6章字元串處理函式73
6.1字元與ASCII碼互換函式73
6.1.1(ASCII<字元串>)73
6.1.2(CHR<整數>)73
6.2數串互換函式74
6.2.1(ITOA<整數>)74
6.2.2(atoi<數字串>)74
6.2.3(atof<數字串>)74
6.2.4(RTOS<數>&#91;<模式>&#91;<精度>&#93;&#93;)75
6.2.5(DISTOF<字元串>&#91;模式&#93;)76
6.2.6(ANGTOS<弧度表示的角度值>&#91;模式&#91;精度&#93;&#93;)76
6.2.7(ANGTOF<字元串>&#91;模式&#93;)77
6.3字元串處理函式77
6.3.1(STRCAT<字元串1><字元串2>…)77
6.3.2(substr<字元串><開始><長度>)79
6.3.3(STRCASE<字元串>&#91;<模式>&#93;)79
6.3.4(STRLEN&#91;字元串&#93;…)79
6.3.5(WCMATCH<字元串><樣本>)80
6.4尺寸標註方式80
6.5綜合舉例82
練習題83
第7章判斷函式85
7.1相等驗證函式85
7.1.1關係運算函式85
7.1.2邏輯運算函式85
7.2條件函式86
7.2.1(IF<條件>是——<表達式1>&#91;<否——表達式2>&#93;)86
7.2.2(PROGN<標準表>…)(該函式也稱順序執行函式)87
7.2.3(COND(<條件1><表達式1>)87
7.3循環函式88
7.3.1(WHILE<條件>&#91;<標準表>…&#93;)88
7.3.2(REPEAT<數><表達式>…)90
7.4函式遞歸定義91
7.4.1遞歸的概念91
7.4.2遞歸模型91
7.4.3遞歸算法的設計92
7.5綜合舉例94
練習題109
第8章檔案處理函式112
8.1搜尋、獲得檔案的函式112
8.1.1(FINDFILE<檔案名稱>)112
8.1.2(GETFILED$quot$對話框標題$quot$$quot$檔案名稱$quot$$quot$擴展名$quot$標誌值)112
8.2打開、關閉檔案的函式113
8.2.1(OPEN<檔案名稱><方式>)113
8.2.2(CLOSE<文描述符>)114
8.3用於檔案的輸入輸出函式114
8.3.1(READ&#91;符串&#93;)114
8.3.2(READ-LINE<檔案描述符>)115
8.3.3(WRITE-LINE<字元串><檔案描述符>)116
8.3.4(READ-CHAR<檔案描述符>)116
8.3.5(WRITE-CHAR<數><檔案描述符>)117
8.4綜合舉例117
練習題117
第9章實體和設備訪問函式119
9.1基本概念119
9.1.1實體119
9.1.2實體名119
9.1.3選擇集119
9.2選擇集操作函式120
9.2.1(SSGETstrPtlPt2)120
9.2.2(SSGET$quot$x$quot$&#91;<過濾表>&#93;)121
9.2.3(SSLENGTHs)122
9.2.4(SSNAME<選擇集>n)n=0,1,2,…122
9.2.5(SSADD<實體名><選擇集>)123
9.2.6(SSDEL<實體名><選擇集>)124
9.3實體名操作函式124
9.3.1(ENTNEXT<實體名>)124
9.3.2(ENTLAST)124
9.3.3(SSNAME<選擇集><序號>)125
9.3.4(NAMEDOBJEICT)125
9.3.5(HANDENTHANDLE)126
9.3.6(ENTSEL&#91;<提示>&#93;)126
9.4實體數據函式126
9.4.1獲得實體定義數據函式ENTGET126
9.4.2(ENTMOD<實體數據表>)130
9.4.3(ENTUPD<實體名>)130
9.4.4(ENTMAKE<實體數據表>)131
9.5對符號表的訪問135
9.5.1(TBLNEXT<符號表名>&#91;<第一>&#93;)135
9.5.2(TBLSEARCH<符號表名><符號>)136
9.6對圖形螢幕和輸入設備的訪問136
9.6.1(GRCLEAR)137
9.6.2(GRTEXT&#91;<框區><文本字元串><加亮>&#93;)137
9.6.3(GRREAD&#91;track&#93;&#91;allkeys&#91;curtype&#93;&#93;)137
9.7綜合舉例139
9.7.1實體名和選擇集在開發CAD程式中的實際套用139
9.7.2生成局部放大視圖的簡便方法140
9.7.3求圓或圓弧中心線143
練習題147
第10章建築設計製圖的AutoLISP程式範例149
10.1常用建築設計AutoLISP程式149
10.1.1建築符號設計AutoLISP程式149
10.1.2雙線牆插門窗AutoLISP程式154
10.2牆體設計AutoLISP程式161
10.2.1單線牆AutoLISP程式161
10.2.2雙線牆AutoLISP程式168
10.3樓梯設計AutoLISP程式181
10.3.1繪製平面樓梯AutoLISP程式181
10.3.2剖面樓梯AutoLISP程式187
練習題190
第11章AutoCAD基本命令192
11.1基本圖形的繪製192
11.1.1繪製直線192
11.1.2構造線192
11.1.3多線193
11.1.4多段線193
11.1.5矩形193
11.1.6正多邊形194
11.1.7圓195
11.1.8弧線195
11.1.9橢圓195
11.1.10圓環196
11.2基本圖形的編輯196
11.2.1複製圖形196
11.2.2移動圖形197
11.2.3偏移圖形197
11.2.4旋轉圖形198
11.2.5比例縮放圖樣199
11.2.6圖形鏡像199
11.2.7陣列圖形200
11.2.8修剪圖形201
11.2.9延伸和拉伸202
11.2.10倒角和圓角203
11.2.11分解圖塊204
附錄A圖形繪製與編輯各命令中英文及簡捷命令一覽表206
附錄B在線上程式錯誤代碼207
附錄C標準ASCII碼錶209
附錄DAutoLISP函式概要211
參考文獻219
……

精彩書摘

第1章 AutoLISP語言概述
1.1 AutoLISP語言簡介
1.1.1 開發AutoCAD的重要工具
LISP(List Processing Language)是一種計算機的表處理語言,是在人工智慧學科領域廣泛套用的一種程式設計語言。AutoLISP語言是嵌於AutoCAD內部的計算機語言,它是AutoCAD開放式體系結構的具體表現,它是LISP語言和AutoCAD有機結合的產物。使用AutoLISP可直接調用幾乎全部的AutoCAD命令。AutoLISP語言既具備一般高級語言的基本結構和功能,又具有一般高級語言所沒有的強大圖形處理功能,是當今世界上CAD軟體中被廣泛採用的語言之一。
美國AutoDesk公司在AutoCAD內部嵌入AutoLISP的目的是讓用戶充分利用AutoCAD進行二次開發,實現直接增加和修改AutoCAD命令,擴大圖形編輯功能,建立圖形庫和資料庫,並對當前圖形進行直接訪問和修改,開發CAD軟體包等。在AutoCAD為用戶提供的AutoLISP、ARX、VBA等開發工具中,AutoLISP是一種簡便易學的解釋性語言,具有很強的數據表處理功能,是開發AutoCAD的一種重要手段。
AutoLISP語言最典型的套用之一是實現參數化繪圖程式設計,包括尺寸驅動程式,滑鼠拖動程式等。尺寸驅動是指通過改變實體標註的尺寸值來實現圖形的自動修改;滑鼠拖動即利用AutoLISP語言提供的(GRREAD&#91;&#93;)函式,讓用戶直接讀取AutoCAD的輸入設備(如滑鼠),任選項追蹤游標移動存在且為真時,通過滑鼠移動游標,調整所需的參數值而達到自動改變螢幕圖形大小和形狀。
到目前為止,大多數參數化程式都是針對二維平面圖編制的。實際上,立體圖同樣可以實現參數化繪圖,在AutoCAD中編制實體的立體圖參數化程式比其平面三視圖程式更簡單,而且立體圖生成後,可以很方便地生成三視圖、剖面圖和軸側圖等。
AutoLISP語言還能夠利用PDB函式驅動DCL(Dialog Control Language)檔案創建自己的對話框。
.......

相關詞條

相關搜尋

熱門詞條

聯絡我們