CAD二次開發(fā)技術(shù)課件(一、二)_第1頁
CAD二次開發(fā)技術(shù)課件(一、二)_第2頁
CAD二次開發(fā)技術(shù)課件(一、二)_第3頁
CAD二次開發(fā)技術(shù)課件(一、二)_第4頁
CAD二次開發(fā)技術(shù)課件(一、二)_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、河南工業(yè)大學(xué)機(jī)電工程學(xué)院CAD二次開發(fā)技術(shù)授課:韓莉莉本課程要學(xué)習(xí)的內(nèi)容第第1 1章章 AutoCADAutoCAD及其二次開發(fā)工具簡介及其二次開發(fā)工具簡介第第2 2章章 AutoLISPAutoLISP基本函數(shù)和繪圖功能基本函數(shù)和繪圖功能第第3 3章章 AutoLISP分支函數(shù)與循環(huán)結(jié)構(gòu)第第4 4章章 AutoLISP輸入輸出函數(shù)和圖形數(shù)據(jù)庫 第第5 5章章 AutoLISP對(duì)話框設(shè)計(jì)技術(shù)第1章 AutoCAD及其 二次開發(fā)工具簡介 1.11.1 AutoCAD簡介l AutoCAD是美國Autodesk公司開發(fā)的通用CAD軟件,1982年首次推出了AutoCAD R1.0版本,經(jīng)過不斷的版

2、本更新,現(xiàn)最新的是AutoCAD2011AutoCAD2011版本。l AutoCAD是目前微機(jī)上應(yīng)用最為廣泛的通用交互式計(jì)算機(jī)輔助繪圖與設(shè)計(jì)軟件包。AutoCAD的強(qiáng)大生命力在于它的通用性、多種工業(yè)標(biāo)準(zhǔn)和開放的體系結(jié)構(gòu)。l 用AutoCAD繪圖速度更快、精度更高、而且便于個(gè)性,它已經(jīng)在航空航天、造船、建筑、機(jī)械、電子、化工、美工、輕紡等很多領(lǐng)域得到了廣泛應(yīng)用,并取得了豐碩的成果和巨大的經(jīng)濟(jì)效益。 l AutoCAD軟件具有如下特點(diǎn) : (1)具有完善的圖形繪制功能。 (2)有強(qiáng)大的圖形編輯功能。 (3)可以采用多種方式進(jìn)行二次開發(fā)或用戶定制。 (4)可以進(jìn)行多種圖形格式的轉(zhuǎn)換,具有較強(qiáng)的數(shù)據(jù)

3、 交換能力。 (5)支持多種硬件設(shè)備。 (6)支持多種操作平臺(tái)。 (7)具有通用性、易用性,適用于各類用戶。 1.11.1 AutoCAD簡介l 為了適用于各種產(chǎn)品的設(shè)計(jì)需求,多數(shù)CAD軟件的功能都具有很高的通用性。但由于針對(duì)性不強(qiáng),用戶需求與CAD系統(tǒng)規(guī)模之間的矛盾日益增加,存在設(shè)計(jì)效率不高的問題。l 在CAD軟件平臺(tái)上,結(jié)合具體的應(yīng)用需求,總結(jié)行業(yè)的設(shè)計(jì)知識(shí)和經(jīng)驗(yàn),開發(fā)面向行業(yè)和設(shè)計(jì)流程的CAD系統(tǒng),這就是所謂CAD二次開發(fā)。l AutoCAD的開放體系結(jié)構(gòu)。允許用戶采用高級(jí)編程語言對(duì)其進(jìn)行擴(kuò)充和修改。 Autodesk公司自AutoCAD v2.18版至AutoCAD 2000的短短十幾

4、年間,就相繼推出了三代二次開發(fā)工具 。1.21.2 AutoCAD二次開發(fā)l AutoLISP AutoLISP是1986年隨AutoCADv2.18提供的二次開發(fā)工具。它是嵌入AutoCAD內(nèi)部的一種人工智能語言。使用AutoLISP可調(diào)用幾乎所有的AutoCAD命令。AutoLISP語言最典型的應(yīng)用之一是實(shí)現(xiàn)參數(shù)化繪圖程序設(shè)計(jì),包括尺寸驅(qū)動(dòng)程序和鼠標(biāo)拖動(dòng)程序等。另一個(gè)典型應(yīng)用就是驅(qū)動(dòng)AutoCAD提供PDB模塊構(gòu)成DCL文件,創(chuàng)建自己的對(duì)話框。 AutoLISP適合于有能力的終端用戶完成一些自己的開發(fā)任務(wù)。1.31.3 AutoCAD二次開發(fā)工具簡介l Visual LISP(VLISP)

