我想看一级黄色大片_久久亚洲国产精品一区二区_久久精品免视看国产明星_91久久青青青国产免费

您的位置:網站首頁 > CAD教程 > CAD教程文章

Autocad VBA初級教程 (第四課 編程基礎二)

時間:2010-11-18 19:47:09 來源:未知

有一位叫自然9172的網友提出了下面的問題:
繪制三維多段線時X、Y值在屏幕上用鼠標選取,Z值用鍵盤輸入
本課將講解這個問題。

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

先談一下本程序的設計思路:
1、獲取第一點坐標
2、輸入第一點Z坐標
3、獲取第二點坐標
4、輸入第二點Z坐標
5、以第一、二點為端點,畫直線
6、下一條線的第一點=這條線的第二點
7、回到第3步進行循環
如果用戶沒有輸入坐標或Z值,則程序結束。

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

z = ThisDrawing.Utility.GetReal("Z坐標:") '用戶輸入Z坐標值
由用戶輸入一個實數

On Error GoTo Err_Control '出錯陷井
……
Err_Control:
On Error是出錯陷井語句,在程序出錯時將執行On Error 后面的語句
GoTo Err_contorl 是程序跳轉語句,它的作用是在程序中尋找Err_control:,并執行這一行后面的語句,本例中Err_Control:后就是結束宏,所以只要出現錯誤,程序中止。

Do '開始循環
……
Loop ‘結束循環
這個循環就歷害了,它會無休止地進行循環,好在本例中已經有了一個出錯陷井,當用戶輸入回車時,由于程序沒有得到點或坐標,程序出錯,跳出循環,中止程序。如果要人為控制跳出循環,可以在代碼中用Exit Do語句跳出循環。在For 變量 和Next 變量之間如果要跳出循環,那么只要在循環體內加一個Exit for 就可以跳出循環,關于這方面的例程以后會講到。

Call ThisDrawing.ModelSpace.AddLine(p1, p2) '畫直線
畫直線方法也是很常用的,它的兩個參數是點坐標變量

本課到此結束,請做思考題:
連續畫圓,每次要求用戶輸入圓心、半徑,當用戶不再輸入圓心或半徑時程序才退出