模具CAD-CAM常用軟件(DOC 44頁)_第1頁
模具CAD-CAM常用軟件(DOC 44頁)_第2頁
模具CAD-CAM常用軟件(DOC 44頁)_第3頁
模具CAD-CAM常用軟件(DOC 44頁)_第4頁
模具CAD-CAM常用軟件(DOC 44頁)_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、模具CAD/CAM常用軟件第一節(jié) 各種流行的CADCAM軟件AutoCAD是應用最廣泛的CAD軟件,它優(yōu)良的二次開發(fā)工具使其能夠活躍在各類CAD專業(yè)領域。CAXA是國產(chǎn)CAD/CAM軟件,其初級產(chǎn)品CAXA電子圖板具有較廣泛的應用,可幫助設計人員進行零件圖、裝配圖、工藝圖表、平面包裝的設計。PICAD是另一種國產(chǎn)CAD軟件產(chǎn)品,是參數(shù)化、集成化的計算機輔助設計系統(tǒng),也是二維CAD支撐平臺及交互式工程繪圖系統(tǒng)。開目CAD是基于微機平臺的CAD和圖紙管理軟件。開目CAD支持多種幾何約束種類及多視圖同時驅(qū)動,具有局部參數(shù)化的功能,能夠處理設計中的過約束和欠約束的情況。開目CAD實現(xiàn)了CAD、CAPP

2、、CAM的集成。高華CAD系列產(chǎn)品包括計算機輔助繪圖支撐系統(tǒng)GHDrafting、機械設計及繪圖系統(tǒng)GHMDS、工藝設計系統(tǒng)GHCAPP、三維幾何造型系統(tǒng)GHGEMS、產(chǎn)品數(shù)據(jù)管理系統(tǒng)GHPDMS及自動數(shù)控編程系統(tǒng)GHCAM。大恒通用機械CAD系統(tǒng)最早開發(fā)于1991年,是針對機械制造及設計行業(yè)的通用機械CAD系統(tǒng)。Solidedge是三維CAD系統(tǒng),它向用戶提供了從三維零件建模,裝配設計到最終的二維圖制作的一整套完善的CAD工具。SolidWorks是基于Windows的機械設計軟件,是以Windows為平臺,以SolidWorks為核心的各種應用的集成,包括結構分析、運動分析、工程數(shù)據(jù)管理和

3、數(shù)控加工等。金銀花(Lonicera)系統(tǒng)主要應用于機械產(chǎn)品設計和制造中,它可以實現(xiàn)設計制造一體化和自動化。GS-CAD是一個基于微機、中文Windows95/NT平臺的三維CAD系統(tǒng)。MDT是Autodesk公司在PC平臺上開發(fā)的三維機械CAD系統(tǒng)。它以三維設計為基礎,集設計、分析、制造以及文檔管理等多種功能為一體;為用戶提供了從設計到制造一體化的解決方案。Pro/Engineer簡稱Pro/E,是一個面向機械工程的CAD系統(tǒng)。PTC公司提出的單一數(shù)據(jù)庫、參數(shù)化、基于特征、全相關的概念改變了機械CAD/CAE/CAM的傳統(tǒng)觀念。UG-是一個集CAD、CAE和CAM于一體的機械工程輔助系統(tǒng),U

4、G-為用戶提供了一個全面的產(chǎn)品建模系統(tǒng)。SurfCAM是基于Windows的能夠自動生成零件刀具軌跡,以及進行零件加工的NC代碼,具有強大的通用后置處理模塊的輔助制造軟件。Mastercam為PC級CAM軟件。 Mastercam包括了銑削加工(milling),車削加工(turning),線切割加工(wire EDM)等主要模塊,適用于機械設計與制造的各個領域。Cimatron系統(tǒng)是以色列的CAD/CAM/PDM產(chǎn)品,該系統(tǒng)提供了比較靈活的用戶界面,優(yōu)良的三維造型、工程繪圖,全面的數(shù)控加工,各種通用、專用數(shù)據(jù)接口以及集成化的產(chǎn)品數(shù)據(jù)管理。I-DEAS是全世界制造業(yè)用戶較廣泛應用的大型CAD/

5、CAE/CAM軟件。CATIA系統(tǒng)是在起源于航空工業(yè)的CADAM系統(tǒng)基礎上擴充開發(fā)的CAD/CAM/CAE/PDM應用系統(tǒng)。Euclid軟件是為英法聯(lián)合研制協(xié)和號超音速客機而開發(fā)的CAD軟件。DUCT軟件是三維復雜形體造型設計與制造CAD/CAM軟件。第二節(jié) 通用CAD軟件AutoCAD一、AutoCAD的二維繪圖命令二維繪圖命令是AutoCAD的基礎部分。無論二維圖形如何復雜,都是由點、線、圓、圓弧等最基本的圖形要素組成。1. 點的輸入在各項CAD操作中,點的輸入是最基本的操作,AutoCAD共有四種點的輸入方式。(1) 通過鍵盤輸入點 通過鍵盤輸入點的坐標值是一種精確的點輸入方式,點的坐標

6、值輸入有三種坐標方式:絕對直角坐標(輸入x,y)、相對直角坐標(輸入x,y)和相對極坐標(輸入r<a),可根據(jù)需要任意選取。(2) 通過光標輸入設備輸入點 通過光標輸入設備輸入點的優(yōu)點是方便和快捷。一般情況下,用光標輸入設備輸入點的坐標值是不精確的,通過AutoCAD的Snap功能,可以使輸入點達到一定的精度。(3) 利用目標捕捉功能輸入點 這是利用光標輸入設備精確輸入點的一種方式,根據(jù)AutoCAD的Osnap功能,它可以精確捕捉到圖形的特定點位置,例如線段的端點、中點,圓和圓弧的圓心及象限點,切點和垂足等等。(4) 利用LISP函數(shù)輸入點 利用LISP語言中的函數(shù)功能也可以輸入點,這

