AutoCAD二次開發(fā)技術_第1頁
AutoCAD二次開發(fā)技術_第2頁
AutoCAD二次開發(fā)技術_第3頁
AutoCAD二次開發(fā)技術_第4頁
AutoCAD二次開發(fā)技術_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、學習AutoCAD二次開發(fā)技術的體會1引言AutoCAD是一套向量式計算機輔助制圖軟件,具有強大的圖形處理功能,目前它 已經廣泛應用于機械、電子、電氣、建筑、土木服裝等行業(yè)和領域。最初版本的AutoCAD是在1982年發(fā)布的。AutoCAD開放的結構體系,為用戶提 供了多種二次開發(fā)的工具,使得它的缺陷之處可以得到彌補,因此三十多年來它 持續(xù)擁有旺盛的生命力。AutoCAD的二次開發(fā),能夠實現(xiàn)參數(shù)化繪圖,允許用戶 開發(fā)自己的命令、標準庫文件和各種應用程序,能充分發(fā)揮AutoCAD的功能。本文將介紹我學習Visual LISP這一種工具進行開發(fā)的過程和體會,說明我在學 習過程中體會到的二次開發(fā)的特

2、點和一些優(yōu)點,并舉一些具體例子。2實施過程2.1LISP語言的主要學習內容總結2.1.1變量及其賦值:(1)LISP語言中變量的使用比較靈活,變量不用先定義和指定類型,需要的時 候直接引入,而且其內容較為隨意,可以是整數(shù)、實型數(shù)、字符串、點、表等等。(2)變量的賦值主要用setq語句,格式為(setq變量名 要賦的內容)。2.1.2基本的運算函數(shù)和數(shù)學函數(shù):(1)加、減、乘、除、取余運算函數(shù)名分別為“+”、-”、*”、/”、“rem” 函數(shù)使用格式為(符號數(shù)1數(shù)2 數(shù)3)。(2)基本初等函數(shù):指數(shù)函數(shù)(expt底數(shù)自變量值)。自然指數(shù)函數(shù)、自然對數(shù)函數(shù)、正弦、余弦、反正切、根式、絕對值函數(shù)分別