5、 VLISP是AutoLISP的換代產(chǎn)品。與AutoLISP完全兼容,并提供它所有的功能,是新一代的AutoCAD LISP語言。VLISP對(duì)語言進(jìn)行了擴(kuò)展,可以通過Microsoft ActiveX Automation接口與對(duì)象交互。作為開發(fā)工具,VLISP提供了一個(gè)完整的集成開發(fā)環(huán)境(IDE),包括編譯器、調(diào)試器和其他工具,可以提高二次開發(fā)的效率 。1.31.3 AutoCAD二次開發(fā)工具簡介l VBA VBA是2000版本后具備的功能。它通過AutoCAD ActiveX Automation接口對(duì)AutoCAD進(jìn)行編程控制,是一個(gè)引入了對(duì)象的設(shè)計(jì)環(huán)境,為用戶提供類似Visual Ba

6、sic語言所擁有的功能,可以執(zhí)行并存取 AutoCAD環(huán)境的所有資源,適合編寫中型的數(shù)據(jù)庫類的CAD軟件。1.31.3 AutoCAD二次開發(fā)工具簡介 ActiveX AutomationActiveX Automation是微軟公司是微軟公司推出的一個(gè)技術(shù)標(biāo)準(zhǔn),其作用是在推出的一個(gè)技術(shù)標(biāo)準(zhǔn),其作用是在WindowsWindows系統(tǒng)的統(tǒng)一管理下協(xié)調(diào)不同的系統(tǒng)的統(tǒng)一管理下協(xié)調(diào)不同的應(yīng)用程序,允許應(yīng)用程序之間相互控制、應(yīng)用程序,允許應(yīng)用程序之間相互控制、相互調(diào)用。相互調(diào)用。 AutoCAD ActiveXAutoCAD ActiveX技術(shù)提供了一種技術(shù)提供了一種機(jī)制,可使編程者通過編程手段從機(jī)制

7、,可使編程者通過編程手段從AutoCADAutoCAD的內(nèi)部或外部來操縱的內(nèi)部或外部來操縱AutoCADAutoCAD。ActiveXActiveX是由一系列的對(duì)象組成,每一是由一系列的對(duì)象組成,每一個(gè)對(duì)象代表了個(gè)對(duì)象代表了AutoCADAutoCAD中一個(gè)明確的功中一個(gè)明確的功能,如繪制圖形對(duì)象、定義塊和屬性等能,如繪制圖形對(duì)象、定義塊和屬性等等。等。ActiveXActiveX所具備的絕大多數(shù)所具備的絕大多數(shù)AutoCADAutoCAD功能,均以方法和屬性的方式被封裝在功能,均以方法和屬性的方式被封裝在ActiveXActiveX對(duì)象中,只要使用某種方式,對(duì)象中,只要使用某種方式,使使Ac

8、tiveXActiveX對(duì)象得以對(duì)象得以“暴露暴露”,那么就,那么就可以使用各種面向?qū)ο缶幊痰恼Z言對(duì)其可以使用各種面向?qū)ο缶幊痰恼Z言對(duì)其中的方法、屬性進(jìn)行引用,從而達(dá)到對(duì)中的方法、屬性進(jìn)行引用,從而達(dá)到對(duì)AutoCADAutoCAD實(shí)現(xiàn)編程的目的。實(shí)現(xiàn)編程的目的。 l ARX ObjectARX是AutoDesk公司針對(duì)AutoCAD平臺(tái)上的二次開發(fā)而推出的一個(gè)開發(fā)軟件包,它提供了以C+為基礎(chǔ)的面向?qū)ο蟮拈_發(fā)環(huán)境及應(yīng)用程序接口,能真正快速的訪問AutoCAD圖形數(shù)據(jù)庫。 ObjectARX應(yīng)用程序是一個(gè)DLL(動(dòng)態(tài)鏈接庫),共享AutoCAD的地址空間,對(duì)AutoCAD進(jìn)行直接函數(shù)調(diào)用。所以,