7、是自動繪制圖形的基礎,在AutoCAD二次開發(fā)中經(jīng)常使用這種方式完成點的輸入。2. 直線的繪制繪制直線的命令是LINE。一般只要輸入直線的兩個端點,即可生成直線。繪制好圓弧后,在LINE命令后直接鍵入回車,然后輸入直線長度,可以在圓弧終點處繪制圓弧的切線。3. 圓的繪制繪制圓的命令是CIRCLE。圓的繪制參數(shù)是圓心和半徑(或直徑)。也可以根據(jù)需要繪制與其他圖線相切的圓。4. 圓弧的繪制繪制圓弧的命令是ARC。與直線和圓相比,圓弧的繪制比較復雜,考慮到圓弧具有順時針和逆時針兩種方向,AutoCAD共安排了7種繪制圓弧的方法,其繪制參數(shù)分別為圓弧的起點、中點、終點;起點、圓心、終點;起點、圓心、角

8、度; 起點、圓心、弧長;起點、終點、角度;起點、終點、半徑;起點、終點、起始方向。繪制與剛繪制的直線或圓弧相切的圓弧時,可以直接鍵入回車,然后輸入圓弧終點,此時圓弧的起點即為前繪線段的終點,圓弧的起始方向即為前繪線段的終止方向。5. 多段連線多段連線(POLYLINE)是由直線和圓弧首尾相連組合成的復合線段,繪制多段連線采用PLINE命令,類同于繪制直線和圓弧。實踐中常用PEDIT命令編輯直線和圓弧來得到多段連線。二、圖形編輯AutoCAD提供的圖形編輯方法能夠有效地修改圖形,并能夠顯著提高繪圖效率。常用的圖形編輯命令有刪除(ERASE)、復制(COPY)、鏡面對稱復制(MIRROR)、陣列復

9、制(ARRAY)、等距偏移復制(OFFSET)、移動(MOVE)、轉(zhuǎn)動(ROTATE)、縮放(SCALE)、修剪(TRIM)、延伸(EXTEND)、倒角(CHAMFER)、倒圓角(FILLET)、分解(EXPLODE)和多段連線編輯(PEDIT)。熟練掌握這些圖形編輯命令可以有效地提高AutoCAD應用水平。三、其他功能AutoCAD的其他功能還有圖形顯示、文字、剖面線、尺寸標注、圖層管理、圖塊定義及調(diào)用、動畫、三維圖形、二次開發(fā)工具等。第三節(jié) AutoCAD的二次開發(fā)工具一、 AutoCAD定制菜單表3-1 菜單文件類型菜單文件類型類型說明.MNU原始 ASCII 菜單文件,即用戶通常編輯或

10、創(chuàng)建的文件。.MNC已編譯的菜單文件;一種二進制文件,包含用于定義菜單或其他界面元素的功能及外觀的命令字符串和菜單語法。首次加載 MNU 文件時,AutoCAD 將編譯此文件。.MNR菜單資源文件;一種二進制文件,包含由菜單或其他界面元素使用的位圖。AutoCAD 每次編譯 MNC 文件時,均生成菜單資源文件。.MNS源菜單文件;一種與 MNU 文件相同的 ASCII 文件,但是不包含注釋或特殊格式。每次菜單文件的內(nèi)容被更改時,AutoCAD 將修改源菜單文件。.MNT菜單資源文件。僅在 MNR 文件無效(例如,只讀)時生成該文件。.MNL菜單 LISP 文件;包含菜單文件使用的 AutoLI

11、SP 表達式。當加載與菜單 LISP 文件具有相同文件名的菜單文件時,AutoCAD 會將菜單 LISP 文件加載至內(nèi)存。用文本編輯器打開ACAD.MNU文件觀察菜單文件的結構,可以看到其內(nèi)容包含如表3-2所示的幾個區(qū)域。其中*POP1至*POP11定義了下拉菜單。菜單文件中包含的一些特殊字符的說明見表3-3。表3-2 ACAD.MNU文件的菜單區(qū)域及其功能主菜單名稱區(qū)數(shù)N功能用途*MENUGROUP菜單組*BUTTONSn14定點設備按鈕菜單*AUXn14系統(tǒng)定點設備菜單*POPn09990 對象捕捉快捷菜單116 基本型下拉菜單17499 將menuload加入下拉菜單中500999 快捷

12、菜單區(qū)域*TOOLBARS工具欄定義*IMAGE圖像菜單*SCREEN屏幕菜單*TABLETn14數(shù)字化儀菜單*HELPSTRINGS輔助功能說明區(qū)(顯示于狀態(tài)區(qū))*ACCELERATORS加速鍵定義注意事項如果沒有定義POP1POP16,AutoCAD會自動插入2個預設的下拉菜單(File和Edit)表3-3 菜單字符說明字符說明*子菜單-菜單項分隔符->引出子菜單<-子菜單結束禁用菜單項的前綴符!.給菜單項打上復選標記的前綴符&指定菜單快速鍵,如S&ample顯示為Sample,快捷鍵為a/指定菜單快速鍵,如/aSample顯示為Sample,快捷鍵為a=*顯示