3、 是exp、log、sin、cos、atan、sqrt、abs,調用格式為:(函數(shù)名 自變量值)。2.1.3表處理函數(shù):(1)表構造函數(shù):(list n1 n2 n3 n4),返回一個表。配合賦值語句可把表賦 值給變量,如(setq biao (list 1 2 3 4),就把(1 2 3 4)賦給變量biao。(2)表長度運算:(length表),返回表元素的個數(shù)。(3)表中元素的提?。海╟ar表)返回表中第一個元素。例如(car (1 2 3 4 )返回1。(cdr表)去掉表中第一個元素,其余元素組成表返回。上例返回(2 3 4)。嵌套使用可提取個元素,嵌套時可以縮寫,如caddr表示提取

4、第三個元素。另一種常用表提取函數(shù)nth格式為:(nth n表),它表示提取表中序號為n的 元素。注意序號是從零開始的,表中第一個元素序號為0。2.1.4輸入輸出函數(shù):(1)輸入函數(shù)格式為:(函數(shù)“提示內容”)。常用函數(shù)有:getpoint、getint、 getreal、getstring分別表示等待用戶輸入點、整型數(shù)、實型數(shù)、字符串。(2)輸出函數(shù)格式為:(princ表達式)(print表達式)。其中print先換行再輸 出。2.1.5常用符號:(1)“!”符用于查看某一變量。如! a,如果a變量為1,則顯示1。(2)英文單引號,是quote的縮寫,表示不求值而是引用,如(setq a (1

5、23) 就把表(1 2 3)賦值給a,若沒有該符號則會對(1 2 3)求值,會出錯。關系運算符,用寫條件表達式,有“”、二”、/二”、二”。分別表示小于、大于、小于等于、大于等于、不等于、等于。例如(二a b)表示條件a等于b。( a b)表示條件a大于b。2.1.6分支和循環(huán)結構(1)if語句:(if表達式(語句1)(語句2)。表示表達式成立時執(zhí)行語句1, 否則執(zhí)行語句二。注意語句1、語句2只能是一個語句。如果要使表達式成立時 執(zhí)行多個語句,則使用progn函數(shù)。如(progn (語句)(語句)(語句)。(2)repeat語句(repeat n 循環(huán)體),n表示循環(huán)的次數(shù)。(3)while語

6、句(while表達式 循環(huán)體),先判斷表達式是否成立,表達式成立時 執(zhí)行循環(huán)體。 Repeat語句只能執(zhí)行次數(shù)已知的循環(huán),而while語句既可以執(zhí) 行次數(shù)已知的,也可以執(zhí)行次數(shù)未知的。2.1.7常用的用于繪圖的函數(shù)command函數(shù),它是通過直接調用AutoCAD命令來實現(xiàn)的。例如:(command “pline p0 p “”)表示畫一條起點為p0,終點為p的多段線。(command “circle p0 100)表示畫一個以p0為圓心的半徑為100的圓。(command “move L p0 p)表示把一個對象以p0為基點移動到p。(2)polar函數(shù),它是通過點與點之間的相對位置來確定點

7、的坐標的函數(shù)。格式(polarp0相對角度t 兩點間距離d)注意相對角度是極角,單位為孤度。 該函數(shù)返回一個相對P0角度為t,距離為d的點。與賦值語句配合可將得到的點 賦值給一個變量。例如(setq p (polar p0 pi 10)把p0左側距離10的點賦 值給了 p。2.2利用LISP語言繪圖實例2.2.1繪制函數(shù)圖像 用“以直代曲”的思想用許多很短的線段代替函數(shù)圖像,從而得到近似圖像。用LISP語言中的數(shù)學函數(shù)、循環(huán)結構,并用command函數(shù)實現(xiàn)編程。程序如下:繪制幕函數(shù)圖像(defun幕函數(shù)()(setq n (getint 請輸入指數(shù) n)(setq a (getreal 請輸入

8、自變量開始 范圍n)(setq b (getreal 請輸入自變量結束 范圍n)(setq p0 (polar (getpoint 請選擇坐標 原點 n) 0 a)(setq x a)(command pline)(while(= x b)(setq y (expt x n)(setq p (polar p0 (/ pi 2) y )(command p)(setq x (+ x 0.1)(setq p0 (polar p0 0 0.1)(command) )編輯好程序后保存,在CAD中加載程序,使用命令(load “文件路徑”),或者直接拖動文件到繪圖區(qū)。然后,在 命令行輸入(幕函數(shù))從而調

9、用該函數(shù),系統(tǒng)就開始執(zhí)行 該函數(shù)的代碼。按照提示輸入幕函數(shù)指數(shù),自變量范圍, 基點,就會繪制出如圖所示函數(shù)圖像。注意:一、調用函數(shù)時應當適當縮放界面,從而保證用 command函數(shù)調用繪圖命令時,系統(tǒng)能夠 準確的選擇指定的點,否則會因為點非常 密集而選錯。二、編輯程序的代碼時和在 命令行輸入命令時必須保證是英文符。(2)繪制指數(shù)函數(shù)、對數(shù)函數(shù)、三角函數(shù)等函數(shù)圖像的程序與上圖程序差別不大, 把數(shù)學函數(shù)做修改即可,因為篇幅原因不一一列舉,圖像如上圖所示。2.2.歡現(xiàn)參數(shù)化繪圖。編寫一些用于繪制含有較多重復圖案或者復雜圖案圖形的程序。加載程序后調用 函數(shù),輸入幾個參數(shù)即可完成繪圖,大大提高了繪圖效率

10、。程序如下:(defun ht()(setq a 50)(setq n (getint ”請輸入個數(shù)”)(setq p0 (getpoint 請輸入基點)(setq p (polar p0 (/ pi 2) a)(command pline p0 p)(command)(setq p1 (polar p 0 a)(repeat n(setq p2 (polar p1 pi a) )(setq p3 (polar p2 (* 1.5 pi) a)(setq p4 (polar p3 0 a)(command pline p1 p3 p4 p2 p1 p4)(command)(setq p1 (p

11、olar p1 0 a) )(defun ht2()(setq p0 (getpoint 請選擇圓心)(setq r (getreal ”請輸入半徑”)(setq n (getint ”請輸入個數(shù)”)(setq i 1)(setq p (polar p0 (/ pi 2) r)(command pline p0 w” (* r 0.01)(* r 0.02) p p0 )(while ( i n)(setq p (polar p0 (+ (/ pi 2) (/ (* 2 i pi) n) r)(commandplinep0 w (* r 0.02) (* r 0.02) p p0 )(setq

12、 i (+1 i)(command circle p0 r)(command circle p0 (+ r (* 0.2 r)第一個程序用于繪制一排“箱子”,加載程序后在命 令行輸入(瓦)開始執(zhí)行函數(shù)命令,輸入參數(shù)(個數(shù)和 基點)可以繪制出一排指定個數(shù)的邊長為50的“箱 子”。第二個程序用于繪制“輪子”,加載程序后在命令行 輸入(ht2)就開始執(zhí)行函數(shù)命令,輸入參數(shù)(圓心、內徑、輻條個數(shù)),即可繪制 指定大小、輻條個數(shù)的輪胎。3結論AutoCAD的二次開發(fā),能夠實現(xiàn)參數(shù)化繪圖,允許用戶開發(fā)自己的命令、標準庫 文件和各種應用程序,從而能夠簡化復雜繁瑣的圖形(尤其是機械圖)的繪制, 能更大限度地發(fā)揮AutoCAD的功能。LISP語言是一種表處理語言,是被解釋執(zhí)行的,任何一個語句鍵入后就能馬上 執(zhí)行,它對于交互式的程序開發(fā)非常方便。通過學習基于Visual LISP的二次開 發(fā),我掌握了常用的LISP語句和語法結構:基本函數(shù),分支、循環(huán)結構,輸入輸 出處理,表處理,圖形處理等等,能夠編程繪制一些較簡單的圖形,彌補傳統(tǒng)繪 圖方式的不足,豐富了 CAD的繪圖功能。傳統(tǒng)的繪圖方式有兩個不足之處:(1)重復繪制的工作量很大。(2)對于尺寸要 求非常嚴格。對于不同尺寸而基本結構相同的圖形無法復制,需要重復繪制。進 行二次開發(fā)可以很好的解決這兩個問題:使用循環(huán)語句可以實現(xiàn)重復繪制。編程 保留繪圖命

溫馨提示

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

評論

0/150

提交評論