Autocad VBA初級(jí)教程 (第六課 數(shù)據(jù)類型的轉(zhuǎn)換)
上一節(jié)課我們用一個(gè)簡(jiǎn)單的公式把角度轉(zhuǎn)化為弧度,這樣做便于大家理解。不過(guò)VBA中有現(xiàn)成的方法可以轉(zhuǎn)換數(shù)據(jù)類型。
我們舉例說(shuō)明:
jd = ThisDrawing.Utility.AngleToReal(30, 0)
這個(gè)表達(dá)式把角度30度轉(zhuǎn)化為弧度,結(jié)果是.523598775598299。
AngleToReal需要兩個(gè)參數(shù),前面是表示要轉(zhuǎn)換角度的數(shù)字,而后面一個(gè)參數(shù)可以取值為0-4之間的整數(shù),有如下意義:
0:十進(jìn)制角度;1:度分秒格式;2:梯度;3:弧度;4:測(cè)地單位
例:id= ThisDrawing.Utility.AngleToReal("62d30' 10""", 1)
這個(gè)表達(dá)式計(jì)算62度30分10秒的弧度
再看將字符串轉(zhuǎn)換為實(shí)數(shù)的方法:DistanceToReal
需要兩個(gè)參數(shù),前一個(gè)參數(shù)是表示數(shù)值的字符串,后面可以取值1-5,表示數(shù)據(jù)格式,有如下意義:
1:科學(xué)計(jì)數(shù);2:十進(jìn)制;3:工程計(jì)數(shù)——英尺加英寸;4:建筑計(jì)數(shù)——英尺加分?jǐn)?shù)英寸;5:分?jǐn)?shù)格式。
例:以下表達(dá)式得到一個(gè)12.5的實(shí)數(shù)
temp1 = ThisDrawing.Utility.DistanceToReal("1.25E+01", 1)
temp2 = ThisDrawing.Utility.DistanceToReal("12.5", 2)
temp3 = ThisDrawing.Utility.DistanceToReal("12 1/2", 5)
而realtostring方法正好相反,它把一個(gè)實(shí)數(shù)轉(zhuǎn)換為字符串。它需要3個(gè)參數(shù)
第一個(gè)參數(shù)是一個(gè)實(shí)數(shù),第二個(gè)參數(shù)表示數(shù)據(jù)格式,含義同上,最后一個(gè)參數(shù)表示精確到幾位小數(shù)。
temp1= ThisDrawing.Utility.RealToString(12.5, 1, 3)
得到這個(gè)字符串:“1.250E+01”,
下面介紹一些數(shù)型轉(zhuǎn)換函數(shù):
Cint,獲得一個(gè)整數(shù),例:Cint(3.14159) ,得到3
Cvar,獲得一個(gè)Variant類型的數(shù)值,例:Cvar("123" & "00"),得到”12300”
Cdate,轉(zhuǎn)換為date數(shù)據(jù)類型,例:MyShortTime = CDate("11:13:14 AM")
下面的代碼可以寫出一串?dāng)?shù)字,從000-099。
Sub test()
Dim add0 As String
Dim text As String
Dim p(0 To 2) As Double
p(1) = 0 'Y坐標(biāo)為0
p(2) = 0 'Z坐標(biāo)為0
For i = 0 To 99 '開始循環(huán)
If i < 10 Then '如果小于10
add0 = "00" '需要加00
Else '否則
add0 = "0" '需要加0
End If
text = add0 & CStr(i) '加零,并轉(zhuǎn)換數(shù)據(jù)
p(0) = i * 100 'X坐標(biāo)
Call ThisDrawing.ModelSpace.AddText(text, p, 4) '寫字
Next i
End Sub
重點(diǎn)解釋條件判斷語(yǔ)句:
If 條件表達(dá)式 Then
……
Else
……
End if
如果滿足條件那么程序往下執(zhí)行,到else時(shí)不再往下執(zhí)行,直接跳到End if后面
如果不滿足條件,程序跳到else后往下運(yùn)行。
Call ThisDrawing.ModelSpace.AddText(text, p, 4) '寫字
這是寫單行文本,需要三個(gè)參數(shù),分別是:寫的內(nèi)容、位置、字高. |