13、當前頂層的圖像、下拉或快捷菜單*CC重復項的前綴$宏表達式的特殊字符CTRL暫停等候用戶輸入(不能用于加速鍵)_轉(zhuǎn)換AutoCAD命令及其后的關鍵字+延續(xù)宏到下一行;RETURN/注釋行,不限行數(shù),用作版權聲明或注釋方括號內(nèi)為菜單項名稱用文本編輯器打開ACAD.MNU文件,在pop11菜單后面插入圖3-1所示的pop12菜單ASCII代碼,將其保存在DCAD.MNU文件中,用AutoCAD的MENU命令加載DCAD.MNU后,可以看到下拉菜單在Help菜單項的后面增加了名為DCAD的一列新菜單,其效果如圖3-2所示。方括號內(nèi)的字符串構成了下拉菜單的顯示內(nèi)容,DCAD下拉菜單列中包含了“工藝性分

14、析”、“排樣”、“CAM”、“模板”和“模具標準件”5個子菜單。點取“CAM”子菜單中“3B指令”項,其對應的菜單項內(nèi)容為“3B指令CC(load "dcad-ww") w3b ”。其中“3B指令”規(guī)定了菜單項顯示文字為“3B指令”;“CC”相當于先從鍵盤輸入兩次CTRL-C以終止任何AutoCAD可能正在執(zhí)行的命令,以便無障礙地執(zhí)行后面的指令;“(load "dcad-ww")”的作用是加載LISP程序文件“dcad-ww.lsp”;“w3b”表示執(zhí)行AutoCAD二次開發(fā)新建的命令“w3b”從AutoCAD圖形產(chǎn)生數(shù)控線切割機床3B加工指令程序。菜單

