你當(dāng)前的位置>>主頁(yè)>>AutoCAD知識(shí)>>專題教程
 

Autocad VBA初級(jí)教程 (第三課 編程基礎(chǔ)二)

    有一位叫自然9172的網(wǎng)友提出了下面的問(wèn)題:
繪制三維多段線時(shí)X、Y值在屏幕上用鼠標(biāo)選取,Z值用鍵盤(pán)輸入
    本課將講解這個(gè)問(wèn)題。

為了簡(jiǎn)化程序,這里用多條直線來(lái)代替多段線。以下是源碼:
Sub myl()
Dim p1 As Variant '申明端點(diǎn)坐標(biāo)
Dim p2 As Variant
p1 = ThisDrawing.Utility.GetPoint(, "輸入點(diǎn):") '獲取點(diǎn)坐標(biāo)
z = ThisDrawing.Utility.GetReal("Z坐標(biāo):") '用戶輸入Z坐標(biāo)值
p1(2) = z '將Z坐標(biāo)值賦予點(diǎn)坐標(biāo)中
On Error GoTo Err_Control '出錯(cuò)陷井
Do '開(kāi)始循環(huán)
  p2 = ThisDrawing.Utility.GetPoint(p1, vbCr & "輸入下一點(diǎn):") '獲取下一個(gè)點(diǎn)的坐標(biāo)
  z = ThisDrawing.Utility.GetReal("Z坐標(biāo):") '用戶輸入Z坐標(biāo)值
  p2(2) = z '將Z坐標(biāo)值賦予點(diǎn)坐標(biāo)中
  Call ThisDrawing.ModelSpace.AddLine(p1, p2) '畫(huà)直線
  p1 = p2 '將第二點(diǎn)的端點(diǎn)保存為下一條直線的第一個(gè)端點(diǎn)坐標(biāo)
Loop
Err_Control:
End Sub

先談一下本程序的設(shè)計(jì)思路:
1、獲取第一點(diǎn)坐標(biāo)
2、輸入第一點(diǎn)Z坐標(biāo)
3、獲取第二點(diǎn)坐標(biāo)
4、輸入第二點(diǎn)Z坐標(biāo)
5、以第一、二點(diǎn)為端點(diǎn),畫(huà)直線
6、下一條線的第一點(diǎn)=這條線的第二點(diǎn)
7、回到第3步進(jìn)行循環(huán)
如果用戶沒(méi)有輸入坐標(biāo)或Z值,則程序結(jié)束。

首先看以下兩條語(yǔ)句:
p1 = ThisDrawing.Utility.GetPoint(, "輸入點(diǎn):") ‘獲取點(diǎn)坐標(biāo)
……
p2 = ThisDrawing.Utility.GetPoint(p1, vbCr & "輸入下一點(diǎn):") '獲取下一個(gè)點(diǎn)的坐標(biāo)
這兩條語(yǔ)句的作用是由用戶輸入點(diǎn)用鼠標(biāo)選取點(diǎn)坐標(biāo),并把坐標(biāo)值賦給p1、p2兩個(gè)變量。ThisDrawing.Utility.GetPoint()在ACAD中這是最常用的方法之一,它需要兩個(gè)參數(shù),在逗號(hào)前面的參數(shù)應(yīng)該是一個(gè)點(diǎn)坐標(biāo),它的作用是在屏幕上畫(huà)一條線,前一個(gè)端點(diǎn)位于點(diǎn)坐標(biāo)位置,后一個(gè)端點(diǎn)跟隨鼠標(biāo)移動(dòng),逗號(hào)之前可以什么都不填,這時(shí)沒(méi)有線條會(huì)跟隨鼠標(biāo)移動(dòng),但逗號(hào)必須保留。
逗號(hào)后面使用一串字符,程序在命令行顯示這串字符,這不難理解。
VbCr通常代表一個(gè)回車符,而在這個(gè)語(yǔ)句中,它的作用是在命令行不顯示“命令:”
&的作用是連接字符。舉例:
“愛(ài)我中華 ”&”抵制日貨 ”&”從我做起”

z = ThisDrawing.Utility.GetReal("Z坐標(biāo):") '用戶輸入Z坐標(biāo)值
由用戶輸入一個(gè)實(shí)數(shù)

On Error GoTo Err_Control '出錯(cuò)陷井
……
Err_Control:
On Error是出錯(cuò)陷井語(yǔ)句,在程序出錯(cuò)時(shí)將執(zhí)行On Error 后面的語(yǔ)句
GoTo Err_contorl 是程序跳轉(zhuǎn)語(yǔ)句,它的作用是在程序中尋找Err_control:,并執(zhí)行這一行后面的語(yǔ)句,本例中Err_Control:后就是結(jié)束宏,所以只要出現(xiàn)錯(cuò)誤,程序中止。

Do '開(kāi)始循環(huán)
……
Loop ‘結(jié)束循環(huán)
這個(gè)循環(huán)就歷害了,它會(huì)無(wú)休止地進(jìn)行循環(huán),好在本例中已經(jīng)有了一個(gè)出錯(cuò)陷井,當(dāng)用戶輸入回車時(shí),由于程序沒(méi)有得到點(diǎn)或坐標(biāo),程序出錯(cuò),跳出循環(huán),中止程序。如果要人為控制跳出循環(huán),可以在代碼中用Exit Do語(yǔ)句跳出循環(huán)。在For 變量 和Next 變量之間如果要跳出循環(huán),那么只要在循環(huán)體內(nèi)加一個(gè)Exit for 就可以跳出循環(huán),關(guān)于這方面的例程以后會(huì)講到。

Call ThisDrawing.ModelSpace.AddLine(p1, p2) '畫(huà)直線
畫(huà)直線方法也是很常用的,它的兩個(gè)參數(shù)是點(diǎn)坐標(biāo)變量

本課到此結(jié)束,請(qǐng)做思考題:
連續(xù)畫(huà)圓,每次要求用戶輸入圓心、半徑,當(dāng)用戶不再輸入圓心或半徑時(shí)程序才退出.

本教程共13頁(yè)    第  [1]  [2]  3  [4] [5] [6] [7] [8] [9] [10] [11]  [12]  [13] 頁(yè)
民眾工作室.制作      版權(quán)所有