9、使用ARX編程的函數(shù)的執(zhí)行速度得以大大提高。ARX 類庫采用了標(biāo)準(zhǔn)的C+類庫的封裝形式,這也大大提高了程序員編程的可靠度和效率。 由于是在Windows及VC+編程環(huán)境里運(yùn)行,所以,對(duì)開發(fā)者的編程能力要求較高。1.31.3 AutoCAD二次開發(fā)工具簡介適合于有能力的終端用戶完成一些自己的開發(fā)任務(wù)。1.41.4 AutoLISP語言概述一、AutoLISP的數(shù)據(jù)類型l整數(shù): (-2147483648到2147483648)l實(shí)數(shù): (-1.79769310308到1.79769310308 )l符號(hào): 包括除“(”、 “)”、 “.”、 “”、 “;”以外的任何打印字符。長度沒有限制,大小寫等

10、價(jià)。l字符串:包含在一對(duì)雙引號(hào)內(nèi)的一組字符 包括任何可以打印的字符。區(qū)別大小寫。最大長度為100個(gè)字符,100以后的字符無效。沒有任何字符的字符串為空串:”1.41.4 AutoLISP語言概述 常用術(shù)語常用術(shù)語“符號(hào)符號(hào)”來指儲(chǔ)存靜態(tài)數(shù)據(jù)的一個(gè)符號(hào)名,如內(nèi)建式來指儲(chǔ)存靜態(tài)數(shù)據(jù)的一個(gè)符號(hào)名,如內(nèi)建式函數(shù)和自定義函數(shù)。函數(shù)和自定義函數(shù)。 常用術(shù)語常用術(shù)語“變量變量”來指存儲(chǔ)程序數(shù)據(jù)的符號(hào)名(只有當(dāng)前類型來指存儲(chǔ)程序數(shù)據(jù)的符號(hào)名(只有當(dāng)前類型沒有固定類型,字母開頭,不用內(nèi)部函數(shù)名和保留字符,如:沒有固定類型,字母開頭,不用內(nèi)部函數(shù)名和保留字符,如:、. .、;、(、)、;、(、)、pipi、pau

11、sepause、T T、nilnil等等)。等等)。 AutoLISPAutoLISP的變量不需要事先定義。的變量不需要事先定義。 每一個(gè)變量都要消耗少量內(nèi)存,故當(dāng)變量值不再有用時(shí)重復(fù)使每一個(gè)變量都要消耗少量內(nèi)存,故當(dāng)變量值不再有用時(shí)重復(fù)使用變量名或?qū)⒆兞吭O(shè)置成用變量名或?qū)⒆兞吭O(shè)置成nilnil是良好的程序設(shè)計(jì)習(xí)慣。是良好的程序設(shè)計(jì)習(xí)慣。 其值保持不變的變量稱為常量,如:其值保持不變的變量稱為常量,如:PiPi 整數(shù)、實(shí)數(shù)、符號(hào)、字符串在整數(shù)、實(shí)數(shù)、符號(hào)、字符串在AutoLISPAutoLISP語言中稱為語言中稱為原子。原子包括:數(shù)字原子、符號(hào)原子和串原子。原子。原子包括:數(shù)字原子、符號(hào)原子和