15、項中的空格所起的作用相當于輸入回車。*pop12DCAD輸入清單CC(load "dcad-i-2000")(if (null c:fdcad) (load "DCAD") input->工藝性分析小孔CC(load "dcad-b-2000-k") (load "DCAD") (load "Dcad-b") DCADBK孔距CC(load "dcad-b-2000-jb") (load "DCAD") (load "Dcad-b"

16、;) DCADBJB凸臂CC(load "dcad-b-2000-tz") (load "DCAD") (load "Dcad-b") DCADBTZ窄槽CC(load "dcad-b-2000-tz") (load "DCAD") (load "Dcad-b") DCADBTZ圓弧CC(load "dcad-b-2000-y") (load "DCAD") (load "Dcad-b") DCADBY孔間壁厚CC(

17、load "dcad-b-2000-b") (load "DCAD") (load "Dcad-b") DCADBB<-復合模CC(load "dcad-b-2000-f") (load "DCAD") (load "Dcad-b") DCADBF->排樣定搭邊值CC(load "dcad-l-2000-d") (load "DCAD") (load "dcad-l-2000") dbz單排排樣CC(lo

18、ad "dcad-l-2000-s") (load "DCAD") (load "dcad-l-2000") lay1<-多排排樣CC(load "dcad-l-2000-v") (load "DCAD") (load "dcad-l-2000") LAYN->CAM3B指令CC(load "dcad-ww") w3b穿孔代碼CC(load "dcad-ww") punch代碼校驗CC(load "dcad-ww&

19、quot;) check<-穿孔碼轉(zhuǎn)換3B指令CC(load "dcad-ww") p2b設計CCDESIGN->模板上模座CC(load "dcad-mb") (mb) smz墊板CC(load "dcad-mb") (mb) db固定板CC(load "dcad-mb") (mb) gdb卸料板CC(load "dcad-mb") (mb) xlb凹模CC(load "dcad-mb") (mb) am下模座CC(load "dcad-mb"

20、;) (mb) xmz下固定板CC(load "dcad-pt") (mb) xgdb下墊板CC(load "dcad-pt") (mb) xdb空心墊板CC(load "dcad-mb") (mb) kxdb-<-圖框CC(load "dcad-mb") tukuang->模具標準件模柄(if (null c:mb) (load "dcad-pt") mb橡皮(if (null C:XP) (load "dcad-pt") XP導柱(IF (NULL C:DZ)

21、 (LOAD "DCAD-PT") DZ導套(IF (NULL C:DT) (LOAD "DCAD-PT") DT導料板(IF (NULL C:DT) (LOAD "DCAD-PT") DLB承料板(IF (NULL C:DT) (LOAD "DCAD-PT") CLB卸料螺釘(if (null c:XLLD) (load "dcad-pt") XLLD固定導銷(IF (NULL C:DT) (LOAD "DCAD-PT") GDDLX<-圓凸模(IF (NULL C:

22、DT) (LOAD "DCAD-PT") YTM裝配示意圖CC(load "dcad-z") zpt圖3-1 DCAD子菜單ASCII代碼二、LISP語言AutoCAD內(nèi)嵌的兩種LISP語言(AutoLISP和Visual LISP)是與AutoCAD結合最為完美的程序語言。AutoLISP是AutoCAD選用的第一個強有力的開發(fā)工具,從1985年問世的AutoCAD V2.18版本開始,一直沿用至今。AutoLISP是解釋型語言,它的欠缺之處是運行效率較低,源程序缺乏保密性。針對AutoLISP的弱點,AutoCAD在其2000版本中又推出了具有高運行

23、效率的編譯型LISP語言Visual LISP。Visual LISP在AutoLISP的基礎上增加了源程序編輯環(huán)境、編譯器以及一些增強函數(shù)。實際上,過去編寫的AutoLISP程序都可以在Visual LISP中編譯和運行,即Visual LISP能夠完全兼容AutoLISP。(一)LISP語言簡介LISP是英語LISt Processing 的縮寫,意思是一種編制計算機程序的表處理語言。LISP語言1960年起源于美國麻省理工學院(MIT),是一種著名的人工智能計算機語言。與BASIC等其他計算機語言一樣,LISP語言也有許多版本,現(xiàn)在使用最多的是COMMON LISP。AutoCAD軟件中

24、鑲嵌的AutoLISP與COMMON LISP很接近,它增加了調(diào)用AutoCAD命令的功能和一些幾何函數(shù),并削減了COMMON LISP中一些不常用的函數(shù)。作為一種高級語言,LISP可以完成其他許多高級語言(如FORTRAN、BASIC、PASCAL、C等)能夠完成的工作,諸如計算、邏輯判斷、循環(huán)運算等等。LISP語言具有一些獨特的優(yōu)點,使它特別適用于人工智能和CAD領域,這也是AutoCAD在眾多計算機語言中首先選擇其作為開發(fā)工具的主要理由。表(List)在LISP語言中具有極其重要的意義。表是LISP語言的重要成份,它由若干個元素(Element)和一對圓括號組成。元素則包括表和原子(At

25、om)兩種類型。原子指常數(shù)(Constant)或者符號變量(Variable)。表中的元素可以是表,因此表可具有嵌套結構。在LISP語言中,表既可以構成數(shù)據(jù),也可以組成程序。如(0.5 1.2)和(1 5.3 3)都是用表的形式表示的數(shù)據(jù)。前者可以表示一個二維點,x坐標值為0.5,y坐標值為1.2。后者可以表示一個三維點,x坐標值為1,y坐標值為5.3,z坐標值為3。(1 2 5 8.2 “A” 9)可以表示一個六維向量,與其他計算機語言中的一維數(shù)組相當,但是表中元素的數(shù)據(jù)類型可以各不相同,而同一數(shù)組中各個數(shù)據(jù)的類型都必須相同。利用表的嵌套結構,容易獲得類似的多維數(shù)組,但是其中各維的長度可以不

26、相等,并且表中元素的數(shù)據(jù)類型可以各不相同,所以在表示數(shù)據(jù)時,表比其他計算機語言中的多維數(shù)組更顯優(yōu)越性。AutoCAD中的圖形數(shù)據(jù)(包括類型、圖層、顏色、線型、特征、坐標值等)都可采用表的形式表達。如AutoCAD中表達一根直線所用的表為(-1 . <Entity name: 24082f8>) (0 . "LINE") (330 . <Entity name: 2406cf0>) (5 . "2F7") (100 . "AcDbEntity") (67 . 0) (410 . "Model"

27、) (8 . "0") (100 . "AcDbLine") (10 187.701 -45.8475 0.0) (11 5.0 -45.8475 0.0) (210 0.0 0.0 1.0);表達一個圓所用的表為(-1 . < Entity name: 7ef50e80>) (0 . "CIRCLE") (330 . < Entity name: 7ef50cf8>) (5 . "88") (100 . "AcDbEntity") (67 . 0) (410 . &qu

28、ot;Model") (8 . "0") (100 . "AcDbCircle") (10 0.0 0.0 0.0) (40 . 10.0) (210 0.0 0.0 1.0)LISP語言的程序結構非常簡單,它也是由表組成。LISP程序采用前綴形式:(元素0 元素1 元素2 )構成LISP程序時,表中元素0必為函數(shù)名稱,其后的各個元素為該函數(shù)(元素0)的變量。LISP程序?qū)ψ帜傅拇笮懯遣患訁^(qū)分的。例如(+ 1 2)是一個LISP程序的例子,其中為函數(shù)名,1和2為函數(shù)的變量。LISP語言是一種函數(shù)型計算機語言,LISP語言擁有的功能是通過其函數(shù)

29、表現(xiàn)出來的。(二)LISP函數(shù)LISP函數(shù)具有返回值和特定的功能。如上例中,函數(shù)返回值為3,函數(shù)的特定功能是求和。各種類型的LISP函數(shù)用來完成LISP語言所有的功能,下面將一些最基本的LISP函數(shù)進行分類,以便大家能夠?qū)ISP語言及其在CAD中的應用有所了解。1. 代數(shù)運算函數(shù)代數(shù)運算函數(shù)用于完成代數(shù)運算,包括賦值函數(shù)(SETQ),四則運算函數(shù)(+、-、*、/),三角函數(shù)(SIN、COS、ATAN)以及其他代數(shù)函數(shù)(ABS、EXP、EXPT、SQRT)。代數(shù)運算函數(shù)的使用方法很容易掌握,唯一要注意的是LISP程序具有前綴結構的特點,各種函數(shù)運算都必須將函數(shù)名作為LISP表達式中最前面的元素

30、。1) SETQ函數(shù)的格式為(SETQ v1 e1 v2 e2 vn en)。其功能是將ei的計算值賦予變量vi,函數(shù)返回值為en的計算值。(注:方括號部分是可選項,以下同。)例如,(SETQ x 1 y (+ 1 2)將常數(shù)1的計算值1賦予變量x,LISP表達式(+ 1 2)的計算值3賦予變量y,函數(shù)返回值為3。2) +函數(shù)的格式為(+ n1 n2 n3 nm)。其功能是對函數(shù)變量求和,函數(shù)返回值為變量之和:n1+n2+n3+nm。3) -函數(shù)的格式為(- n1 n2 n3 nm)。其功能是對函數(shù)變量求差。當m1,函數(shù)只有一個變量n1時,函數(shù)返回值為0-n1,即-n1;當m2時,函數(shù)返回值為

31、n1-(n2+n3+nm)。4) *函數(shù)的格式為(* n1 n2 n3 nm)。其功能是對函數(shù)變量求積,函數(shù)返回值為變量的乘積:n1·n2·n3··nm。5) 函數(shù)的格式為(/ n1 n2 n3 nm)。其功能是求函數(shù)變量的商,函數(shù)返回值為n1 /(n2·n3··nm)。當函數(shù)變量均為整型數(shù)時,函數(shù)返回值也為整型數(shù);當函數(shù)變量中至少有一個為實型數(shù)時,函數(shù)返回值為實型數(shù)。例如,(/ 3 2)的返回值為1,而(/ 3 2.0)的返回值則為1.5。6) SIN函數(shù)的格式為(SIN n)。其功能是求函數(shù)變量n的正弦值,函數(shù)返回n的正

32、弦值。變量n的單位為弧度。例如,(SIN (/ PI 2))的返回值為1.0,式中PI為LISP符號變量,表示圓周率值。7) COS函數(shù)的格式為(COS n)。其功能是求函數(shù)變量n的余弦值,函數(shù)返回n的余弦值。變量n的單位為弧度。用法與SIN函數(shù)相同。8) ATAN函數(shù)的格式為(ATAN n1 n2)。其功能是求反正切值arc tan n1 或 arc tan(n1/n2)。當只有一個函數(shù)變量時,函數(shù)返回值的范圍為(-/2,/2),當存在2個函數(shù)變量時,函數(shù)返回值的范圍為(-,。函數(shù)返回值的角度單位為弧度。例如:(ATAN 0)返回值0.0(ATAN 1)返回值0.785(ATAN 1 1)返

33、回值0.785(ATAN 1 1)返回值2.356(ATAN 1 1)返回值-0.785(ATAN 1 1)返回值-2.356(ATAN 1 0)返回值1.5708(ATAN 1 0)返回值-1.5708(ATAN 0 1)返回值-3.14(ATAN 0 1)返回值3.149) ABS函數(shù)的格式為(ABS n)。其功能是求絕對值,函數(shù)返回n的絕對值。10) EXP函數(shù)的格式為(EXP n)。其功能是求e的指數(shù),函數(shù)返回en。11) EXPT函數(shù)的格式為(ESPT m n)。其功能是求m的指數(shù),函數(shù)返回mn。12) SQRT函數(shù)的格式為(SQRT n)。其功能是求 平方根,函數(shù)返回n的平方根。2

