




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、機械設計5.1輸出函數部分本節將針對 Visual LISP 與 VBA 的輸出函數為您做一個系統的介紹。5.1.1用于屏幕和文件輸出的 Visual LISP 函數面章節的范例中,經常用到一個屏幕輸出的函數princ。princ 不但可以用來實現字符串的屏幕輸出,也可以實現字符串文件的輸出。與 princ 功能類似的函數還有pr和 prin1,它們的用法很類似。例如:(setq f (open textfile.txt w) (prLearning VLisp f) (prin1 Learning VLisp f) (princ Learning VLisp )其中,f 是文件描述符。整句的
2、意思為:若有 f(即文件若已開啟),則將字符串寫入 f所指定的文件中;如果沒有開啟文件,就將字符串輸出打印于屏幕上。雖然 princ、pr與prin1 的用法類似,但是這三個函數也有一些區別:princ 用于顯示不含引號的字符串,并返回字符串;prin1 顯示的是包含引號的字符串,并返回字符串;而 pr也是顯示包含引號的字符串,并返回字符串,但是會在字符串之前加一個空行,之后加一個空格。此外,write-char 和 wriine 也是兩個可用于屏幕輸出與文件輸出的 Visual LISP 函數。write-char 的作用是將一個字符寫到屏幕上或一個已打開的文件中;而 wri針對字符串來操作
3、。它可以將字符串寫到屏幕上或一個已打開的文件中。例如:(write-char 65 f) ;到 f 指定的文件中寫入字符 A,A 的 ASCII 碼是 65ine 則是(wriine d:sle) ;在屏幕上打印字符串d:sle5.1.2僅用于屏幕輸出的 Visual LISP 函數在 Visual LISP 函數中,prompt 與 tri 函數是專門用于屏幕輸出的。prompt 的功能與 princ 類似,但返回 nil。Tri 的主要作用是換行,并返回 nil。其功能就相當于加了打印控制符 n 的 princ 函數:(princ n)。例如:prompt(Learning Visual
4、Lisp) ;在屏幕上打印字符串Learning Visaul Lisp(tri);換行,并將光標移至下一行開始處76第 5 章 程序里的 IO 控制5.1.3用于屏幕輸出的 VBA 函數prompt在 VBA 中,如果希望在屏幕上打印文字,就可以使用“prompt 方法”。在以后提及的對象中,也稱為“prompt 方法”。例如:Sub ForPrompt() mpt learn VBAEnd Sub執行 ForPrompt 宏將在當前的 AutoCAD 命令提示行中打印 learnVBA。5.1.4用于文件輸出的 VBA 函數pr、write 與
5、 wriinepr是 VBA 內建的打印函數。其語法如下:pr#filenumber outputstring其中,“ #filenumber ”就是已打開的文件, 若包含此項參數, 您就可以將“outputstring”中的內容順序寫入文件中;若沒有包含“#filenumber”,則將直接在窗口中打印“outputstring”的內容。例如:Open d:/sles/textfile.txt For Output As #1Pr#1, This is a testClose #1將在 d:/s輸入:les/ 目錄下打開文件 textfile.txt 并寫入字符串 This is a test
6、。如果您直接PrThis is a test將直接在窗口中打印This is a test。write 函數則是用于將一個指定的字符串寫入一個 TextStream 的文件中。所謂 “TextStream”就是一個可順序存取的文件流,這在后面的第十章中還會詳細講述。wriine 函數則是按行寫入,即寫入一個指定的字符串與換行符到一個 TextStream 文件中。例如:Sub For fsoSle()Dim fso As new FileSystemObjectSet fa=fso.CreateTextFile(d:sletextfile.txt)fa.Wriine(For Wrifa.Clo
7、seine test.)77機械設計End Sub的意思是:在 d:sle 目錄下建立一個名稱為 textfile.txt 的文本文件,然這后在其內寫入字符串“For Wriine test”。在這個程序里,使用了高級的文件操作,如果沒有看懂這個程序或執行后不正確也沒關系。請先在此熟悉這個輸出函數,然后到第10 章中再進行更進一步的了解。5.1.5MsgBox 方法在 Windows 的程序設計中,還需經常使用信息框來顯示一些信息。VBA 提供了一個符合 Windows 風格,可用于信息框輸出的 MsgBox 函數。它專門用來產生信息框。例如,當您輸入以下程序時:MsgBox A Conven
8、ient Way to Show Message執行后,就會出現一包含了 A Convenient Way to Show Message 的信息框,如圖 5-1所示。圖 5-1 經過MsgBox 方法所發出的信息框有關 MsgBox 更詳細的使用信息,請直接參閱 VBA 的文件。5.2輸入函數部分本節將針對 Visual LISP 與 VBA 的輸入函數來為您做一個系統的介紹。5.2.1Visual LISP 的輸入函數Get 系列函數在 Visual LISP 里,Get 系列函數包括:Get、GetDist、GetPo、GetCorner、GetAngle、GetOrient、GetSt
9、ring 與 GetKword 等。它們負責讓用戶輸入數值、點、角度與字符串等數據。Get 系列函數在執行中都會暫停以等待用戶輸入指定類型的資料,并返回輸入的值。78第 5 章程序里的 IO 控制表 5-1 中列出 Get 系列函數以及其所需的用戶輸入數據類型。表 5-1 Get 系列函數及數據類型接下來,就制作一個可以看出 Get 系列函數的使用方法。這個程序將讓使用者輸入實數的半徑、圓心以及顏色來畫一個圓。(1);Getfunction demoget.lsp(2);function:Show Get(3)use and draw a circle(4)(defun c:get(/ na
10、nb nc pa pb aa ao)(5)(6)(7)(8)(9)(10)(11)(setq na(getnInput aneger:) (setq nb(getreal nInput a real:) (setq pa(getponInput a po :)(setq nc(getdist nInput a dist:)(setq pb(getcorna nInput anotho :)(setq aa(getangle nInput an angle:)(setq ao(getorient nInput another angle:)(12)(initget Red Green Blue)
11、(13)(setq ck (getkword nEnter a color(Red/Green/Blue): )(14)(15) ( (16)d color ck)d circle pa nb)執行結果:執行后,只要輸入 na、nb、pa、nc、pb、aa、ao、ck 值,并以 pa 點為圓心,nb 為半徑,將目前圖層的顏色設為 ck,并畫圓。79函 數 名 稱用戶輸入類型Get等待用戶輸入一個整數值GetReal等待用戶輸入一個實數值GetDist等待用戶輸入或以屏幕上選擇的兩個點距離來返回一個實數或整數值GetPo等待用戶輸入或從屏幕上選擇一個點值GetCorner等待用戶輸入或從屏幕上選
12、擇一個點值(窗口的對角點)GetAngle等待用戶輸入或由屏幕上選擇的點決定一個角度值,常用于返回相對角度GetOrient等待用戶輸入或由屏幕上選擇的點決定一個角度值,常用于返回絕對角度GetString等待用戶輸入一個字符串GetKword等待用戶輸入一個由 initget 預定義的機械設計分析:除了 GetCorner 之外,Get 系列函數的語法都是類似的,均為 (getmessage)。第(9)行 GetCorner 是以一點為基點而拉出一個橡皮拉線來獲得另一點。此語法一般用于選取區域時。請注意,在該語法中必須有一基點。對第(10)行和第(11)行的 GetAngle和 GetOri
13、ent 來說,也可在語法中設一基點,并在執行中等待用戶輸入另一個點。系統將根據這兩個點聯機的夾角來返回角度值。與 GetCorner 不同,此基點可有可無。第(12)行使用了 initget 函數來設定是用大寫字母來表示的。第(13)行中將。請注意使用 GetKword 函數,于此,用戶將輸入 initget 所定義的來表示顏色。5.2.2Visual LISP 的文件與鍵盤輸入函數Read-Char 函數將從打開的文件中或鍵盤的輸入中讀入一個字符,并將該字符轉換成十進制的 ASCII 碼值后返回。例如:(setq f (open d:/sles/textfile.txt r)(setq ch
14、 (Read-Char f) (setq ch2 (Read-Char)這 3 行程序將于 d:/sles 目錄中打開文件 textfile.txt,并一個字符來賦予 ch 變量,接著再從鍵盤緩沖區讀入一個字符。如果當鍵盤緩沖區內沒有東西時,(Read-Char) 函數就會暫停以等待用戶輸入。若輸入字符 a,則返回其 ASCII 碼 97。Read-Line 函數則用于從鍵盤或已打開的文件中一行字符串。例如:(setq f (open d:/sles/textfile.txt r)(setq str (Read-Char f) (setq str2 (Read-Char)這 3 行程序將于 d
15、:/sles 目錄中打開文件 textfile.txt,并第一行,然后將字符串值賦予 str 變量,然后再從鍵盤緩沖區讀入一行字符串并將其賦予 str2。5.2.3VBA 的輸入函數使用Utility 對象的Get 系列方法VBA 可以利用 Utility 對象來使用類似 Visual LISP 的 Get 系列函數。請參考以下范例:(1)Getfunction demoget.dvb80第 5 章程序里的 IO 控制(2)function:Show Getuse and draw a circle (3)Option ExplicitPublic Sub get()(6)(7)(8)(9)(
16、10)(11)(12)(13)(14)(15)(16)(17)(18)(19)(20)(21)(22)(23)(24)(25)(26)(27)(28)Dim na AsegerDim nb As Double, nc As Double Dim aa As Double, ao As Double Dim pa As Variant, pbDim str As StringDim ck As String, cmd1 As String, cmd2 As String Dim circ As AcadCircleDim util As ObjectSet util = ThisDrawing.
17、Utilityna = util.Get eger(Input aneger:) nb = util.GetReal(Input a real:)pa = util.GetPo (, Input a po :)nc = util.GetDistance(, Input a dist:)pb = util.GetCorna, Input anotho :)aa = util.GetAngle(, Input an angle:)ao = util.GetOrien ion(, Input another angle:) str = util.GetString(True, Input a str
18、ing:) util.InitializeUserInput 128, Red Green Blueck = util.GetKeyword(Enter a color(Red/Green/Blue):)cmd1 = (d color) & vbCr & ck & vbCrcmd2 = circle & vbCr & pa(0) & , & pa(1) & vbCr & nb & vbCrTTmand cmd1mand cmd2(29)End Sub執行結果:本例輸出結果與 5.2.1 節的 Visual LISP 范例相同。分析:程序的(15)(24)行就是使用了 utility 對象的 G
19、et方法。如此,用戶就如同在 VLISP 里一樣輸入適當的值。其中,括弧中的逗號之前沒有包含參數的,如 (, Input another angle:),就表示此處要使用默認值。(27)和(28)行將使用(25)和(26)行所設定令行字符串來向 AutoCAD 發出命令。81機械設計5.2.4VBA 的文件與鍵盤輸入函數Read 與ReadLineRead 方法用于獲得從一個 TextStream 文件中指定數量的字符,并返回所得到的字符串。而 ReadLine 方法則用于獲得從一個 TextStream 文件字符串。舉例如下:一整行,并返回得到的FileInput function demo
20、fileinput(FSO).dvbfunction:open a text file and get its content (3)Option ExplicitPublic Sub FSOInput()(6)(7)(8)(9)(10)(11)(12)(13)(14)(15)Dim fso As New FileSystemObject, fil1 As file, ts As TextStreamDim str As String, ch As String, filename As Stringfilename = d:/AutoCAD 設計院/NO.6/s Set fil1 = fso
21、.GetFile(filename)Set ts = fil1.OpenAsTextStream(ForReading) str = ts.ReadLinech = ts.Read(3) ts.Close Debug.prstrDebug.prcnles/textfile.txt(16)End Sub執行結果:將文本文件 textfile.txt 的第行字符串賦予 str,然后再將第行的前三個字符賦予 ch。分析:第(10)行將設定文本文件流 ts。第(11)行將讀出 ts 所指定的文本文件流的目前行,并將該字符串賦予 str。此時,指針將移到第 2 行。第(12)行將讀出 ts 所指定的文本
22、文件流目前行(已到第 2 行)起的前 3 個字符賦予 ch。第(14)、(15)行程序在正式的程序中是不會寫的,但是本例是為了證明 str 與 cn 變量均已擷取到應該取得的字符,所以就指定要將其內容顯示于實時運算窗口中。如圖 5-2 所示。82第 5 章 程序里的 IO 控制圖 5-2 str 與cn 變量的內容本范例中有關 FSO 的語法部分,請參考 10.6 節。5.2.5InputBox 方法與 MsgBox 輸出方法風格類似的輸入方法就是 InputBox。它將使用輸入窗口的方式來提示用戶進行輸入,非常易用。例如,輸入以下程序:a = InputBox(Input number a,
23、 Please:)就會出現如圖 5-3 所示的輸入窗口。圖 5-3 由 InputBox 方法所發出的輸入窗口您只要在此輸入窗口中輸入參數即可。83這是測試!前三個這二條程序所造成的效果將于此顯示 str 與 cn 變的內容機械設計課 后 習 題一、多選題1.以下哪些是用于屏幕輸出的 Visual LISP 與 VBA 函數:(prompt(VLISP)與 pr(VBA)princ(VLISP)與 prompt(VBA)write-char(VLISP)與 write(VBA)(D) wriine(VLISP)與 wriine(VBA)2.以下哪些是用于文件輸出的 Visual LISP 與 VBA 函數:(prompt(VLISP)與 pr(VBA)princ(VLISP)與 prompt(VBA)write-char(VLISP)與 write(VBA)(D) wriine(VLISP)與 wriine(VBA)3.以下哪些是 MsgBox 的功能:( )專門用來建立信息框專門用來建立輸入框專門用來建立下拉式選項以上都不是以下哪些是用于屏幕輸入的 Visual LISP 與 VBA 函數:( )(A) Read-char(VLISP)與 read(VBA)4.getget(VLIS
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 綠色采購聯盟發展-洞察及研究
- 天津市和平區雙菱中學2024-2025學年數學九年級第一學期期末綜合測試試題含解析
- 規培前考試試題及答案
- 氮族元素76課件
- 二零二五年度玻璃制品安裝與銷售代理合同
- 二零二五年度白酒行業創新發展合作合同
- 2025版生物醫藥冷鏈保鮮倉儲服務協議
- 二零二五年離婚協議起草與執行監督
- 2025版商業廣場保安個人承包服務合同
- 二零二五年度10kv變配電工程安全施工責任合同書
- 醫院消化內科面試題及答案
- 鋰離子電池極片輥壓工序簡介
- GB/T 3683-2023橡膠軟管及軟管組合件油基或水基流體適用的鋼絲編織增強液壓型規范
- 七年級上學期歷史導言課課件 ( 希沃白板課件+PPT課件)
- 醫療管理制度PDCA培訓:提高醫院感染管理相關制度的落實率
- 肺結核診斷和治療指南
- 軟件系統售后服務方案
- GB/T 9765-2009輪胎氣門嘴螺紋
- GB/T 4623-2014環形混凝土電桿
- GB/T 23806-2009精細陶瓷斷裂韌性試驗方法單邊預裂紋梁(SEPB)法
- GB/T 16823.3-2010緊固件扭矩-夾緊力試驗
評論
0/150
提交評論