12、串原子。一、AutoLISP的數(shù)據(jù)類型1.41.4 AutoLISP語言概述 表表有標(biāo)準(zhǔn)表和引用表兩種類型;有標(biāo)準(zhǔn)表和引用表兩種類型; AutoLISPAutoLISP程序就是用標(biāo)準(zhǔn)表來表示的;程序就是用標(biāo)準(zhǔn)表來表示的; 引用引用表用作數(shù)據(jù)處理,相當(dāng)于其它高級(jí)語言的數(shù)組,提供了表用作數(shù)據(jù)處理,相當(dāng)于其它高級(jí)語言的數(shù)組,提供了保存各種數(shù)據(jù)的有效方法。保存各種數(shù)據(jù)的有效方法。 引用表中的每一個(gè)元素可以是數(shù)字、符號(hào)、字符串,也可以引用表中的每一個(gè)元素可以是數(shù)字、符號(hào)、字符串,也可以是表。表可以嵌套。是表。表可以嵌套。 如:如:(23 1.5 A dfg23 1.5 A dfg ” ”程序程序” ”

13、(20.0 30.0 0.020.0 30.0 0.0) 僅有兩個(gè)元素,并用僅有兩個(gè)元素,并用“.”.”分開分開表稱為點(diǎn)對(duì)。點(diǎn)對(duì)常用于構(gòu)表稱為點(diǎn)對(duì)。點(diǎn)對(duì)常用于構(gòu)造連接表。造連接表。 表表有標(biāo)準(zhǔn)表和引用表兩種類型;有標(biāo)準(zhǔn)表和引用表兩種類型; AutoLISPAutoLISP程序就是用標(biāo)準(zhǔn)表來表示的;程序就是用標(biāo)準(zhǔn)表來表示的; 引用引用表用作數(shù)據(jù)處理,相當(dāng)于其它高級(jí)語言的數(shù)組,提供了表用作數(shù)據(jù)處理,相當(dāng)于其它高級(jí)語言的數(shù)組,提供了保存各種數(shù)據(jù)的有效方法。保存各種數(shù)據(jù)的有效方法。 引用表中的每一個(gè)元素可以是數(shù)字、符號(hào)、字符串,也可以引用表中的每一個(gè)元素可以是數(shù)字、符號(hào)、字符串,也可以是表。表可以嵌套

14、。是表。表可以嵌套。 如:如:(23 1.5 A dfg23 1.5 A dfg ” ”程序程序” ” (20.0 30.0 0.020.0 30.0 0.0) 僅有兩個(gè)元素,并用僅有兩個(gè)元素,并用“.”.”分開分開表稱為點(diǎn)對(duì)。點(diǎn)對(duì)常用于構(gòu)表稱為點(diǎn)對(duì)。點(diǎn)對(duì)常用于構(gòu)造連接表。造連接表。l文件描述符: 打開文件時(shí)的返回值,相當(dāng)于其它語言的文件號(hào),用于數(shù)據(jù)的存取。l選擇集: 選擇集是一個(gè)或多個(gè)對(duì)象的集合。l實(shí)體名(圖元名): 是AutoCAD系統(tǒng)在繪圖過程中賦予所繪對(duì)象的一個(gè)數(shù)字標(biāo)號(hào)。確切地說,它是指向一個(gè)AutoCAD系統(tǒng)內(nèi)部數(shù)據(jù)文件的指針。利用圖元名,AutoLISP可以查找到圖形對(duì)象的數(shù)據(jù)庫記

15、錄,并對(duì)其進(jìn)行各種方式的處理。一、AutoLISP的數(shù)據(jù)類型1.41.4 AutoLISP語言概述l AutoLISP語言中的一切設(shè)計(jì)成份都是以函數(shù)的形式給出的。它沒有語句的概念或其它語法結(jié)構(gòu),執(zhí)行程序就是執(zhí)行函數(shù),再調(diào)用函數(shù)。l 學(xué)習(xí)掌握AutoLISP語言,核心就是要掌握它的函數(shù);l 學(xué)習(xí)AutoLISP函數(shù)要掌握的基本內(nèi)容:(1)調(diào)用格式:即函數(shù)名、函數(shù)要求的參數(shù)個(gè)數(shù)和類型。(2)功能:即該函數(shù)的作用,它對(duì)其參數(shù)如何進(jìn)行處理。(3)求值情況:即哪些參數(shù)被求值,哪些不被求值。(4)求值結(jié)果的返回值類型二、AutoLISP的函數(shù)1.41.4 AutoLISP語言概述 這一點(diǎn)很重要,因?yàn)榇蠖鄶?shù)

16、函數(shù)的返回值都要被其它函數(shù)接受,這一點(diǎn)很重要,因?yàn)榇蠖鄶?shù)函數(shù)的返回值都要被其它函數(shù)接受,而每個(gè)函數(shù)所需要參數(shù)都有特定的類型。因此只有搞清被調(diào)用函而每個(gè)函數(shù)所需要參數(shù)都有特定的類型。因此只有搞清被調(diào)用函數(shù)的返回值的類型,才不會(huì)因用錯(cuò)函數(shù)的參數(shù)而導(dǎo)致錯(cuò)誤數(shù)的返回值的類型,才不會(huì)因用錯(cuò)函數(shù)的參數(shù)而導(dǎo)致錯(cuò)誤。 (setq x 25.0) (setq y 25.0) (+ (* x y ) x)三、AutoLISP的程序 (setq x 25.0) (setq x 25.0)(setq y 25.0)(+ x y)1.41.4 AutoLISP語言概述l 程序編輯: AutoLISP程序是純文本文件,可

17、以用任意一種ASCII碼文本編輯器(如記事本)來進(jìn)行編輯。編輯后以擴(kuò)展名為“.lsp”進(jìn)行保存。 使用Visual LISP編程環(huán)境:打開AutoCAD2000及以上版本,點(diǎn)擊“工具”菜單下AutoLISP(S)菜單項(xiàng)中的Visual LISP編輯器(V),進(jìn)入Visual LISP編程環(huán)境四、編輯和運(yùn)行AutoLISPAutoLISP的程序的程序1.41.4 AutoLISP語言概述第2章 AutoLISPAutoLISP基本函數(shù)基本函數(shù) 和繪圖功能和繪圖功能2.12.1 AutoLISP基本函數(shù)一、數(shù)值函數(shù)2.12.1 AutoLISP基本函數(shù)一、數(shù)值函數(shù)2.12.1 AutoLISP基本