34、. 自定義函數(shù)LISP語言提供了許多基本函數(shù),稱為內(nèi)部函數(shù)或系統(tǒng)函數(shù)(如前述函數(shù)),利用這些函數(shù)可以直接編寫LISP程序,例如tan的LISP程序可編寫為(/ (SIN x) (COS x)。對于復雜的程序,直接利用基本函數(shù)編寫程序并不是一個好方法,編寫LISP程序更多是利用自定義函數(shù)來編寫程序,反之,大多數(shù)LISP程序也都編寫成為自定義函數(shù)的形式。自定義函數(shù)與其他語言中的子程序或函數(shù)最接近。自定義函數(shù)是用戶自己定義的函數(shù),又被稱為用戶函數(shù)或外部函數(shù)。自定義函數(shù)的使用和系統(tǒng)函數(shù)的使用方法是一致的,用戶在使用方面不會感覺到兩者的差異。自定義函數(shù)的格式為(DEFUN name (A1 A2 AL

35、/ V1 V2 VM) e1 e2 en)上表中第0個元素DEFUN是自定義函數(shù)的函數(shù)名,第1個元素name是符號變量,為自定義函數(shù)所定義的用戶函數(shù)的名稱。用戶函數(shù)名稱后是用戶函數(shù)的變量表,變量表中的元素都是所定義的用戶函數(shù)的局部變量,可分成以“”分隔的兩個部分,方括號表示可選項,表中“”前的可選項A1 A2 AL為新設立的用戶函數(shù)name的函數(shù)變量,表中另一可選項/ V1 V2 VM中的元素不是用戶函數(shù)的函數(shù)變量,它們僅僅是用戶函數(shù)name的局部變量。所謂局部變量是指僅僅在定義函數(shù)內(nèi)部存在并起作用的變量,它對定義函數(shù)以外的程序無任何干擾。變量表可以是空表(即表中不包含任何元素)。變量表后面是

36、函數(shù)定義體,決定了函數(shù)name的功能和返回值。函數(shù)name的返回值是en的計算結果。例如AutoLISP沒有提供正切函數(shù),用戶可以利用自定義函數(shù)自行定義正切函數(shù),定義正切函數(shù)的程序如下(DEFUN tan (x / y) (SETQ y (COS x)(IF (/= y 0) (/ (SIN x) y)以上程序中tan是用戶自行定義的正切函數(shù)名。x和y之間的符號“/”分隔開了局部變量中的自變量,“/”前的變量x是用戶函數(shù)tan的自變量,也是該函數(shù)的局部變量,而“/”后的變量y是tan函數(shù)的局部變量,但不是tan函數(shù)的自變量。程序中的DEFUN、SETQ、IF、/=、/、SIN和COS都是Aut

37、oLISP的基本函數(shù)。調(diào)用正切函數(shù)(tan 0),返還的正切函數(shù)值為0.0??梢钥吹?,用戶自定義的正切函數(shù)的使用方法與LISP系統(tǒng)函數(shù)SIN或COS的用法相同。用戶函數(shù)經(jīng)一次定義后可無限次使用。用戶在使用LISP語言的過程中,用自定義函數(shù)的方法可以逐漸積累自己的函數(shù),從而使編程越來越方便。3. 分支結構分支結構在LISP語言中有二分支結構和多分支結構兩種,與此相關的函數(shù)有:關系運算函數(shù)(、/、>、>、<、<、EQUAL),邏輯運算函數(shù)(AND、OR、NOT),二分支函數(shù)(IF)和歸并(PROGN)函數(shù)以及多分支函數(shù)(COND)。1) 關系運算函數(shù)判斷函數(shù)變量相互間是否符

38、合函數(shù)所定義的相等或不等關系。函數(shù)的格式為( e1 e2 en)。當函數(shù)變量e1、e2、en全部相等時,函數(shù)返回T,否則返回NIL。/、>、>、<和<函數(shù)的用法也是相同的,其功能如同其函數(shù)名所示。EQUAL函數(shù)的格式為(EQUAL e1 e2 e3)。EQUAL用來比較兩個實型數(shù)或表是否相等,相等時函數(shù)返回T,否則返回NIL。比較兩個實型數(shù)e1和e2時,取一個很小的正數(shù)e3,其判斷準則是當|e1-e2|e3 時函數(shù)返回T,否則返回NIL。2) AND函數(shù)的格式為(AND e1 e2 en)。當函數(shù)變量e1、e2、en中全部有值時,函數(shù)返回T,否則返回NIL。3) OR函

39、數(shù)的格式為(OR e1 e2 en)。當函數(shù)變量e1、e2、en中至少有一個有值時,函數(shù)返回T,否則返回NIL。4) NOT格式為(NOT e)。當函數(shù)變量e有值時,函數(shù)返回NIL,否則返回T。5) IF函數(shù)的格式是(IF <判別式> e1 e2),它的功能是實現(xiàn)程序的二分支結構。當判別式的結果為非NIL時,函數(shù)執(zhí)行e1并返回e1的計算值,否則函數(shù)執(zhí)行e2并返回e2的計算值,若可選項e2不存在,則函數(shù)結束運行,返回NIL。例如(SETQ a (GETREAL “A”) c (GETREAL “C”)(SETQ x (IF (/= a 0) (/ c a)(SETQ y (IF (&

40、gt; a 0) (+ c a) (- c a)6) PROGN函數(shù)的格式為(PROGN e1 e2 en),它的功能是將若干個LISP表達式歸并為一個LISP表達式,常用于IF函數(shù)內(nèi),以便使IF函數(shù)能夠在e1和e2的格式規(guī)定中作更多的事情。7) COND函數(shù)的格式為(COND(測試式1 e11 e12 e1i)(測試式2 e21 e22 e2j) (測試式m em1 em2 emk)函數(shù)功能是實現(xiàn)多分支結構。COND函數(shù)的變量都為表,變量表中的第一個元素是測試式,其余元素是當測試結果為非NIL時順序執(zhí)行的LISP表達式。COND函數(shù)依次對測試式進行測試,當測試結果為非NIL時,順序執(zhí)行其后的

41、LISP表達式。函數(shù)返回值為最后執(zhí)行的表達式計算結果。變量表中可以只有一個元素,即可以只有測試式,此時的函數(shù)返回值為測試結果。例3-1 編寫下列分段函數(shù)的LISP程序。解1:可以利用COND函數(shù)處理該分段函數(shù),編寫程序如下A)編寫程序(DEFUN L3-1-1 (x)(COND (AND (> x 10) (<= x 6) 2) (AND (> x -6) (<= x 2) 1) (AND (> x 2) (<= x 2) 0) (AND (> x 2) (<= x 6) 1) (T 2)B)調(diào)用程序(SETQ n (L3-1-1 1))后函數(shù)L

42、3-1-1返回0,并將該值賦予變量n。解2:利用COND函數(shù)順序測試的特點,可以編寫更簡化的程序如下A)編寫程序(DEFUN L3-1-2 (x)(COND (<= x 10) 2) (<= x 6) 2) (<= x 2) 1) (<= x 2) 0) (<= x 6) 1) (T 2))B)調(diào)用程序(SETQ n (L3-1-2 1))后函數(shù)L3-1-2返回0,并將該值賦予變量n。4. 交互式輸入函數(shù)交互式輸入函數(shù)提供控制臺輸入,包括鍵盤輸入和光標設備輸入。交互式輸入函數(shù)又稱為GET族輸入函數(shù),該族函數(shù)均以字符GET開頭。交互式輸入函數(shù)包括整型數(shù)輸入函數(shù)(GE

43、TINT)、實型數(shù)輸入函數(shù)(GETREAL)、字符串輸入函數(shù)(GETSTRING)、點輸入函數(shù)(GETPOINT)、角度輸入函數(shù)(GETANGLE)、距離輸入函數(shù)(GETDIST)、關鍵字輸入函數(shù)(GETKWORD)和初始化輸入函數(shù)(INITGET)。交互式輸入函數(shù)為專業(yè)軟件的二次開發(fā)提供了與AutoCAD相同的交互界面,簡化了軟件的開發(fā)過程和推廣工作。1) GETINT函數(shù)的格式為(GETINT 提示信息)。其功能是輸入整型數(shù),函數(shù)返回值為從鍵盤輸入的整型數(shù)。提示信息為字符串,用于輸入時給出提示。2) GETREAL函數(shù)的格式為(GETREAL 提示信息)。其功能是輸入實型數(shù),函數(shù)返回值為從

