![模具cadcam常用軟件說明說明_第1頁](http://file4.renrendoc.com/view/05e7f60bb80080caec63c69c61ac2a3f/05e7f60bb80080caec63c69c61ac2a3f1.gif)
![模具cadcam常用軟件說明說明_第2頁](http://file4.renrendoc.com/view/05e7f60bb80080caec63c69c61ac2a3f/05e7f60bb80080caec63c69c61ac2a3f2.gif)
![模具cadcam常用軟件說明說明_第3頁](http://file4.renrendoc.com/view/05e7f60bb80080caec63c69c61ac2a3f/05e7f60bb80080caec63c69c61ac2a3f3.gif)
![模具cadcam常用軟件說明說明_第4頁](http://file4.renrendoc.com/view/05e7f60bb80080caec63c69c61ac2a3f/05e7f60bb80080caec63c69c61ac2a3f4.gif)
![模具cadcam常用軟件說明說明_第5頁](http://file4.renrendoc.com/view/05e7f60bb80080caec63c69c61ac2a3f/05e7f60bb80080caec63c69c61ac2a3f5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
PAGE85/NUMPAGES86模具CAD/CAM常用軟件各種流行的CAD/CAM軟件AutoCAD是應(yīng)用最廣泛的CAD軟件,它優(yōu)良的二次開發(fā)工具使其能夠活躍在各類CAD專業(yè)領(lǐng)域。CAXA是國產(chǎn)CAD/CAM軟件,其初級產(chǎn)品CAXA電子圖板具有較廣泛的應(yīng)用,可關(guān)心設(shè)計人員進(jìn)行零件圖、裝配圖、工藝圖表、平面包裝的設(shè)計。PICAD是另一種國產(chǎn)CAD軟件產(chǎn)品,是參數(shù)化、集成化的計算機(jī)輔助設(shè)計系統(tǒng),也是二維CAD支撐平臺及交互式工程繪圖系統(tǒng)。開目CAD是基于微機(jī)平臺的CAD和圖紙治理軟件。開目CAD支持多種幾何約束種類及多視圖同時驅(qū)動,具有局部參數(shù)化的功能,能夠處理設(shè)計中的過約束和欠約束的情況。開目CAD實現(xiàn)了CAD、CAPP、CAM的集成。高華CAD系列產(chǎn)品包括計算機(jī)輔助繪圖支撐系統(tǒng)GHDrafting、機(jī)械設(shè)計及繪圖系統(tǒng)GHMDS、工藝設(shè)計系統(tǒng)GHCAPP、三維幾何造型系統(tǒng)GHGEMS、產(chǎn)品數(shù)據(jù)治理系統(tǒng)GHPDMS及自動數(shù)控編程系統(tǒng)GHCAM。大恒通用機(jī)械CAD系統(tǒng)最早開發(fā)于1991年,是針對機(jī)械制造及設(shè)計行業(yè)的通用機(jī)械CAD系統(tǒng)。Solidedge是三維CAD系統(tǒng),它向用戶提供了從三維零件建模,裝配設(shè)計到最終的二維圖制作的一整套完善的CAD工具。SolidWorks是基于Windows的機(jī)械設(shè)計軟件,是以Windows為平臺,以SolidWorks為核心的各種應(yīng)用的集成,包括結(jié)構(gòu)分析、運(yùn)動分析、工程數(shù)據(jù)治理和數(shù)控加工等。金銀花(Lonicera)系統(tǒng)要緊應(yīng)用于機(jī)械產(chǎn)品設(shè)計和制造中,它能夠?qū)崿F(xiàn)設(shè)計/制造一體化和自動化。GS-CAD是一個基于微機(jī)、中文Windows95/NT平臺的三維CAD系統(tǒng)。MDT是Autodesk公司在PC平臺上開發(fā)的三維機(jī)械CAD系統(tǒng)。它以三維設(shè)計為基礎(chǔ),集設(shè)計、分析、制造以及文檔治理等多種功能為一體;為用戶提供了從設(shè)計到制造一體化的解決方案。Pro/Engineer簡稱Pro/E,是一個面向機(jī)械工程的CAD系統(tǒng)。PTC公司提出的單一數(shù)據(jù)庫、參數(shù)化、基于特征、全相關(guān)的概念改變了機(jī)械CAD/CAE/CAM的傳統(tǒng)觀念。UG-Ⅱ是一個集CAD、CAE和CAM于一體的機(jī)械工程輔助系統(tǒng),UG-Ⅱ為用戶提供了一個全面的產(chǎn)品建模系統(tǒng)。SurfCAM是基于Windows的能夠自動生成零件刀具軌跡,以及進(jìn)行零件加工的NC代碼,具有強(qiáng)大的通用后置處理模塊的輔助制造軟件。Mastercam為PC級CAM軟件。Mastercam包括了銑削加工(milling),車削加工(turning),線切割加工(wireEDM)等要緊模塊,適用于機(jī)械設(shè)計與制造的各個領(lǐng)域。Cimatron系統(tǒng)是以色列的CAD/CAM/PDM產(chǎn)品,該系統(tǒng)提供了比較靈活的用戶界面,優(yōu)良的三維造型、工程繪圖,全面的數(shù)控加工,各種通用、專用數(shù)據(jù)接口以及集成化的產(chǎn)品數(shù)據(jù)治理。I-DEAS是全世界制造業(yè)用戶較廣泛應(yīng)用的大型CAD/CAE/CAM軟件。CATIA系統(tǒng)是在起源于航空工業(yè)的CADAM系統(tǒng)基礎(chǔ)上擴(kuò)充開發(fā)的CAD/CAM/CAE/PDM應(yīng)用系統(tǒng)。Euclid軟件是為英法聯(lián)合研制協(xié)和號超音速客機(jī)而開發(fā)的CAD軟件。DUCT軟件是三維復(fù)雜形體造型設(shè)計與制造CAD/CAM軟件。通用CAD軟件——AutoCAD一、AutoCAD的二維繪圖命令二維繪圖命令是AutoCAD的基礎(chǔ)部分。不管二維圖形如何復(fù)雜,差不多上由點(diǎn)、線、圓、圓弧等最差不多的圖形要素組成。點(diǎn)的輸入在各項CAD操作中,點(diǎn)的輸入是最差不多的操作,AutoCAD共有四種點(diǎn)的輸入方式。通過鍵盤輸入點(diǎn)通過鍵盤輸入點(diǎn)的坐標(biāo)值是一種精確的點(diǎn)輸入方式,點(diǎn)的坐標(biāo)值輸入有三種坐標(biāo)方式:絕對直角坐標(biāo)(輸入x,y)、相對直角坐標(biāo)(輸入@x,y)和相對極坐標(biāo)(輸入@r<a),可依照需要任意選取。通過光標(biāo)輸入設(shè)備輸入點(diǎn)通過光標(biāo)輸入設(shè)備輸入點(diǎn)的優(yōu)點(diǎn)是方便和快捷。一般情況下,用光標(biāo)輸入設(shè)備輸入點(diǎn)的坐標(biāo)值是不精確的,通過AutoCAD的Snap功能,能夠使輸入點(diǎn)達(dá)到一定的精度。利用目標(biāo)捕捉功能輸入點(diǎn)這是利用光標(biāo)輸入設(shè)備精確輸入點(diǎn)的一種方式,依照AutoCAD的Osnap功能,它能夠精確捕捉到圖形的特定點(diǎn)位置,例如線段的端點(diǎn)、中點(diǎn),圓和圓弧的圓心及象限點(diǎn),切點(diǎn)和垂足等等。利用LISP函數(shù)輸入點(diǎn)利用LISP語言中的函數(shù)功能也能夠輸入點(diǎn),這是自動繪制圖形的基礎(chǔ),在AutoCAD二次開發(fā)中經(jīng)常使用這種方式完成點(diǎn)的輸入。直線的繪制繪制直線的命令是LINE。一般只要輸入直線的兩個端點(diǎn),即可生成直線。繪制好圓弧后,在LINE命令后直接鍵入回車,然后輸入直線長度,能夠在圓弧終點(diǎn)處繪制圓弧的切線。圓的繪制繪制圓的命令是CIRCLE。圓的繪制參數(shù)是圓心和半徑(或直徑)。也能夠依照需要繪制與其他圖線相切的圓。圓弧的繪制繪制圓弧的命令是ARC。與直線和圓相比,圓弧的繪制比較復(fù)雜,考慮到圓弧具有順時針和逆時針兩種方向,AutoCAD共安排了7種繪制圓弧的方法,其繪制參數(shù)分不為圓弧的①起點(diǎn)、中點(diǎn)、終點(diǎn);②起點(diǎn)、圓心、終點(diǎn);③起點(diǎn)、圓心、角度;④起點(diǎn)、圓心、弧長;⑤起點(diǎn)、終點(diǎn)、角度;⑥起點(diǎn)、終點(diǎn)、半徑;⑦起點(diǎn)、終點(diǎn)、起始方向。繪制與剛繪制的直線或圓弧相切的圓弧時,能夠直接鍵入回車,然后輸入圓弧終點(diǎn),現(xiàn)在圓弧的起點(diǎn)即為前繪線段的終點(diǎn),圓弧的起始方向即為前繪線段的終止方向。多段連線多段連線(POLYLINE)是由直線和圓弧首尾相連組合成的復(fù)合線段,繪制多段連線采納PLINE命令,類同于繪制直線和圓弧。實踐中常用PEDIT命令編輯直線和圓弧來得到多段連線。二、圖形編輯AutoCAD提供的圖形編輯方法能夠有效地修改圖形,并能夠顯著提高繪圖效率。常用的圖形編輯命令有刪除(ERASE)、復(fù)制(COPY)、鏡面對稱復(fù)制(MIRROR)、陣列復(fù)制(ARRAY)、等距偏移復(fù)制(OFFSET)、移動(MOVE)、轉(zhuǎn)動(ROTATE)、縮放(SCALE)、修剪(TRIM)、延伸(EXTEND)、倒角(CHAMFER)、倒圓角(FILLET)、分解(EXPLODE)和多段連線編輯(PEDIT)。熟練掌握這些圖形編輯命令能夠有效地提高AutoCAD應(yīng)用水平。三、其他功能AutoCAD的其他功能還有圖形顯示、文字、剖面線、尺寸標(biāo)注、圖層治理、圖塊定義及調(diào)用、動畫、三維圖形、二次開發(fā)工具等。AutoCAD的二次開發(fā)工具AutoCAD定制菜單表3-1菜單文件類型菜單文件類型類型講明.MNU原始ASCII菜單文件,即用戶通常編輯或創(chuàng)建的文件。.MNC已編譯的菜單文件;一種二進(jìn)制文件,包含用于定義菜單或其他界面元素的功能及外觀的命令字符串和菜單語法。首次加載MNU文件時,AutoCAD將編譯此文件。.MNR菜單資源文件;一種二進(jìn)制文件,包含由菜單或其他界面元素使用的位圖。AutoCAD每次編譯MNC文件時,均生成菜單資源文件。.MNS源菜單文件;一種與MNU文件相同的ASCII文件,然而不包含注釋或?qū)iT格式。每次菜單文件的內(nèi)容被更改時,AutoCAD將修改源菜單文件。.MNT菜單資源文件。僅在MNR文件無效(例如,只讀)時生成該文件。.MNL菜單LISP文件;包含菜單文件使用的AutoLISP表達(dá)式。當(dāng)加載與菜單LISP文件具有相同文件名的菜單文件時,AutoCAD會將菜單LISP文件加載至內(nèi)存。用文本編輯器打開ACAD.MNU文件觀看菜單文件的結(jié)構(gòu),能夠看到其內(nèi)容包含如表3-2所示的幾個區(qū)域。其中***POP1至***POP11定義了下拉菜單。菜單文件中包含的一些專門字符的講明見表3-3。表3-2ACAD.MNU文件的菜單區(qū)域及其功能主菜單名稱區(qū)數(shù)N功能用途***MENUGROUP菜單組***BUTTONSn1~4定點(diǎn)設(shè)備按鈕菜單***AUXn1~4系統(tǒng)定點(diǎn)設(shè)備菜單***POPn0~9990對象捕捉快捷菜單1~16差不多型下拉菜單17~499將menuload加入下拉菜單中500~999快捷菜單區(qū)域***TOOLBARS工具欄定義***IMAGE圖像菜單***SCREEN屏幕菜單***TABLETn1~4數(shù)字化儀菜單***HELPSTRINGS輔助功能講明區(qū)(顯示于狀態(tài)區(qū))***ACCELERATORS加速鍵定義注意事項假如沒有定義POP1~POP16,AutoCAD會自動插入2個預(yù)設(shè)的下拉菜單(File和Edit)表3-3菜單字符講明字符講明**子菜單--菜單項分隔符->引出子菜單<-子菜單結(jié)束~禁用菜單項的前綴符!.給菜單項打上復(fù)選標(biāo)記的前綴符&指定菜單快速鍵,如S&le顯示為Sample,快捷鍵為a/指定菜單快速鍵,如/aSample顯示為Sample,快捷鍵為a=*顯示當(dāng)前頂層的圖像、下拉或快捷菜單*^C^C重復(fù)項的前綴$宏表達(dá)式的專門字符^CTRL\暫停等候用戶輸入(不能用于加速鍵)_轉(zhuǎn)換AutoCAD命令及其后的關(guān)鍵字+連續(xù)宏到下一行;RETURN//注釋行,不限行數(shù),用作版權(quán)聲明或注釋[]方括號內(nèi)為菜單項名稱用文本編輯器打開ACAD.MNU文件,在pop11菜單后面插入圖3-1所示的pop12菜單ASCII代碼,將其保存在DCAD.MNU文件中,用AutoCAD的MENU命令加載DCAD.MNU后,能夠看到下拉菜單在Help菜單項的后面增加了名為DCAD的一列新菜單,其效果如圖3-2所示。方括號內(nèi)的字符串構(gòu)成了下拉菜單的顯示內(nèi)容,DCAD下拉菜單列中包含了“工藝性分析”、“排樣”、“CAM”、“模板”和“模具標(biāo)準(zhǔn)件”5個子菜單。點(diǎn)取“CAM”子菜單中“3B指令”項,其對應(yīng)的菜單項內(nèi)容為“[3B指令]^C^C(load"dcad-ww")w3b”。其中“[3B指令]”規(guī)定了菜單項顯示文字為“3B指令”;“^C^C”相當(dāng)于先從鍵盤輸入兩次CTRL-C以終止任何AutoCAD可能正在執(zhí)行的命令,以便無障礙地執(zhí)行后面的指令;“(load"dcad-ww")”的作用是加載LISP程序文件“dcad-ww.lsp”;“w3b”表示執(zhí)行AutoCAD二次開發(fā)新建的命令“w3b”——從AutoCAD圖形產(chǎn)生數(shù)控線切割機(jī)床3B加工指令程序。菜單項中的空格所起的作用相當(dāng)于輸入回車。***pop12[DCAD][輸入清單]^C^C(load"dcad-i-2000")(if(nullc:fdcad)(load"DCAD"))input[->工藝性分析] [小孔]^C^C(load"dcad-b-2000-k")(load"DCAD")(load"Dcad-b")DCADBK [孔距]^C^C(load"dcad-b-2000-jb")(load"DCAD")(load"Dcad-b")DCADBJB [凸臂]^C^C(load"dcad-b-2000-tz")(load"DCAD")(load"Dcad-b")DCADBTZ [窄槽]^C^C(load"dcad-b-2000-tz")(load"DCAD")(load"Dcad-b")DCADBTZ [圓弧]^C^C(load"dcad-b-2000-y")(load"DCAD")(load"Dcad-b")DCADBY [孔間壁厚]^C^C(load"dcad-b-2000-b")(load"DCAD")(load"Dcad-b")DCADBB [<-復(fù)合模]^C^C(load"dcad-b-2000-f")(load"DCAD")(load"Dcad-b"))DCADBF[->排樣] [定搭邊值]^C^C(load"dcad-l-2000-d")(load"DCAD")(load"dcad-l-2000")dbz [單排排樣]^C^C(load"dcad-l-2000-s")(load"DCAD")(load"dcad-l-2000")lay1 [<-多排排樣]^C^C(load"dcad-l-2000-v")(load"DCAD")(load"dcad-l-2000"))LAYN[->CAM] [3B指令]^C^C(load"dcad-ww")w3b [穿孔代碼]^C^C(load"dcad-ww")punch [代碼校驗]^C^C(load"dcad-ww")check [<-穿孔碼轉(zhuǎn)換3B指令]^C^C(load"dcad-ww")p2b[設(shè)計]^C^CDESIGN[->模板] [上模座]^C^C(load"dcad-mb")(mb)smz [墊板]^C^C(load"dcad-mb")(mb)db [固定板]^C^C(load"dcad-mb")(mb)gdb [卸料板]^C^C(load"dcad-mb")(mb)xlb [凹模]^C^C(load"dcad-mb")(mb)am [下模座]^C^C(load"dcad-mb")(mb)xmz [下固定板]^C^C(load"dcad-pt")(mb)xgdb [下墊板]^C^C(load"dcad-pt")(mb)xdb [空心墊板]^C^C(load"dcad-mb")(mb)kxdb [--] [<-圖框]^C^C(load"dcad-mb")tukuang[->模具標(biāo)準(zhǔn)件] [模柄](if(nullc:mb)(load"dcad-pt"))mb [橡皮](if(nullC:XP)(load"dcad-pt"))XP [導(dǎo)柱](IF(NULLC:DZ)(LOAD"DCAD-PT"))DZ [導(dǎo)套](IF(NULLC:DT)(LOAD"DCAD-PT"))DT [導(dǎo)料板](IF(NULLC:DT)(LOAD"DCAD-PT"))DLB [承料板](IF(NULLC:DT)(LOAD"DCAD-PT"))CLB [卸料螺釘](if(nullc:XLLD)(load"dcad-pt"))XLLD [固定導(dǎo)銷](IF(NULLC:DT)(LOAD"DCAD-PT"))GDDLX [<-圓凸模](IF(NULLC:DT)(LOAD"DCAD-PT"))YTM[裝配示意圖]^C^C(load"dcad-z")zpt圖3-1DCAD子菜單ASCII代碼二、LISP語言AutoCAD內(nèi)嵌的兩種LISP語言(AutoLISP和VisualLISP)是與AutoCAD結(jié)合最為完美的程序語言。AutoLISP是AutoCAD選用的第一個強(qiáng)有力的開發(fā)工具,從1985年問世的AutoCADV2.18版本開始,一直沿用至今。AutoLISP是解釋型語言,它的欠缺之處是運(yùn)行效率較低,源程序缺乏保密性。針對AutoLISP的弱點(diǎn),AutoCAD在其2000版本中又推出了具有高運(yùn)行效率的編譯型LISP語言——VisualLISP。VisualLISP在AutoLISP的基礎(chǔ)上增加了源程序編輯環(huán)境、編譯器以及一些增強(qiáng)函數(shù)。實際上,過去編寫的AutoLISP程序都能夠在VisualLISP中編譯和運(yùn)行,即VisualLISP能夠完全兼容AutoLISP。(一)LISP語言簡介LISP是英語LIStProcessing的縮寫,意思是一種編制計算機(jī)程序的表處理語言。LISP語言1960年起源于美國麻省理工學(xué)院(MIT),是一種聞名的人工智能計算機(jī)語言。與BASIC等其他計算機(jī)語言一樣,LISP語言也有許多版本,現(xiàn)在使用最多的是COMMONLISP。AutoCAD軟件中鑲嵌的AutoLISP與COMMONLISP專門接近,它增加了調(diào)用AutoCAD命令的功能和一些幾何函數(shù),并削減了COMMONLISP中一些不常用的函數(shù)。作為一種高級語言,LISP能夠完成其他許多高級語言(如FORTRAN、BASIC、PASCAL、C等)能夠完成的工作,諸如計算、邏輯推斷、循環(huán)運(yùn)算等等。LISP語言具有一些獨(dú)特的優(yōu)點(diǎn),使它特不適用于人工智能和CAD領(lǐng)域,這也是AutoCAD在眾多計算機(jī)語言中首先選擇其作為開發(fā)工具的要緊理由。表(List)在LISP語言中具有極其重要的意義。表是LISP語言的重要成份,它由若干個元素(Element)和一對圓括號組成。元素則包括表和原子(Atom)兩種類型。原子指常數(shù)(Constant)或者符號變量(Variable)。表中的元素能夠是表,因此表可具有嵌套結(jié)構(gòu)。在LISP語言中,表既能夠構(gòu)成數(shù)據(jù),也能夠組成程序。如(0.51.2)和(15.33)差不多上用表的形式表示的數(shù)據(jù)。前者能夠表示一個二維點(diǎn),x坐標(biāo)值為0.5,y坐標(biāo)值為1.2。后者能夠表示一個三維點(diǎn),x坐標(biāo)值為1,y坐標(biāo)值為5.3,z坐標(biāo)值為3。(1258.2“A”9)能夠表示一個六維向量,與其他計算機(jī)語言中的一維數(shù)組相當(dāng),然而表中元素的數(shù)據(jù)類型能夠各不相同,而同一數(shù)組中各個數(shù)據(jù)的類型都必須相同。利用表的嵌套結(jié)構(gòu),容易獲得類似的多維數(shù)組,然而其中各維的長度能夠不相等,同時表中元素的數(shù)據(jù)類型能夠各不相同,因此在表示數(shù)據(jù)時,表比其他計算機(jī)語言中的多維數(shù)組更顯優(yōu)越性。AutoCAD中的圖形數(shù)據(jù)(包括類型、圖層、顏色、線型、特征、坐標(biāo)值等)都可采納表的形式表達(dá)。如AutoCAD中表達(dá)一根直線所用的表為((-1.<Entityname:24082f8>)(0."LINE")(330.<Entityname:2406cf0>)(5."2F7")(100."AcDbEntity")(67.0)(410."Model")(8."0")(100."AcDbLine")(10187.701-45.84750.0)(115.0-45.84750.0)(2100.00.01.0));表達(dá)一個圓所用的表為((-1.<Entityname:7ef50e80>)(0."CIRCLE")(330.<Entityname:7ef50cf8>)(5."88")(100."AcDbEntity")(67.0)(410."Model")(8."0")(100."AcDbCircle")(100.00.00.0)(40.10.0)(2100.00.01.0))LISP語言的程序結(jié)構(gòu)特不簡單,它也是由表組成。LISP程序采納前綴形式:(元素0元素1元素2…)構(gòu)成LISP程序時,表中元素0必為函數(shù)名稱,其后的各個元素為該函數(shù)(元素0)的變量。LISP程序?qū)ψ帜傅拇笮懯遣患訁^(qū)分的。例如(+12)是一個LISP程序的例子,其中+為函數(shù)名,1和2為+函數(shù)的變量。LISP語言是一種函數(shù)型計算機(jī)語言,LISP語言擁有的功能是通過其函數(shù)表現(xiàn)出來的。(二)LISP函數(shù)LISP函數(shù)具有返回值和特定的功能。如上例中,函數(shù)返回值為3,函數(shù)+的特定功能是求和。各種類型的LISP函數(shù)用來完成LISP語言所有的功能,下面將一些最差不多的LISP函數(shù)進(jìn)行分類,以便大伙兒能夠?qū)ISP語言及其在CAD中的應(yīng)用有所了解。代數(shù)運(yùn)算函數(shù)代數(shù)運(yùn)算函數(shù)用于完成代數(shù)運(yùn)算,包括賦值函數(shù)(SETQ),四則運(yùn)算函數(shù)(+、-、*、/),三角函數(shù)(SIN、COS、ATAN)以及其他代數(shù)函數(shù)(ABS、EXP、EXPT、SQRT)。代數(shù)運(yùn)算函數(shù)的使用方法專門容易掌握,唯一要注意的是LISP程序具有前綴結(jié)構(gòu)的特點(diǎn),各種函數(shù)運(yùn)算都必須將函數(shù)名作為LISP表達(dá)式中最前面的元素。1)SETQ函數(shù)的格式為(SETQv1e1[v2e2…vnen])。其功能是將ei的計算值給予變量vi,函數(shù)返回值為en的計算值。(注:方括號部分是可選項,以下同。)例如,(SETQx1y(+12))將常數(shù)1的計算值1給予變量x,LISP表達(dá)式(+12)的計算值3給予變量y,函數(shù)返回值為3。2)+函數(shù)的格式為(+n1n2[n3…nm])。其功能是對函數(shù)變量求和,函數(shù)返回值為變量之和:n1+n2+n3+…+nm。3)-函數(shù)的格式為(-n1[n2n3…nm])。其功能是對函數(shù)變量求差。當(dāng)m=1,函數(shù)只有一個變量n1時,函數(shù)返回值為0-n1,即-n1;當(dāng)m≥2時,函數(shù)返回值為n1-(n2+n3+…+nm)。4)*函數(shù)的格式為(*n1n2[n3…nm])。其功能是對函數(shù)變量求積,函數(shù)返回值為變量的乘積:n1·n2·n3·…·nm。5)/函數(shù)的格式為(/n1n2[n3…nm])。其功能是求函數(shù)變量的商,函數(shù)返回值為n1/(n2·n3·…·nm)。當(dāng)/函數(shù)變量均為整型數(shù)時,函數(shù)返回值也為整型數(shù);當(dāng)函數(shù)變量中至少有一個為實型數(shù)時,函數(shù)返回值為實型數(shù)。例如,(/32)的返回值為1,而(/32.0)的返回值則為1.5。6)SIN函數(shù)的格式為(SINn)。其功能是求函數(shù)變量n的正弦值,函數(shù)返回n的正弦值。變量n的單位為弧度。例如,(SIN(/PI2))的返回值為1.0,式中PI為LISP符號變量,表示圓周率π值。7)COS函數(shù)的格式為(COSn)。其功能是求函數(shù)變量n的余弦值,函數(shù)返回n的余弦值。變量n的單位為弧度。用法與SIN函數(shù)相同。8)ATAN函數(shù)的格式為(ATANn1[n2])。其功能是求反正切值arctann1或arctan(n1/n2)。當(dāng)只有一個函數(shù)變量時,函數(shù)返回值的范圍為(-π/2,π/2),當(dāng)存在2個函數(shù)變量時,函數(shù)返回值的范圍為(-π,π]。函數(shù)返回值的角度單位為弧度。例如:(ATAN0) 返回值0.0(ATAN1) 返回值0.785(ATAN11) 返回值0.785(ATAN1–1) 返回值2.356(ATAN–11) 返回值-0.785(ATAN–1–1) 返回值-2.356(ATAN10) 返回值1.5708(ATAN–10) 返回值-1.5708(ATAN0–1) 返回值-3.14(ATAN01) 返回值3.149)ABS函數(shù)的格式為(ABSn)。其功能是求絕對值,函數(shù)返回n的絕對值。10)EXP函數(shù)的格式為(EXPn)。其功能是求e的指數(shù),函數(shù)返回en。11)EXPT函數(shù)的格式為(ESPTmn)。其功能是求m的指數(shù),函數(shù)返回mn。12)SQRT函數(shù)的格式為(SQRTn)。其功能是求平方根,函數(shù)返回n的平方根。自定義函數(shù)LISP語言提供了許多差不多函數(shù),稱為內(nèi)部函數(shù)或系統(tǒng)函數(shù)(如前述函數(shù)),利用這些函數(shù)能夠直接編寫LISP程序,例如tanα的LISP程序可編寫為(/(SINx)(COSx))。關(guān)于復(fù)雜的程序,直接利用差不多函數(shù)編寫程序并不是一個好方法,編寫LISP程序更多是利用自定義函數(shù)來編寫程序,反之,大多數(shù)LISP程序也都編寫成為自定義函數(shù)的形式。自定義函數(shù)與其他語言中的子程序或函數(shù)最接近。自定義函數(shù)是用戶自己定義的函數(shù),又被稱為用戶函數(shù)或外部函數(shù)。自定義函數(shù)的使用和系統(tǒng)函數(shù)的使用方法是一致的,用戶在使用方面可不能感受到兩者的差異。自定義函數(shù)的格式為(DEFUNname([A1A2…AL][/V1V2…VM])e1e2…en上表中第0個元素DEFUN是自定義函數(shù)的函數(shù)名,第1個元素name是符號變量,為自定義函數(shù)所定義的用戶函數(shù)的名稱。用戶函數(shù)名稱后是用戶函數(shù)的變量表,變量表中的元素差不多上所定義的用戶函數(shù)的局部變量,可分成以“/”分隔的兩個部分,方括號表示可選項,表中“/”前的可選項[A1A2…AL]為新設(shè)立的用戶函數(shù)name的函數(shù)變量,表中另一可選項[/V1V2…VM]中的元素不是用戶函數(shù)的函數(shù)變量,它們僅僅是用戶函數(shù)name的局部變量。所謂局部變量是指僅僅在定義函數(shù)內(nèi)部存在并起作用的變量,它對定義函數(shù)以外的程序無任何干擾。變量表能夠是空表(即表中不包含任何元素)。變量表后面是函數(shù)定義體,決定了函數(shù)name的功能和返回值。函數(shù)name的返回值是en例如AutoLISP沒有提供正切函數(shù),用戶能夠利用自定義函數(shù)自行定義正切函數(shù),定義正切函數(shù)的程序如下(DEFUNtan(x/y)(SETQy(COSx))(IF(/=y0)(/(SINx)y)))以上程序中tan是用戶自行定義的正切函數(shù)名。x和y之間的符號“/”分隔開了局部變量中的自變量,“/”前的變量x是用戶函數(shù)tan的自變量,也是該函數(shù)的局部變量,而“/”后的變量y是tan函數(shù)的局部變量,但不是tan函數(shù)的自變量。程序中的DEFUN、SETQ、IF、/=、/、SIN和COS差不多上AutoLISP的差不多函數(shù)。調(diào)用正切函數(shù)(tan0),返還的正切函數(shù)值為0.0。能夠看到,用戶自定義的正切函數(shù)的使用方法與LISP系統(tǒng)函數(shù)SIN或COS的用法相同。用戶函數(shù)經(jīng)一次定義后可無限次使用。用戶在使用LISP語言的過程中,用自定義函數(shù)的方法能夠逐漸積存自己的函數(shù),從而使編程越來越方便。分支結(jié)構(gòu)分支結(jié)構(gòu)在LISP語言中有二分支結(jié)構(gòu)和多分支結(jié)構(gòu)兩種,與此相關(guān)的函數(shù)有:關(guān)系運(yùn)算函數(shù)(=、/=、>、>=、<、<=、EQUAL),邏輯運(yùn)算函數(shù)(AND、OR、NOT),二分支函數(shù)(IF)和歸并(PROGN)函數(shù)以及多分支函數(shù)(COND)。關(guān)系運(yùn)算函數(shù)推斷函數(shù)變量相互間是否符合函數(shù)所定義的相等或不等關(guān)系。=函數(shù)的格式為(=e1e2…en)。當(dāng)函數(shù)變量e1、e2、…、en全部相等時,函數(shù)返回T,否則返回NIL。/=、>、>=、<和<=函數(shù)的用法也是相同的,其功能如同其函數(shù)名所示。EQUAL函數(shù)的格式為(EQUALe1e2[e3])。EQUAL用來比較兩個實型數(shù)或表是否相等,相等時函數(shù)返回T,否則返回NIL。比較兩個實型數(shù)e1和e2時,取一個專門小的正數(shù)e3,其推斷準(zhǔn)則是當(dāng)|e1-e2|≤e3時函數(shù)返回T,否則返回NIL。AND函數(shù)的格式為(ANDe1e2…en)。當(dāng)函數(shù)變量e1、e2、…、en中全部有值時,函數(shù)返回T,否則返回NIL。OR函數(shù)的格式為(ORe1e2…en)。當(dāng)函數(shù)變量e1、e2、…、en中至少有一個有值時,函數(shù)返回T,否則返回NIL。NOT格式為(NOTe)。當(dāng)函數(shù)變量e有值時,函數(shù)返回NIL,否則返回T。IF函數(shù)的格式是(IF<判不式>e1[e2]),它的功能是實現(xiàn)程序的二分支結(jié)構(gòu)。當(dāng)判不式的結(jié)果為非NIL時,函數(shù)執(zhí)行e1并返回e1的計算值,否則函數(shù)執(zhí)行e2并返回e2的計算值,若可選項e2不存在,則函數(shù)結(jié)束運(yùn)行,返回NIL。例如(SETQa(GETREAL“A=”)c(GETREAL“C=”))(SETQx(IF(/=a0)(/ca)))(SETQy(IF(>a0)(+ca)(-ca)))PROGN函數(shù)的格式為(PROGNe1e2…en),它的功能是將若干個LISP表達(dá)式歸并為一個LISP表達(dá)式,常用于IF函數(shù)內(nèi),以便使IF函數(shù)能夠在e1和e2的格式規(guī)定中作更多的情況。COND函數(shù)的格式為(COND (〈測試式1〉e11e12…e1i)(〈測試式2〉e21e22…e2j) …… (〈測試式m〉em1em2…emk))函數(shù)功能是實現(xiàn)多分支結(jié)構(gòu)。COND函數(shù)的變量都為表,變量表中的第一個元素是測試式,其余元素是當(dāng)測試結(jié)果為非NIL時順序執(zhí)行的LISP表達(dá)式。COND函數(shù)依次對測試式進(jìn)行測試,當(dāng)測試結(jié)果為非NIL時,順序執(zhí)行其后的LISP表達(dá)式。函數(shù)返回值為最后執(zhí)行的表達(dá)式計算結(jié)果。變量表中能夠只有一個元素,即能夠只有測試式,現(xiàn)在的函數(shù)返回值為測試結(jié)果。編寫下列分段函數(shù)的LISP程序。解1:能夠利用COND函數(shù)處理該分段函數(shù),編寫程序如下A)編寫程序(DEFUNL3-1-1(x)(COND((AND(>x–10)(<=x–6))–2)((AND(>x-6)(<=x–2))–1)((AND(>x–2)(<=x2))0)((AND(>x2)(<=x6))1)(T2)))B)調(diào)用程序(SETQn(L3-1-11))后函數(shù)L3-1-1返回0,并將該值給予變量n。解2:利用COND函數(shù)順序測試的特點(diǎn),能夠編寫更簡化的程序如下A)編寫程序(DEFUNL3-1-2(x)(COND((<=x–10)2)(<=x–6)–2)((<=x–2)–1)((<=x2)0)((<=x6)1)(T2)))B)調(diào)用程序(SETQn(L3-1-21))后函數(shù)L3-1-2返回0,并將該值給予變量n。交互式輸入函數(shù)交互式輸入函數(shù)提供操縱臺輸入,包括鍵盤輸入和光標(biāo)設(shè)備輸入。交互式輸入函數(shù)又稱為GET族輸入函數(shù),該族函數(shù)均以字符GET開頭。交互式輸入函數(shù)包括整型數(shù)輸入函數(shù)(GETINT)、實型數(shù)輸入函數(shù)(GETREAL)、字符串輸入函數(shù)(GETSTRING)、點(diǎn)輸入函數(shù)(GETPOINT)、角度輸入函數(shù)(GETANGLE)、距離輸入函數(shù)(GETDIST)、關(guān)鍵字輸入函數(shù)(GETKWORD)和初始化輸入函數(shù)(INITGET)。交互式輸入函數(shù)為專業(yè)軟件的二次開發(fā)提供了與AutoCAD相同的交互界面,簡化了軟件的開發(fā)過程和推廣工作。1)GETINT函數(shù)的格式為(GETINT[提示信息])。其功能是輸入整型數(shù),函數(shù)返回值為從鍵盤輸入的整型數(shù)。提示信息為字符串,用于輸入時給出提示。2)GETREAL函數(shù)的格式為(GETREAL[提示信息])。其功能是輸入實型數(shù),函數(shù)返回值為從鍵盤輸入的實型數(shù)。3)GETSTRING函數(shù)的格式為(GETSTRING[開關(guān)變量][提示信息])。其功能是輸入字符串,函數(shù)返回值為從鍵盤輸入的字符串。當(dāng)不選用開關(guān)變量或開關(guān)變量無值時,輸入字符串能夠用空格或RETURN結(jié)束,輸入字符串中無法包括空格。開關(guān)變量存在且有值時,則輸入字符串中能夠包含空格,但必須用RETURN結(jié)束字符串。AuotLISP通過這種方式,使字符串輸入和AutoCAD在方式上保持一致。4)GETPOINT函數(shù)的格式為(GETPOINT[pt][提示信息])。其功能是通過鍵盤或光標(biāo)設(shè)備輸入點(diǎn)??蛇x項pt是一個表示點(diǎn)的表,當(dāng)pt存在時,移動光標(biāo)會出現(xiàn)從pt到光標(biāo)的連線(皮筋線),現(xiàn)在pt也作為相對坐標(biāo)系的原點(diǎn)對采納相對坐標(biāo)輸入點(diǎn)產(chǎn)生作用。當(dāng)pt不存在時,相對坐標(biāo)系的原點(diǎn)由AutoCAD系統(tǒng)變量LASTPOINT決定。5)GETANGLE函數(shù)的格式為(GETANGLE[pt][提示信息])。其功能是通過鍵盤或光標(biāo)設(shè)備輸入角度。函數(shù)返回值為表示角度的實型數(shù),單位為弧度。Pt的作用同前。AuotLISP通過這種方式,使角度輸入和AutoCAD在方式上保持一致。6)GETDIST函數(shù)的格式為(GETDIST[pt][提示信息])。其功能是通過鍵盤或光標(biāo)設(shè)備輸入長度。函數(shù)返回值為表示距離的實型數(shù)。Pt的作用同前。AuotLISP通過這種方式,使長度輸入和AutoCAD在方式上保持一致。7)GETKWORD函數(shù)的格式為(GETKWORD[提示信息])。其功能是通過鍵盤輸入關(guān)鍵字。函數(shù)返回值定義為關(guān)鍵字的字符串。關(guān)鍵字由下面的INITGET函數(shù)定義。8)INITGET函數(shù)的格式為(INITGET[bits][關(guān)鍵字])。其功能是操縱GET×××函數(shù)的輸入。bits為二進(jìn)制概念的操縱位,能夠最大限度的減少輸入錯誤。表3-4中,十進(jìn)制數(shù)1(bit0)防止空輸入(ENTER);2(bit1)防止0輸入;4(bit2)防止負(fù)數(shù)輸入;8(bit3)同意用戶輸入LIMITS規(guī)定界限以外的點(diǎn);16(bit4)(尚未使用);32(bit5)使用虛線作皮筋線;64(bit6)阻止Z坐標(biāo)輸入;128(bit7)同意任意輸入。關(guān)鍵字除了用于GETKWORD函數(shù),還能夠用于其他GET×××函數(shù),擴(kuò)大它們的使用范圍。如關(guān)鍵字用于GETINT函數(shù),能夠使該函數(shù)依照輸入內(nèi)容返回整型數(shù)或關(guān)鍵字。而沒有關(guān)鍵字時,GETINT函數(shù)只能夠返回整型數(shù)。關(guān)鍵字是包含在雙引號內(nèi)的字符和數(shù)字,關(guān)鍵字之間用空格分隔,例如“AbcDef”定義了Abc和Def兩個關(guān)鍵字。關(guān)鍵字中的大寫字母在輸入時能夠作為關(guān)鍵字的縮寫。表3-4操縱位和輸入函數(shù)的關(guān)系函數(shù)關(guān)鍵字操縱位非空(1)(bit0)非0(2)(bit1)非負(fù)(4)(bit2)非限制(8)(bit3)用虛線(32)(bit5)二維距離(64)(bit6)任意輸入(128)(bit7)GETINT√√√√√GETREAL√√√√√GETDIST√√√√√√√GETANGLE√√√√√GETPOINT√√√√√GETKWORD√√√INITGET函數(shù)只對其后的GET×××函數(shù)起一次作用。關(guān)于程序段(INITGET7“AbcDef”)(SETQA(GETINT“A=”))運(yùn)行時,輸入空回車、0或負(fù)數(shù),系統(tǒng)都會要求重新輸入,只有在輸入正數(shù)時程序才會將整型數(shù)給予變量A。當(dāng)輸入a或abc時,程序會將關(guān)鍵字“Abc”作為字符串給予變量A。而輸入d或def時,程序則將“Def”給予變量A。輸入其他字母,程序也會要求重新輸入,直至符合輸入要求。例如,在AutoCAD繪圓命令CIRCLE執(zhí)行時,有如下提示Command:circleSpecifycenterpointforcircleor[3P/2P/Ttr(tantanradius)]:Specifyradiusofcircleor[Diameter]:首先能夠輸入點(diǎn)或關(guān)鍵字,然后能夠輸入點(diǎn)、數(shù)值或關(guān)鍵字。同樣的輸入效果能夠用以下LISP程序達(dá)到:(INITGET1“3P2PTtr”)(SETQp(GETPOINT“Specifycenterpointforcircleor[3P/2P/Ttr(tantanradius)]:”))(INITGET7“Diameter”)(SETQr(GETDISTp“Specifyradiusofcircleor[Diameter]:”))字符串函數(shù)字符串函數(shù)專門用于處理字符串,包括字符串長度函數(shù)(STRLEN)、字符串鏈接函數(shù)(STRCAT)和子字符串函數(shù)(SUBSTR)。1)STRLEN函數(shù)的格式是(STRLENs)。函數(shù)變量是字符串,STRLEN函數(shù)的功能是求出字符串s的長度,即組成字符串s的字符個數(shù),函數(shù)返回整型數(shù)。如(STRLEN“abc”)返回3。2)STRCAT函數(shù)的格式是(STRCATs1s2…sn)。它的功能是按變量順序合并字符串s1、s2、…、sn,函數(shù)返回合并后的字符串。如(STRCAT“abc”“def”)返回字符串“abcdef”。3)SUBSTR函數(shù)的格式是(SUBSTRsm[n]),函數(shù)變量s為字符串,m和n為整型數(shù)。SUBSTR函數(shù)從字符串s中取出一部分作為函數(shù)的返回值。返回的子字符串從字符串s的第m個字符開始,其長度(字符數(shù))為n。若n不存在,則返回的子字符串從字符串s的第m個字符開始至字符串末尾。字符串排列順序為從左到右,起首字符序號為1。如(SUBSTR“GoodMorning”63)返回字符串“Mor”,(SUBSTR“GoodMorning”6)返回字符串“Morning”。表處理函數(shù)表處理函數(shù)是LISP語言中最具特色的一類函數(shù),用來生成表(LIST函數(shù))或?qū)Ρ磉M(jìn)行各種操作,如往表中添加元素(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ù)自變量位置上出現(xiàn)了函數(shù),這就大大增加了程序的適用性。LIST函數(shù)的格式是(LISTe1e2…en)。它的功能是把e1、e2、…、en的計算值組成一個表。如(LIST1(+12)“A”)返回表(13“A”)。CONS函數(shù)的格式是(CONSeL),它的功能是把e的計算值加入表L中。如(CONS(+12)(LIST12))返回表(312)CDR函數(shù)的格式是(CDRL),它的功能是去除表L中為首的元素,函數(shù)返回剩余的表。如(CDR(LIST12))返回表(2)。MEMBER函數(shù)的格式是(MENBEReL),它的功能是提取表L中e及其后面元素組成的表。如(MENBER3(LIST12345))返回表(345)。CAR函數(shù)的格式是(CARL),它的功能是提取表L中第0個元素,函數(shù)返回該元素。如(CAR(LIST123))返回1。在CAD中常被用來提取點(diǎn)中的X坐標(biāo)值。CADR函數(shù)的格式是(CADRL),它的功能是提取表L中第1個元素,函數(shù)返回該元素。如(CADR(LIST123))返回2。在CAD中常被用來提取點(diǎn)中的Y坐標(biāo)值。CADDR函數(shù)的格式是(CADDRL),它的功能是提取表L中第2個元素,函數(shù)返回該元素。如(CADDR(LIST123))返回3。在CAD中常被用來提取點(diǎn)中的Z坐標(biāo)值。NTH函數(shù)的格式是(NTHnL),它的功能是提取表L中第n個元素,函數(shù)返回該元素。表中元素的排列順序是從左到右,為首元素序號為0。如(NTH2(LIST1234))返回3。ASSOC函數(shù)的格式是(ASSOCeL),它的功能是檢索表L中包含以e值為起始元素的嵌套子表,函數(shù)返回檢索到的子表。如(ASSOC2‘((12)(23)(34)))返回以2為起始元素的嵌套子表(23)。SUBST函數(shù)的格式是(SUBSTmnL),它的功能是用m取代表L中的n,函數(shù)返回更換后的表。如(SUBST“QQ”“B”(LIST“A”“B”“AB”“B”))返回表(“A”“QQ”“AB”“QQ”)。APPEND函數(shù)的格式是(APPENDmn),它的功能是合并表m和n,函數(shù)返回合并后的表。如(APPEND(LIST12)(LIST34))返回表(1234)。REVERSE函數(shù)的格式是(REVERSEL),它的功能是顛倒表中元素的順序,函數(shù)返回顛倒元素順序后的表。如(REVERSE(LIST1234))返回表(4321)。LENGTH函數(shù)的格式是(LENGTHL),它的功能是求出表的長度(即表中元素的個數(shù)),函數(shù)返回表示元素數(shù)目的整型數(shù)。如(LENGTH(LIST1234))返回整型數(shù)4。類型轉(zhuǎn)換函數(shù)類型轉(zhuǎn)換函數(shù)提供了變量和數(shù)據(jù)類型的相互轉(zhuǎn)換,包括整型數(shù)和實型數(shù)互相轉(zhuǎn)換函數(shù)(FIX和FLOAT)以及涉及字符串的轉(zhuǎn)換函數(shù)(RTOS和READ)。FIX函數(shù)用于將實型數(shù)轉(zhuǎn)換成整型數(shù),它的格式為(FIXn)。FLOAT函數(shù)用于將整型數(shù)轉(zhuǎn)換成實型數(shù),它的格式為(FLOATn)。RTOS函數(shù)用于將數(shù)轉(zhuǎn)換成一定格式的字符串,它的格式為(RTOSn[mode[precision]])??蛇x項mode和precision差不多上整型數(shù)。mode表示轉(zhuǎn)換格式,precision表示轉(zhuǎn)換精度(小數(shù)點(diǎn)后的位數(shù)),mode含義如表3-5所示。當(dāng)可選項缺省時,RTOS函數(shù)按照AutoCAD的缺省格式進(jìn)行轉(zhuǎn)換。表3-5mode取值與轉(zhuǎn)換格式的關(guān)系mode轉(zhuǎn)換格式1科學(xué)計數(shù)制2十進(jìn)制3英制工程制4英制建筑制5分?jǐn)?shù)4)READ函數(shù)的格式是(READs),其中s是能夠包含空格的字符串。READ函數(shù)去除字符串s的雙引號,并返回從中獲得的第一個表或原子。如(READ“HELLO”)返回符號變量HELLO(READ“HELLO”)返回符號變量HE(READ“123”)返回常數(shù)123(READ“123456789”(READ“(123)”)返回表(123)(READ“(123)(456)”)返回表(123)循環(huán)運(yùn)算函數(shù)循環(huán)運(yùn)算函數(shù)用于循環(huán)運(yùn)算,包括無條件循環(huán)函數(shù)(REPEAT)和有條件循環(huán)函數(shù)(WHILE)。無條件循環(huán)是按照確定的循環(huán)次數(shù)進(jìn)行循環(huán)運(yùn)算,而有條件循環(huán)則是在每次運(yùn)算前進(jìn)行推斷,依照推斷結(jié)果確定是否進(jìn)行循環(huán)運(yùn)算。1)REPEAT函數(shù)的格式為(REAPEATne1e2…em)其中n為整型數(shù),e1、e2、…、em為LISP表達(dá)式。REPEAT函數(shù)的功能是無條件地按順序?qū)1、e2、…、em進(jìn)行n次循環(huán)運(yùn)算,函數(shù)返回值為em最后一次的計算結(jié)果。2)WHILE函數(shù)的格式為(WHILE<測試式>e1e2…em)WHILE函數(shù)首先對測試式進(jìn)行測試,當(dāng)測試結(jié)果為非NIL時,順序執(zhí)行e1、e2、…、em,然后再對測試式進(jìn)行測試,直至測試結(jié)果為NIL時才停止循環(huán)運(yùn)算,函數(shù)返回值為em最后一次的計算結(jié)果。例3-2編寫LISP程序求1+2+…+100解1:采納REPEAT函數(shù)編寫程序A)編寫程序(DEFUNL3-2-1(/Is)(SETQi0s0)(REPEAT100 (SETQi(+I1)s(+si))))B)調(diào)用函數(shù)(L3-2-1),函數(shù)返回5050。解2:采納WHILE函數(shù)編寫程序A)編寫程序(DEFUNL3-2-2(/Is)(SETQI0s0)(WHILE(<I100) (SETQ I(+I1) s(+sI) )))B)調(diào)用函數(shù)(L3-2-2),函數(shù)返回5050。例3-3求定積分:解:采納矩形法求解定積分。將定積分區(qū)域視為由n個等寬度小矩形組成,n個小矩形的面積之和為定積分值的近似值,小矩形的高度為sinx,寬度dx=1/n。A)編寫程序(DEFUNL3-3(n/dxsxy) (SETQ dx(/1.0n) x0s0 ) (REPEATn (SETQ y(*x(SINx)) x(+xdx) s(+s(*ydx)) ) ))B)設(shè)n為100,調(diào)用函數(shù)(L3-3100),函數(shù)返回定積分的近似值0.296973。輸入輸出和文件處理函數(shù)除了前面提及的交互式輸入函數(shù)外,AutoLISP語言還提供了輸入大量數(shù)據(jù)的方式,即利用磁盤文件輸入數(shù)據(jù),輸入函數(shù)為READ-LINE和READ-CHAR。輸出函數(shù)能夠?qū)?shù)據(jù)輸出到顯示屏幕或磁盤文件。常用的輸出函數(shù)有PRINC。在處理磁盤文件時,需要先用OPEN函數(shù)打開文件,文件處理完畢后,再用CLOSE函數(shù)關(guān)閉文件。1)OPEN函數(shù)的功能是打開文件,對文件進(jìn)行操作,函數(shù)返回文件指針。函數(shù)格式為(OPENnamemode),name是表示操作文件名的字符串,mode是表示文件操作方式的字符串,其定義如表3-6所示。表3-6mode取值與文件操作方式的關(guān)系mode狀態(tài)“r”讀文件“w”寫文件“a”添加數(shù)據(jù)例如,程序段(setqf(open“try.dat”“r”))打開文件try.dat,并將其設(shè)為讀狀態(tài),變量f為文件指針,開始時指向文件try.dat的頭部,以后用輸入函數(shù)讀取數(shù)據(jù)時,文件指針隨讀取數(shù)據(jù)移動位置。2)CLOSE函數(shù)的格式為(CLOSEf),其中f是表示文件指針的符號變量。它的功能是關(guān)閉打開的文件,函數(shù)返回NIL。使用CLOSE函數(shù)后,系統(tǒng)將緩沖區(qū)內(nèi)的數(shù)據(jù)全部處理完畢后關(guān)閉文件,幸免數(shù)據(jù)丟失。3)READ-LINE函數(shù)的格式為(READ-LINE[f]),其中f是表示文件指針的符號變量。它的功能是從文件指針指向的文件中順序讀取一行數(shù)據(jù)。缺省項文件指針f不存在時,則從鍵盤輸入讀取數(shù)據(jù)。READ-LINE函數(shù)的返回值是字符串,讀到文件底部時函數(shù)返回NIL。例3-4設(shè)當(dāng)前目錄下有兩個數(shù)據(jù)文件A.DAT和B.DAT,試編寫程序,把B.DAT文件中的數(shù)據(jù)尾接到A.DAT文件之后。解:A)編寫程序如下:(DEFUNL3-4()(SETQ fr(OPEN“B.DAT”“r”) fw(OPEN“A.DAT”“a”) s(READ-LINEfr))(WHILEs (PRINCsfw) (PRINC“\n”fw) (SETQs(READ-LINEfr)))(CLOSEfr)(CLOSEfw))B)調(diào)用程序:函數(shù)(L3-4)執(zhí)行后,B.DAT文件中的數(shù)據(jù)就尾接到A.DAT文件原先數(shù)據(jù)的后面。程序運(yùn)行時首先打開文件B.DAT和A.DAT,讀取B.DAT文件中首行數(shù)據(jù)后進(jìn)入循環(huán),將讀取數(shù)據(jù)和回車換行符添加寫入A.DAT文件,然后再從B.DAT文件中接著讀取數(shù)據(jù),循環(huán)往復(fù),一直到READ-LINE函數(shù)讀取到B.DAT文件底部時,函數(shù)返回NIL并將其給予變量s,則WHILE函數(shù)退出循環(huán),關(guān)閉文件B.DAT和A.DAT后程序運(yùn)行結(jié)束。4)PRINC函數(shù)格式為(PRINC[e[f]]),其中e是LISP表達(dá)式,f是表示文件指針的符號變量,用于輸出至文件。F不存在,則輸出至顯示器。PRINC函數(shù)的功能是輸出e的計算值。PRINC函數(shù)返回值為e的計算值。當(dāng)函數(shù)沒有變量時,即(PRINC)表示不顯示函數(shù)返回值。PRINC函數(shù)輸出字符串時不帶雙引號。能夠用專門字符進(jìn)行操縱,實現(xiàn)格式輸出。專門字符以\開始,后跟ASCII碼,常用的專門字符如表3-7所示。例如程序段(PRINC“ABC”)向顯示屏幕輸出ABC,同時函數(shù)的返回值為“ABC”。(PRINC“\nABC”)先向顯示屏幕輸出回車換行符,然后輸出ABC,函數(shù)的返回值為“\nABC”。表3-7專門字符專門字符\n\r\t\007\”\\輸出結(jié)果回車換行回車不換行TAB響鈴“\AutoCAD接口函數(shù)COMMAND函數(shù)的功能是在AutoLISP程序中執(zhí)行AutoCAD命令。由于存在COMMAND函數(shù),AutoLISP和VisualLISP程序能夠調(diào)用幾乎所有的AutoCAD命令,使得LISP靈活的程序功能和AutoCAD強(qiáng)大的圖形功能得到完美的結(jié)合,專業(yè)計算和AutoCAD圖形相得益彰,不僅能夠大大提高AutoCAD的繪圖效率,而且進(jìn)一步拓展了AutoCAD的應(yīng)用范圍。COMMAND函數(shù)的格式為(COMMAND[e1e2…en])執(zhí)行COMMAND函數(shù)時,按順序把函數(shù)變量送出,作為AutoCAD命令及對命令提示的回答。因此,COMMAND函數(shù)變量的個數(shù)、順序和類型必須與所調(diào)用的命令嚴(yán)格一致。函數(shù)變量能夠是常數(shù)、變量及LISP表達(dá)式。不帶變量的COMMAND函數(shù),即(COMMAND),相當(dāng)于在AutoCAD中使用CTRL-C??兆址啊眲t相當(dāng)于在AutoCAD中使用回車。一個COMMAND函數(shù)能夠執(zhí)行多項AutoCAD命令,一項AutoCAD命令也能夠用多個COMMAND函數(shù)完成。在COMMAND函數(shù)變量中不同意出現(xiàn)GET族函數(shù)。例如輸入圓心和直徑繪制圓。程序1在一個COMMAND函數(shù)中執(zhí)行CIRCLE和ZOOM兩項AutoCAD命令,程序2則用兩個COMMAND函數(shù)完成一項CIRCLE命令。程序1:(SETQ p(GETPOINT“Centerpoint:““) d(GETDISTp“Diameter:“))(COMMAND “CIRCLE”p“D”d “ZOOM”“E”)程序2:(SETQp(GETPOINT“Centerpoint:““)(COMMAND“CIRCLE”p)(SETQd(GETDISTp“Diameter:“))(COMMAND“D”d)(COMMAND“ZOOM”“E”)例3-5在區(qū)間0~2π內(nèi)繪制y=sinα的函數(shù)曲線。解:編寫程序如下:(DEFUNpsin(x)(LISTx(SINx)) ;定義函數(shù)psin,返回表示sin函數(shù)曲線上一點(diǎn)的表。(DEFUNNIHE(senf/dvp) ;定義繪制任意函數(shù)曲線的函數(shù)NIHE (SETQ d(/(-es)n) ;s為初值,e為終值,n為逼近函數(shù)曲線所用的直線段數(shù) vs ;f為定義曲線的函數(shù),d為增量,v從初值變化到終值 p(fv) ;p為表示點(diǎn)的表 )(COMMAND“PLINE”p) ;調(diào)用PLINE命令繪制多段連線 (REPEATn ;進(jìn)入循環(huán) (SETQv(+vd)p(fv))(COMMANDp) ;繪制一個直線段 ) ;循環(huán)結(jié)束 (COMMAND) ;退出PLINE命令)調(diào)用程序:調(diào)用函數(shù)(NIHE0(*2PI)1000psin),函數(shù)執(zhí)行后,能夠看到AutoCAD自動繪制出由1000根直線逼近的0至2π區(qū)間的sin函數(shù)曲線。圖形數(shù)據(jù)處理函數(shù)1986年,AutoCADv2.52版本開放了圖形數(shù)據(jù)庫,使得CAD用戶能夠從CAD圖形中提取與圖形相關(guān)的數(shù)據(jù)。如此,表示切削加工的刀具運(yùn)動軌跡圖形能夠輕易地用LISP程序轉(zhuǎn)換成NC加工代碼,也能夠用LISP程序依照毛坯圖形和零件輪廓圖形自動產(chǎn)生刀具行走軌跡線,有限元網(wǎng)格劃分的前處理也不再存在障礙。圖形數(shù)據(jù)處理函數(shù)包括SSGET、SSNAME、SSLENGTH、ENTGET等函數(shù)。QUOTE函數(shù)QUOTE函數(shù)是應(yīng)用最廣泛的LISP函數(shù)之一,它的格式為(QUOTEe),功能是阻止對函數(shù)變量e進(jìn)行求值計算。在LISP程序中常見的是QUOTE函數(shù)的簡寫格式’e。假如用賦值函數(shù)對變量a賦值:(SETQa(+
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年婚禮汽車服務(wù)行業(yè)深度研究分析報告
- 廢機(jī)油深加工潤滑油基礎(chǔ)油可行性研究報告申請備案
- 二手挖機(jī)購買合同范本
- 倉儲與快遞合同范本
- 2025-2031年中國萬能磨刀機(jī)行業(yè)市場調(diào)查研究及發(fā)展趨勢預(yù)測報告
- 2025年度經(jīng)濟(jì)適用房改造升級工程承包合同范本
- it設(shè)備合同范本
- 企業(yè)幫扶合同范本
- 借貸合同與欠款合同范本
- 上海epc合同范本
- GB/T 45177-2024人工光型植物工廠光環(huán)境技術(shù)規(guī)范
- 2025年中考語文模擬試卷(含答案解析)
- 2024-2025年天津河西區(qū)七年級上學(xué)期期末道德與法治試題(含答案)
- 2025年個人學(xué)習(xí)領(lǐng)導(dǎo)講話心得體會和工作措施例文(6篇)
- 2025大連機(jī)場招聘109人易考易錯模擬試題(共500題)試卷后附參考答案
- 2020-2025年中國中小企業(yè)行業(yè)市場調(diào)研分析及投資戰(zhàn)略咨詢報告
- 物流中心原材料入庫流程
- 長沙市2025屆中考生物押題試卷含解析
- 2024-2025學(xué)年廣東省深圳市寶安區(qū)八年級(上)期末語文試卷
- 2024年芽苗菜市場調(diào)查報告
- 新版中華人民共和國會計法解讀學(xué)習(xí)課件
評論
0/150
提交評論