版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、例1 編寫一個(gè)程序,該程序?qū)⑻崾居脩暨x擇三角形的三個(gè)頂點(diǎn),并通過它們繪出所示的三角形。 多數(shù)程序都包含三個(gè)基本組成部分,即輸入、輸出及處理過程。其中處理過程的功能為根據(jù)給定的輸入來產(chǎn)生預(yù)期的輸出。編寫程序前,必須確認(rèn)這三部分。,本例中,程序的輸入為三個(gè)點(diǎn)的坐標(biāo),期望的輸出為一個(gè)三角形。用以生成該三角形的處理過程為:由P1到P2、由P2到P3、到P3到P1各畫一條直線。弄清這三部分就會使編程過程更清晰。 輸入 輸出 P1點(diǎn)的位置 P2點(diǎn)的位置 三角形P1,P2,P3 P3點(diǎn)的位置 處理過程 從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ù)。這幾行很重要因?yàn)橛兴鼈儯庉嫵绦驎兊煤唵我恍???梢栽谌魏伪匾臅r(shí)候使用注釋。所有的注釋行都必須以分號(;)開頭,當(dāng)程序裝入時(shí)這些行會被忽略。第4行:行為空行,用于分隔程序與注釋部分。空行還可以用來分隔程序的不同模塊。這樣便于區(qū)分程序的不同部分。空行對程序沒有影響。第5行:(defun C: triang1()本行中,defun為一個(gè)AutoLISP函數(shù),它定義了函數(shù)TRIANG1。TRIANG1為該函數(shù)的函數(shù)名。由于此函
4、數(shù)名前帶有:,因此該函數(shù)可以像AutoCAD命令一樣被執(zhí)行。若沒有:, TRIANG1命令只能置于圓括號中執(zhí)行(TRIANG1)。此函數(shù)帶有三個(gè)全局變量( P1,P2,P3)。,第6行:(setq P1(getpoint“ Enter first Point triangle:)本行中,getpoint函數(shù)暫停程序的運(yùn)行,允許用戶輸入三角形的第一個(gè)點(diǎn)。提示信息Enter first Point of triangle顯示在屏幕的提示區(qū)內(nèi)。可以通過鍵盤輸入該點(diǎn)的坐標(biāo),也可以用屏幕光標(biāo)選擇該點(diǎn)。隨后setq函數(shù)將這些坐標(biāo)賦予變量P1。的作用是回車,其后的表達(dá)式將被打印在下一行上(“”代表“)第行和
5、第8行:(setq 2(getpoint“ Enter second Point of triangle:”)及(setq 3(getpoint“ Enter third Point of triangle:”)這兩行提示用戶輸入三角形的第二個(gè)頂點(diǎn)和第三個(gè)頂點(diǎn),隨后把這些坐標(biāo)賦予2和3。的作用是回車,因此輸入提示顯示在下一行中。,第9行:(Command“l(fā)ine” P1 P2 P3“”)本行中,Command函數(shù)用來輸入AutoCAD的line命令,然后從P1到P2,P2到P3各畫一條直線?!啊保ū硎尽啊边x項(xiàng))把最后一點(diǎn)3與第一點(diǎn)P1連接起來。所有的AutoCAD命令及選項(xiàng)在AutoLISP
6、程序中使用時(shí)都必須置于雙引號內(nèi)。變量P1、2. 3之間用空格分隔。第10行本行僅包含一個(gè)用于表明函數(shù)TRIANG1定義完成的右括號。該括號也可以寫在上一行中。把它單獨(dú)放在一行是一個(gè)好習(xí)慣,因?yàn)檫@樣做任何程序員都可以很容易的確定定義已結(jié)束。然而某些程序中,同一程序內(nèi)的多個(gè)定義及模塊需要明確區(qū)分開。括號及空行有助于明確定義或程序段的起始和結(jié)束。,例2 編寫一個(gè)AutoLISP程序,在給定的兩條線間通過輸入倒角角度及倒角距離生成一個(gè)倒角。 AutoCAD使用賦予系統(tǒng)變量ChamferA和ChamferB的值生成該倒角。當(dāng)選擇了AutoCAD的Chamfer命令后,第一個(gè)倒角及第二個(gè)倒角的距離被自動(dòng)賦
7、予系統(tǒng)變量ChamferA及ChamferB。隨后Chamfer命令使用這些值生成一個(gè)倒角。然而,在多數(shù)工程圖中,人們更喜歡通過輸入倒角長度及倒角角度的方式來生成倒角.,輸入 輸出第一個(gè)倒角距離() 任意兩條選中直線間的倒角倒角角度() 處理過程 計(jì)算過程.計(jì)算第二個(gè)倒角的距離 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ù)運(yùn)行時(shí) AutoCAD 是否回顯提示和輸入。第行:(setq d(getdist“ Enter chamfer distance:”)getdist函數(shù)暫停程序的運(yùn)行,等候用戶輸入倒角距離,隨后setq函數(shù)將該值賦予變量。第8行:(setq (getangle“ Enter chamfer angle:”) getangle函數(shù)暫停程序的運(yùn)行,等候用戶輸入倒角角度,隨后setq函數(shù)將該值賦予變量。第9行: setvar“chamfera )setvar函數(shù)將變量的值賦予AutoCAD系統(tǒng)變量chamfera。第10行: (setvar“chamferb”( d(/sin a (c
10、os a))setvar函數(shù)將從表達(dá)式(*(sin )(cos )中取得的值賦予AutoCAD系統(tǒng)變量chamferb。 第11行:(Command“chamfer) Command函數(shù)使用AutoCAD 命令生成倒角。,例3 編寫一個(gè)程序,提示用戶輸入一個(gè)矩形的兩個(gè)對角的坐標(biāo),然后在屏幕上畫出該矩形。,輸入 處理過程 P1點(diǎn)的坐標(biāo)1.計(jì)算點(diǎn)和4點(diǎn)的坐標(biāo)P3點(diǎn)的坐標(biāo)2.畫出下列直線 P1到P2的直線 P2到P3的直線 P3到P4的直線 P4到P1的直線,P2和P4兩點(diǎn)的,坐標(biāo)可以通過car及cadr函數(shù)算出。car函數(shù)從給定的列表中選取坐標(biāo),cadr函數(shù)選取坐標(biāo)。 2點(diǎn)的坐標(biāo): 2點(diǎn)的坐標(biāo):
11、2=3 2=1 2=car(3 3) 2=cadr(1 1) 2=car 3 2=cadr P14點(diǎn)的坐標(biāo):4點(diǎn)的坐標(biāo):X4X1 Y4=Y3X4=car(X1 Y1)Y4=cadr(X3 Y3)X4=car P1Y4=cadr P3故,P2點(diǎn)和P4點(diǎn)為: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)如果當(dāng)前屏幕恰好是文本屏幕,該函數(shù)將文本屏幕轉(zhuǎn)換為圖形屏幕。否則,對顯示屏幕無影響。第3行:(set
13、var“cmdecho”0)函數(shù)setvar將0賦予AutoCAD系統(tǒng)變量cmdecho,即關(guān)閉了回顯。如果cmdecho被關(guān)閉,AutoCAD的命令提示就不會顯示在屏幕的命令提示區(qū)中。第4行:(prompt“rect1 command draws a rectangle”)(terpri)prompt函數(shù)將顯示雙引號中的信息(“rect1 command draws a rectangle”)。函數(shù)terpri產(chǎn)生一個(gè)回車,因此下一行文本會打印在單獨(dú)一行上。第5行:(setq p1(getpoint Enter first corner)(terpri)getpoint函數(shù)暫停程序的運(yùn)行,等
14、候用戶輸入一個(gè)點(diǎn)(該矩形的第一個(gè)角),隨后setq函數(shù)將該值賦予變量P1。第6行:(setq p3(getpoint Enter opposite corner)(terpri)getpoint函數(shù)暫停程序的運(yùn)行,等候用戶輸入一個(gè)點(diǎn)(該短形的對角),隨后setq函數(shù)將該值賦予變量3。,第7行:(setq p2(list(car p3)(cadr p1)cadr函數(shù)選取P1點(diǎn)的坐標(biāo),car函數(shù)選取P3點(diǎn)的坐標(biāo)。setq函數(shù)將這兩個(gè)值組成的列表賦予變量P2。第8行:(setq p4(list(car p1)(cadr p3)cadr函數(shù)選取P3點(diǎn)的坐標(biāo),car函數(shù)選取P1點(diǎn)的坐標(biāo)。setq函數(shù)將這
15、兩個(gè)值組成的列表賦予變量4。第9行:(command linep1 p2 p3 p4 c)Command函數(shù)使用AutoCAD的line命令在點(diǎn)P1,P2,P3和P4間畫線。(close)將最后一點(diǎn)P4與第一點(diǎn)P1連接起來。第10行:(setval cmdecho 1)setvar函數(shù)將1賦予AutoCAD系統(tǒng)變量cmdecho,即打開了回顯。第11行:(princ)princ函數(shù)在屏幕上打印一個(gè)空行。若沒有這一行, AutoCAD將打印出最后一個(gè)表達(dá)式的值。該值對程序毫無影響,但卻可能令人費(fèi)解。princ函數(shù)用來防止在命令提示區(qū)顯示該表達(dá)式的值。第12行:該右括號表明完成函數(shù)rect1的定義
16、,并且程序結(jié)束。注意 在這個(gè)程序中,定義一個(gè)矩形的兩個(gè)角后,該矩形被生成。當(dāng)移動(dòng)屏幕光標(biāo)輸入第 二點(diǎn)時(shí),該矩形不會被拖動(dòng)。然而,可以使用getcorner函數(shù)來拖動(dòng)該矩形,如以下程序清單所示:,(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 編寫一個(gè)AutoLISP程序,生成給定數(shù)目的同心圓。程序還應(yīng)提示用戶輸入圓心,起始角及半徑增量。,(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)容里面會有圖紙預(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高職石油化工技術(shù)(石油煉制工藝)試題及答案
- 2025年大學(xué)二年級(乳品工程)乳品加工技術(shù)試題及答案
- 2025年大學(xué)地理(冰川地理)試題及答案
- 2025年大學(xué)機(jī)械設(shè)計(jì)制造(機(jī)械設(shè)計(jì)基礎(chǔ))試題及答案
- 2025年中職安全(技巧訓(xùn)練)試題及答案
- 2025年中職學(xué)前教育(幼兒歌曲教唱)試題及答案
- 2025年中職建筑智能化工程施工(智能設(shè)備安裝)試題及答案
- 2025年高職(高分子材料工程技術(shù))高分子材料成型工藝模擬試題及解析
- 2026年河南信息統(tǒng)計(jì)職業(yè)學(xué)院單招綜合素質(zhì)考試備考題庫帶答案解析
- 2026年池州職業(yè)技術(shù)學(xué)院單招職業(yè)技能考試參考題庫帶答案解析
- 2026年廣西貴港市華盛集團(tuán)新橋農(nóng)工商有限責(zé)任公司招聘備考題庫及參考答案詳解
- 2026年市場集團(tuán)有限公司所屬企業(yè)(溫嶺浙江工量刃具交易中心股份有限公司)公開招聘工作人員備考題庫及1套完整答案詳解
- 2026青海西寧市湟源縣水務(wù)發(fā)展(集團(tuán))有限責(zé)任公司招聘8人參考考試試題及答案解析
- 2023-2024學(xué)年北京市海淀區(qū)八年級上學(xué)期期末考試物理試卷含詳解
- 2024版房屋市政工程生產(chǎn)安全重大事故隱患判定標(biāo)準(zhǔn)內(nèi)容解讀
- GB 21258-2024燃煤發(fā)電機(jī)組單位產(chǎn)品能源消耗限額
- JB∕T 13026-2017 熱處理用油基淬火介質(zhì)
- 人教版高一化學(xué)方程式大全
- DB64 1996-2024 燃煤電廠大氣污染物排放標(biāo)準(zhǔn)
- 鄰近鐵路營業(yè)線施工安全監(jiān)測技術(shù)規(guī)程 (TB 10314-2021)
- 生物化學(xué)第30章蛋白質(zhì)降解和氨基酸的分解代謝
評論
0/150
提交評論