44、鍵盤輸入的實型數(shù)。3) GETSTRING函數(shù)的格式為(GETSTRING 開關變量 提示信息)。其功能是輸入字符串,函數(shù)返回值為從鍵盤輸入的字符串。當不選用開關變量或開關變量無值時,輸入字符串可以用空格或RETURN結束,輸入字符串中無法包括空格。開關變量存在且有值時,則輸入字符串中可以包含空格,但必須用RETURN結束字符串。AuotLISP通過這種方式,使字符串輸入和AutoCAD在方式上保持一致。4) GETPOINT函數(shù)的格式為(GETPOINT pt 提示信息)。其功能是通過鍵盤或光標設備輸入點??蛇x項pt是一個表示點的表,當pt存在時,移動光標會出現(xiàn)從pt到光標的連線(皮筋線),

45、此時pt也作為相對坐標系的原點對采用相對坐標輸入點產(chǎn)生作用。當pt不存在時,相對坐標系的原點由AutoCAD系統(tǒng)變量LASTPOINT決定。5) GETANGLE函數(shù)的格式為(GETANGLE pt 提示信息)。其功能是通過鍵盤或光標設備輸入角度。函數(shù)返回值為表示角度的實型數(shù),單位為弧度。Pt的作用同前。AuotLISP通過這種方式,使角度輸入和AutoCAD在方式上保持一致。6) GETDIST函數(shù)的格式為(GETDIST pt 提示信息)。其功能是通過鍵盤或光標設備輸入長度。函數(shù)返回值為表示距離的實型數(shù)。Pt的作用同前。AuotLISP通過這種方式,使長度輸入和AutoCAD在方式上保持一

