5 自定義函數.ppt_第1頁
5 自定義函數.ppt_第2頁
5 自定義函數.ppt_第3頁
5 自定義函數.ppt_第4頁
5 自定義函數.ppt_第5頁
已閱讀5頁,還剩21頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、CAD 程序設計方法,教師:李敬敏,五、自定義函數,1 AutoLISP 的核心內容實際上就是利用系統提供的內部函數, 編寫自定義函數,用自定義函數來解決工程中遇到的各種設計和繪圖問題。,2 注意問題:,1)自定義函數的定義方法,合理確定函數的形式參數的數量、類型及順序。,2)自定義函數的正確調用方法,3)了解局部變量和全局變量的作用域。,4)函數調用后的返回值類型及完成的功能,5.1 自定義函數 defun,defun函數的定義格式,(defun ),功能:定義一個用戶函數,5.1 自定義函數 defun,5.1.1 各參數的意義,1)必須是符號原子,大小寫均可,由用戶給定。 不要與系統內部

2、函數和 AutoCAD 命令同名。,(defun ),2)四種格式:,5.1 自定義函數 defun,5.1.1 各參數的意義,(defun ), ( / ) ( ) (/ ) () ;沒有參數的空表,四 種 格 式,5.1 自定義函數 defun,5.1.1 各參數的意義,2)有如下四種格式: ( / ),(1) 中斜杠“/”前為形式參數表,用來規定調用本函數時必須提供的實際參數的個數、類型和順序。,例:求梯形面積5.1 txmj-1.lsp,5.1 自定義函數 defun,5.1.1 各參數的意義,2)有如下四種格式: ( / ),(1) 中斜杠“/”前為形式參數表,用來規定調用本函數時必

3、須提供的實際參數的個數、類型和順序。,例:求梯形面積5.1 txmj-1.lsp,例:求梯形面積5.1 txmj-2.lsp, 中的斜杠“/”前也可為空,即調用時不需指定實參,但在調用前應先對變量a、b、h進行賦值,5.1 自定義函數 defun,5.1.1 各參數的意義,2)有如下四種格式: ( / ),(2) 中斜杠“/”后是局部變量表,是本函數臨時使用的中間變量,調用后調用中得到值將丟棄,不保存在內存中。,(defun txmj( a b h) (setq s (/ (* (+ a b) h) 2) ),(3)局部變量也可為空,5.1 自定義函數 defun,5.1.1 各參數的意義,2

4、)有如下四種格式: ( / ),(4) 中各項要用空格分開,尤其注意:“/”前后必須有空格,其一是函數調用時,根本不需要外部提供值 需要外部提供值,但是通過全局變量傳入,(5) 括號中可以沒有任何參數,但括號不可省略。,5.1 自定義函數 defun,5.1.1 各參數的意義,3)后的若干個是函數的定義體,可以為常量、變量或表達式,是所定義函數的運算過程。決定了本函數的功能和返回值類型,也決定著形參的類型、數量和順序,(defun ),5.1 自定義函數 defun,5.1.1 各參數的意義,4)內部函數 defun 的返回值是它所定義的用戶函數名,而 調用用戶函數,返回值是最后一個 的值。,

5、函數 defun 的返回值為用戶函數名txmj,(txmj 1.0 2 3) 是調用用戶函數,返回值4.5是txmj的返回值,(defun ),5.1 自定義函數 defun,5.1.1 各參數的意義,5)函數調用是對已定義的函數的調用,它的格式為:( ). 中實參的個數、順序與類型必須與函數定義的 中形參的個數、順序與類型一 一對應。,5.1 自定義函數 defun,5.1.2 自定義函數舉例,練習1 矩形圖 5.1 box.lsp,主要參數的確定,P1, L, W,5.1 自定義函數 defun,5.1.2 自定義函數舉例,練習2 正三角形 5.1 trigon.lsp,主要參數的確定,P