18、函數(shù)一、數(shù)值函數(shù)2.12.1 AutoLISP基本函數(shù)二、符號(hào)與函數(shù)處理函數(shù)2.12.1 AutoLISP基本函數(shù)二、符號(hào)與函數(shù)處理函數(shù)2.12.1 AutoLISP基本函數(shù)二、符號(hào)與函數(shù)處理函數(shù) 全局變量可由任何函數(shù)訪問和修改,或在任一表達(dá)式中全局變量可由任何函數(shù)訪問和修改,或在任一表達(dá)式中使用。局部變量僅在定義它的函數(shù)求值期間(函數(shù)調(diào)用期使用。局部變量僅在定義它的函數(shù)求值期間(函數(shù)調(diào)用期間)有意義。間)有意義。2.12.1 AutoLISP基本函數(shù)三、表處理函數(shù) AutoLISPAutoLISP接受接受carcar和和cdrcdr的任意組合的任意組合, 如如:( (cadarcadar )

19、 )等效于等效于(car (cdr(car (cdr (car (car ) ) 。2.12.1 AutoLISP基本函數(shù)三、表處理函數(shù)2.12.1 AutoLISP基本函數(shù)三、表處理函數(shù)2.12.1 AutoLISP基本函數(shù)三、表處理函數(shù)2.12.1 AutoLISP基本函數(shù)四、字符串處理函數(shù)2.12.1 AutoLISP基本函數(shù)四、字符串處理函數(shù)2.12.1 AutoLISP基本函數(shù)四、字符串處理函數(shù)2.22.2 AutoLISP的繪圖功能一、GET類輸入函數(shù)2.22.2 AutoLISP的繪圖功能二、Command函數(shù)(1)Command函數(shù)的格式 (Command .)l 參數(shù)格式取決

20、于所執(zhí)行的AutoCAD命令及其所需要的數(shù)據(jù)類型。即command函數(shù)中所調(diào)用的參數(shù)類型、個(gè)數(shù)、與順序均要和AutoCAD命令嚴(yán)格對(duì)應(yīng)。l AutoCAD的命令、子命令和選擇項(xiàng)要用不含空格的字符串表示,大小寫均可。l 數(shù)字常量(整數(shù)或?qū)嵭蛿?shù))可寫成數(shù)本身也可寫成字符串形式l 點(diǎn)常量有兩種表示方法,一是用表的形式,如(10.0 25.0);二是用字符串中的數(shù)據(jù)表示如:” 10.0 ,25.0”。l command函數(shù)調(diào)用參數(shù)中的空串(“”),等效于在鍵盤上按一次空格鍵。l command函數(shù)調(diào)用的參數(shù),如數(shù)字、點(diǎn)也可為表達(dá)式,但表達(dá)式求值結(jié)果的數(shù)據(jù)類型要和AutoCAD命令的要求一致。l com

21、mand函數(shù)可以不帶任何參數(shù),相當(dāng)于在鍵盤上按一次Ctrl+C。 AutoLISPAutoLISP具有強(qiáng)大的繪圖編輯功能,主要是由于它具有強(qiáng)大的繪圖編輯功能,主要是由于它提供了一個(gè)系統(tǒng)內(nèi)部函數(shù)提供了一個(gè)系統(tǒng)內(nèi)部函數(shù)CommandCommand函數(shù),利用函數(shù),利用CommandCommand函函數(shù)可以非常方便地調(diào)用幾乎全部數(shù)可以非常方便地調(diào)用幾乎全部AutoCADAutoCAD命令,以完成命令,以完成各種工程圖形的繪制功能。各種工程圖形的繪制功能。2.22.2 AutoLISP的繪圖功能二、Command函數(shù)(2)Command函數(shù)的功能l Command函數(shù)的功能是在AutoLISP編程中直接調(diào)用AutoCAD命令以編制繪圖程序,其求值結(jié)果總是返回nil。l 用一個(gè)Command函數(shù)可以執(zhí)行一條或多條AutoCAD命令。l 一條AutoCAD 命令可由多個(gè)command函數(shù)完成。l command的參數(shù)不能用get類函數(shù)。在一

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論