autolisp程序應用.ppt_第1頁
autolisp程序應用.ppt_第2頁
autolisp程序應用.ppt_第3頁
autolisp程序應用.ppt_第4頁
autolisp程序應用.ppt_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、例1 編寫一個程序,該程序?qū)⑻崾居脩暨x擇三角形的三個頂點,并通過它們繪出所示的三角形。 多數(shù)程序都包含三個基本組成部分,即輸入、輸出及處理過程。其中處理過程的功能為根據(jù)給定的輸入來產(chǎn)生預期的輸出。編寫程序前,必須確認這三部分。,本例中,程序的輸入為三個點的坐標,期望的輸出為一個三角形。用以生成該三角形的處理過程為:由P1到P2、由P2到P3、到P3到P1各畫一條直線。弄清這三部分就會使編程過程更清晰。 輸入 輸出 P1點的位置 P2點的位置 三角形P1,P2,P3 P3點的位置 處理過程 從P1到P2畫線 從P2到P3畫線 從P3到P1畫線,;this program will prompt

2、you to enter three points 1;of a triangle from the keyboard ,or select three points 2;by using the screen cursor .P1,P2,P3 are triangle corners. 3 4(defun: :triang1() 5 (setq P1(getPoint“ Enter first Point of triangle:”) 6 (setq 2(getPoint“ Enter second Point of triangle:” 7 (setq 3(getPoint“ Enter

3、third Point of triangle:”) 8 (Command“l(fā)ine” P1 P2 P3“”) 9) 10,說明第13行前三行為注釋行,用于描述程序中的函數(shù)。這幾行很重要因為有它們,編輯程序會變得簡單一些??梢栽谌魏伪匾臅r候使用注釋。所有的注釋行都必須以分號(;)開頭,當程序裝入時這些行會被忽略。第4行:行為空行,用于分隔程序與注釋部分??招羞€可以用來分隔程序的不同模塊。這樣便于區(qū)分程序的不同部分。空行對程序沒有影響。第5行:(defun C: triang1()本行中,defun為一個AutoLISP函數(shù),它定義了函數(shù)TRIANG1。TRIANG1為該函數(shù)的函數(shù)名。由于此函

4、數(shù)名前帶有:,因此該函數(shù)可以像AutoCAD命令一樣被執(zhí)行。若沒有:, TRIANG1命令只能置于圓括號中執(zhí)行(TRIANG1)。此函數(shù)帶有三個全局變量( P1,P2,P3)。,第6行:(setq P1(getpoint“ Enter first Point triangle:)本行中,getpoint函數(shù)暫停程序的運行,允許用戶輸入三角形的第一個點。提示信息Enter first Point of triangle顯示在屏幕的提示區(qū)內(nèi)。可以通過鍵盤輸入該點的坐標,也可以用屏幕光標選擇該點。隨后setq函數(shù)將這些坐標賦予變量P1。的作用是回車,其后的表達式將被打印在下一行上(“”代表“)第行和

5、第8行:(setq 2(getpoint“ Enter second Point of triangle:”)及(setq 3(getpoint“ Enter third Point of triangle:”)這兩行提示用戶輸入三角形的第二個頂點和第三個頂點,隨后把這些坐標賦予2和3。的作用是回車,因此輸入提示顯示在下一行中。,第9行:(Command“l(fā)ine” P1 P2 P3“”)本行中,Command函數(shù)用來輸入AutoCAD的line命令,然后從P1到P2,P2到P3各畫一條直線。“”(表示“”選項)把最后一點3與第一點P1連接起來。所有的AutoCAD命令及選項在AutoLISP

6、程序中使用時都必須置于雙引號內(nèi)。變量P1、2. 3之間用空格分隔。第10行本行僅包含一個用于表明函數(shù)TRIANG1定義完成的右括號。該括號也可以寫在上一行中。把它單獨放在一行是一個好習慣,因為這樣做任何程序員都可以很容易的確定定義已結(jié)束。然而某些程序中,同一程序內(nèi)的多個定義及模塊需要明確區(qū)分開。括號及空行有助于明確定義或程序段的起始和結(jié)束。,例2 編寫一個AutoLISP程序,在給定的兩條線間通過輸入倒角角度及倒角距離生成一個倒角。 AutoCAD使用賦予系統(tǒng)變量ChamferA和ChamferB的值生成該倒角。當選擇了AutoCAD的Chamfer命令后,第一個倒角及第二個倒角的距離被自動賦

7、予系統(tǒng)變量ChamferA及ChamferB。隨后Chamfer命令使用這些值生成一個倒角。然而,在多數(shù)工程圖中,人們更喜歡通過輸入倒角長度及倒角角度的方式來生成倒角.,輸入 輸出第一個倒角距離() 任意兩條選中直線間的倒角倒角角度() 處理過程 計算過程.計算第二個倒角的距離 xd=tan a2.將這些值賦予系統(tǒng)變量ChamferA和 ChamferB =*(tan a)3.使用AutoCAD的Chamfer命令生成倒角。,;This program generates a chamfer by entering 1;the chamfer angle and the chamfer dis

8、tance 2; 3(defun :chamfer( ) 4 (setvar“cmdecho”0) 5 (graphscr) 6 (setq d(getdist“ Enter chamfer distance:”)7 (setq (getangle“ Enter chamfer angle:”) 8 (setvar“chamfera”) 9 (setvar“chamferb”( d(/sin a (cos a)) 10 (Command“chamfer”) 11 (setvar“cmdecho”) 12 (princ) 13 ) 14,cmdecho系統(tǒng)變量:控制 AutoLISP 的 com

9、mand 函數(shù)運行時 AutoCAD 是否回顯提示和輸入。第行:(setq d(getdist“ Enter chamfer distance:”)getdist函數(shù)暫停程序的運行,等候用戶輸入倒角距離,隨后setq函數(shù)將該值賦予變量。第8行:(setq (getangle“ Enter chamfer angle:”) getangle函數(shù)暫停程序的運行,等候用戶輸入倒角角度,隨后setq函數(shù)將該值賦予變量。第9行: setvar“chamfera )setvar函數(shù)將變量的值賦予AutoCAD系統(tǒng)變量chamfera。第10行: (setvar“chamferb”( d(/sin a (c

10、os a))setvar函數(shù)將從表達式(*(sin )(cos )中取得的值賦予AutoCAD系統(tǒng)變量chamferb。 第11行:(Command“chamfer) Command函數(shù)使用AutoCAD 命令生成倒角。,例3 編寫一個程序,提示用戶輸入一個矩形的兩個對角的坐標,然后在屏幕上畫出該矩形。,輸入 處理過程 P1點的坐標1.計算點和4點的坐標P3點的坐標2.畫出下列直線 P1到P2的直線 P2到P3的直線 P3到P4的直線 P4到P1的直線,P2和P4兩點的,坐標可以通過car及cadr函數(shù)算出。car函數(shù)從給定的列表中選取坐標,cadr函數(shù)選取坐標。 2點的坐標: 2點的坐標:

11、2=3 2=1 2=car(3 3) 2=cadr(1 1) 2=car 3 2=cadr P14點的坐標:4點的坐標:X4X1 Y4=Y3X4=car(X1 Y1)Y4=cadr(X3 Y3)X4=car P1Y4=cadr P3故,P2點和P4點為:P2=(list(car P3)(cadr P1)P4=(List(car P1)(cadr P3)),(defun :rect1(p1 p2 p3 p4)(graphscr)(setvar“cmdecho”0)(prompt“rect1 command draws a rectangle”)(terpri)(setq p1(getpoint

12、Enter first corner)(terpri)(setq p3(getpoint Enter opposite corner)(terpri)(setq p2(list(car p3)(cadr p1)(setq p4(list(car p1)(cadr p3)(command linep1 p2 p3 p4 c)(setval cmdecho 1)(Princ),第1行:(defun :rect1(p1 p2 p3 p4)defun函數(shù)定義了函數(shù)rect1。第2行:(graphscr)如果當前屏幕恰好是文本屏幕,該函數(shù)將文本屏幕轉(zhuǎn)換為圖形屏幕。否則,對顯示屏幕無影響。第3行:(set

13、var“cmdecho”0)函數(shù)setvar將0賦予AutoCAD系統(tǒng)變量cmdecho,即關閉了回顯。如果cmdecho被關閉,AutoCAD的命令提示就不會顯示在屏幕的命令提示區(qū)中。第4行:(prompt“rect1 command draws a rectangle”)(terpri)prompt函數(shù)將顯示雙引號中的信息(“rect1 command draws a rectangle”)。函數(shù)terpri產(chǎn)生一個回車,因此下一行文本會打印在單獨一行上。第5行:(setq p1(getpoint Enter first corner)(terpri)getpoint函數(shù)暫停程序的運行,等

14、候用戶輸入一個點(該矩形的第一個角),隨后setq函數(shù)將該值賦予變量P1。第6行:(setq p3(getpoint Enter opposite corner)(terpri)getpoint函數(shù)暫停程序的運行,等候用戶輸入一個點(該短形的對角),隨后setq函數(shù)將該值賦予變量3。,第7行:(setq p2(list(car p3)(cadr p1)cadr函數(shù)選取P1點的坐標,car函數(shù)選取P3點的坐標。setq函數(shù)將這兩個值組成的列表賦予變量P2。第8行:(setq p4(list(car p1)(cadr p3)cadr函數(shù)選取P3點的坐標,car函數(shù)選取P1點的坐標。setq函數(shù)將這

15、兩個值組成的列表賦予變量4。第9行:(command linep1 p2 p3 p4 c)Command函數(shù)使用AutoCAD的line命令在點P1,P2,P3和P4間畫線。(close)將最后一點P4與第一點P1連接起來。第10行:(setval cmdecho 1)setvar函數(shù)將1賦予AutoCAD系統(tǒng)變量cmdecho,即打開了回顯。第11行:(princ)princ函數(shù)在屏幕上打印一個空行。若沒有這一行, AutoCAD將打印出最后一個表達式的值。該值對程序毫無影響,但卻可能令人費解。princ函數(shù)用來防止在命令提示區(qū)顯示該表達式的值。第12行:該右括號表明完成函數(shù)rect1的定義

16、,并且程序結(jié)束。注意 在這個程序中,定義一個矩形的兩個角后,該矩形被生成。當移動屏幕光標輸入第 二點時,該矩形不會被拖動。然而,可以使用getcorner函數(shù)來拖動該矩形,如以下程序清單所示:,(defun :rect2(p1 p2 p3 p4)(graphscr)(setvar“cmdecho”0)(prompt“rect2 command draws a rectangle”)(terpri)(setq p1(getpoint Enter first corner)(terpri)(setq p3(getcorner p1 Enter opposite corner)(terpri)(setq p2(list(car p3)(cadr p1)(setq p4(list(car p1)(cadr p3)(command linep1 p2 p3 p4 c)(setval cmdecho 1)(Princ),例4 編寫一個AutoLISP程序,生成給定數(shù)目的同心圓。程序還應提示用戶輸入圓心,起始角及半徑增量。,(defun c:concir()(graphscr)(Setvar“cmd

溫馨提示

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

評論

0/150

提交評論