6、1, Len,5.1 自定義函數 defun,5.1.2 自定義函數舉例,練習3 凹形圖 5.1 axt.lsp,主要參數的確定,Pt1, ww,hh,5.1 自定義函數 defun,5.1.3 函數變量類型及作用范圍,1函數變量類型:局部變量、全局變量,局部變量:在函數中出現的變量 全局變量:不在中的變量,2 函數變量的作用范圍,局部變量:不管值在函數中如何改變,調用后又恢復調用前的值,只在函數內起作用 全局變量:在函數調用中所得到的值將保留在系統內存中,其他函數和表達式可用,5.1 自定義函數 defun,5.1.3 函數變量類型及作用范圍,局部變量:,(defun scope (x y

7、/ a) (setq a (+ x 1.0) b (* y 3.0) (setq c (+ a b) x (+ x y) (setq y (- x y) ),x y a,全局變量:,b c,(setq xx 7 yy 6 x 5 y 4 a 3 b 2 c 1),(scope xx yy),5.1 自定義函數 defun,5.1.3 函數變量類型及作用范圍,2 函數變量的作用范圍,局部變量:可以在不同函數定義中使用同名變量,卻互不影響。從而減少變量個數,減少變量命名時的麻煩,節省內存空間;在函數調用后,需要保留調用前的值的變量。,全局變量:程序中各函數都要使用同一變量的值,如繪圖比例因子等;在

8、函數調試時,為了查看函數調用后變量值的變化情況,以便查錯,可先把局部變量設為全局變量,一旦調試成功后,再把全局變量改為局部變量。,5.1 自定義函數 defun,5.1.4 自定義函數的調用,1 load函數的使用加載,調用格式:(load 作用:加載一Autolisp文件到內存,加載成功:返回的是文件中定義的最后一個函數名,(load “D:CAD/5.1 trigon.lsp),返回:C:trigon,(load “D:CAD/5.1 box.lsp),返回:BOX,(load “D:CAD/5.1 axt.lsp),返回:AXT,5.1 自定義函數 defun,5.1.4 自定義函數的調

9、用,2 調用一旦加載成功即可調用,C:TRIGON :命令行,直接輸入:trigon,不用加括號,沒有C:的函數:命令行:(函數名 形參1 形參2 ),Command: (BOX 300 250 (300 280) 0.8),Command: (AXT),5.1 自定義函數 defun,5.1.4 自定義函數的調用,2 調用一個函數中調用另一個函數,5.1 自定義函數 defun,5.1.5 函數庫文件的建立與調用,(load d:/ljm/CAD/5.2 subprogram1.lsp),5.1 自定義函數 defun,5.1.6 應用defun函數的注意事項,1. 編寫函數時,應按 Aut

10、oLISP 的語法格式正確編寫,為使程序清楚,便于檢查, 最好進行縮排。編寫好的函數應以.LSP 為擴展名及時存入磁盤。,2. 定義函數時,函數名應注意不要與內部函數名及其它自定義函數同名。 函數名應能體現該函數的功能并便于記憶。,3.注意把函數內所用變量定義為局部變量,以免發生變量干涉。當函數較大較多時, 變量屏蔽尤為重要,4.函數運行后產生一些無用函數和變量,可用 (setq nil) 來進行清除,恢復無用函數和變量占用的內存空間,5.2 自定義匿名函數,自定義匿名函數 lambda,(lambda ),功能:如果對一個函數只使用一次或對其使用是暫時,可用些函數來定義,它與defun基本相同,只是沒有函數名,返回值為最后 的值; 可帶形式參數和局部變量,(setq X 1 Y 2 Z 3) (apply (lambda (X Y) (setq Z (* X Y) ) (5 10) ),5.2 自定義匿名函數,自定義匿名函數 lambda,(lambda ),功能:如果對一個函數只使用一次或對其使用是暫時,可用些函數來定義,它與defun基本相同,只是沒有函數名,返回值為

溫馨提示

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

評論

0/150

提交評論