46、致。7) GETKWORD函數(shù)的格式為(GETKWORD 提示信息)。其功能是通過鍵盤輸入關鍵字。函數(shù)返回值定義為關鍵字的字符串。關鍵字由下面的INITGET函數(shù)定義。8) INITGET函數(shù)的格式為(INITGET bits 關鍵字)。其功能是控制GET×××函數(shù)的輸入。bits為二進制概念的控制位,能夠最大限度的減少輸入錯誤。表3-4中,十進制數(shù)1(bit 0)防止空輸入(ENTER);2(bit 1)防止0輸入;4(bit 2)防止負數(shù)輸入;8(bit 3)允許用戶輸入LIMITS規(guī)定界限以外的點;16(bit 4)(尚未使用);32(bit 5)使用虛線作

47、皮筋線;64(bit 6)阻止Z坐標輸入;128(bit 7)允許任意輸入。關鍵字除了用于GETKWORD函數(shù),還能夠用于其他GET×××函數(shù),擴大它們的使用范圍。如關鍵字用于GETINT函數(shù),能夠使該函數(shù)根據(jù)輸入內(nèi)容返回整型數(shù)或關鍵字。而沒有關鍵字時,GETINT函數(shù)只能夠返回整型數(shù)。關鍵字是包含在雙引號內(nèi)的字符和數(shù)字,關鍵字之間用空格分隔,例如“Abc Def”定義了Abc和Def兩個關鍵字。關鍵字中的大寫字母在輸入時可以作為關鍵字的縮寫。表3-4 控制位和輸入函數(shù)的關系函數(shù)關鍵字控制位非空(1)(bit 0)非0(2)(bit 1)非負(4)(bit 2)非

48、限制(8)(bit 3)用虛線(32)(bit 5)二維距離(64)(bit 6)任意輸入(128)(bit 7)GETINTGETREALGETDISTGETANGLEGETPOINTGETKWORDINITGET函數(shù)只對其后的GET×××函數(shù)起一次作用。對于程序段(INITGET 7 “Abc Def”)(SETQ A(GETINT “A”)運行時,輸入空回車、0或負數(shù),系統(tǒng)都會要求重新輸入,只有在輸入正數(shù)時程序才會將整型數(shù)賦予變量A。當輸入a或abc時,程序會將關鍵字“Abc”作為字符串賦予變量A。而輸入d或def時,程序則將“Def”賦予變量A。輸入其他字

49、母,程序也會要求重新輸入,直至符合輸入要求。例如,在AutoCAD繪圓命令CIRCLE執(zhí)行時,有如下提示Command: circleSpecify center point for circle or 3P/2P/Ttr (tan tan radius):Specify radius of circle or Diameter:首先可以輸入點或關鍵字,然后可以輸入點、數(shù)值或關鍵字。同樣的輸入效果可以用以下LISP程序達到:(INITGET 1 “3P 2P Ttr”)(SETQ p(GETPOINT “Specify center point for circle or 3P/2P/Ttr

50、(tan tan radius):”) (INITGET 7 “Diameter”)(SETQ r (GETDIST p “Specify radius of circle or Diameter:”)5. 字符串函數(shù)字符串函數(shù)專門用于處理字符串,包括字符串長度函數(shù)(STRLEN)、字符串鏈接函數(shù)(STRCAT)和子字符串函數(shù)(SUBSTR)。1) STRLEN函數(shù)的格式是(STRLEN s)。函數(shù)變量是字符串,STRLEN函數(shù)的功能是求出字符串s的長度,即組成字符串s的字符個數(shù),函數(shù)返回整型數(shù)。如(STRLEN “abc”)返回3。2) STRCAT函數(shù)的格式是(STRCAT s1 s2 s

51、n)。它的功能是按變量順序合并字符串s1 、s2 、 、sn,函數(shù)返回合并后的字符串。如(STRCAT “abc” “def”)返回字符串“abcdef”。3) SUBSTR函數(shù)的格式是(SUBSTR s m n),函數(shù)變量s為字符串,m和n為整型數(shù)。SUBSTR函數(shù)從字符串s中取出一部分作為函數(shù)的返回值。返回的子字符串從字符串s的第m個字符開始,其長度(字符數(shù))為n 。若n不存在,則返回的子字符串從字符串s的第m個字符開始至字符串末尾。字符串排列順序為從左到右,起首字符序號為1。如(SUBSTR “Good Morning” 6 3)返回字符串“Mor”,(SUBSTR “Good Morn

52、ing” 6)返回字符串“Morning”。6. 表處理函數(shù)表處理函數(shù)是LISP語言中最具特色的一類函數(shù),用來生成表(LIST函數(shù))或?qū)Ρ磉M行各種操作,如往表中添加元素(CONS函數(shù))、從表中刪除元素(CDR函數(shù)和MEMBER函數(shù))、提取表中元素(函數(shù)CAR、CADR函數(shù)、CADDR函數(shù)和NTH函數(shù))、檢索表中元素(ASSOC函數(shù))、替換表中元素(SUBST函數(shù))、合并表(APPEND函數(shù))、顛倒表中元素順序(REVERSE函數(shù))等等,其他的表處理函數(shù)還有LENGTH、APPLY、MAPCAR、FOREACH等等。其中的APPLY函數(shù)和MAPCAR函數(shù)又被稱為泛函數(shù),即在原來函數(shù)自變量位置上出

53、現(xiàn)了函數(shù),這就大大增加了程序的適用性。1) LIST函數(shù)的格式是(LIST e1 e2 en)。它的功能是把e1、e2、en的計算值組成一個表。如(LIST 1 (+ 1 2) “A”)返回表(1 3 “A”)。2) CONS函數(shù)的格式是(CONS e L),它的功能是把e的計算值加入表L中。如(CONS (+ 1 2) (LIST 1 2))返回表(3 1 2)3) CDR函數(shù)的格式是(CDR L),它的功能是去除表L中為首的元素,函數(shù)返回剩余的表。如(CDR (LIST 1 2)返回表(2)。4) MEMBER函數(shù)的格式是(MENBER e L), 它的功能是提取表L中e及其后面元素組成的

54、表。如(MENBER 3 (LIST 1 2 3 4 5)返回表(3 4 5)。5) CAR函數(shù)的格式是(CAR L),它的功能是提取表L中第0個元素,函數(shù)返回該元素。如(CAR (LIST 1 2 3)返回1。在CAD中常被用來提取點中的X坐標值。6) CADR函數(shù)的格式是(CADR L),它的功能是提取表L中第1個元素,函數(shù)返回該元素。如(CADR (LIST 1 2 3)返回2。在CAD中常被用來提取點中的Y坐標值。7) CADDR函數(shù)的格式是(CADDR L),它的功能是提取表L中第2個元素,函數(shù)返回該元素。如(CADDR (LIST 1 2 3)返回3。在CAD中常被用來提取點中的Z

55、坐標值。8) NTH函數(shù)的格式是(NTH n L),它的功能是提取表L中第n個元素,函數(shù)返回該元素。表中元素的排列順序是從左到右,為首元素序號為0。如(NTH 2 (LIST 1 2 3 4)返回3。9) ASSOC函數(shù)的格式是(ASSOC e L),它的功能是檢索表L中包含以e值為起始元素的嵌套子表,函數(shù)返回檢索到的子表。如(ASSOC 2 (1 2) (2 3) (3 4))返回以2為起始元素的嵌套子表(2 3)。10) SUBST函數(shù)的格式是(SUBST m n L),它的功能是用m取代表L中的n,函數(shù)返回更換后的表。如(SUBST “QQ” “B” (LIST “A” “B” “AB”

56、 “”)返回表(“A” “QQ” “AB” “QQ”)。11) APPEND函數(shù)的格式是(APPEND m n),它的功能是合并表m和n,函數(shù)返回合并后的表。如(APPEND (LIST 1 2) (LIST 3 4 )返回表(1 2 3 4)。12) REVERSE函數(shù)的格式是(REVERSE L),它的功能是顛倒表中元素的順序,函數(shù)返回顛倒元素順序后的表。如(REVERSE (LIST 1 2 3 4)返回表(4 3 2 1)。13) LENGTH函數(shù)的格式是(LENGTH L),它的功能是求出表的長度(即表中元素的個數(shù)),函數(shù)返回表示元素數(shù)目的整型數(shù)。如(LENGTH (LIST 1 2 3 4)返回整型數(shù)4。7. 類型轉(zhuǎn)換函數(shù)類型轉(zhuǎn)換函數(shù)提供了變量和數(shù)據(jù)類型的相互轉(zhuǎn)換,包括整型數(shù)和實型數(shù)互相轉(zhuǎn)換函數(shù)(FIX和FLOAT)以及涉及字符串的轉(zhuǎn)換函數(shù)(RTOS和READ)。1) FIX函數(shù)用于將實型數(shù)轉(zhuǎn)換成整型數(shù),它的格式為(FIX n)。2) FLOAT函數(shù)用于將整型數(shù)轉(zhuǎn)換成實型數(shù),它的格式為(FLOAT n)。3) RTOS函數(shù)用于將

溫馨提示

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

評論

0/150

提交評論