本来想继续说理论的,可是想起之前和Skywoolf聊天时说这个东西是不是也像GH那样用实例来讲会更好呢。这次就试试,要是觉得这样不好理解的话,我们就继续理论学习。讲的不对的地方就直接指出来,不明白的命令可以到VBSCRIPT中文速查手册里去查。在这个版块里就有。
开始正题
这是一个关于循环语句用法,通过直线不断的绕着方体运行,这样把那个方体去掉,这些直线就会围合成一个方体。这个例子我们让这条直线绕5000次,这样效果会更明显。
Sub Main()
Rhino.AddLayer "black",RGB(0,0,0)
Dim headPt,endPt : endPt = Array (0,0,0)
Dim strLine
Dim r,g,b : r = 0 : g = 0 : b = 0
Dim count : count = 0
Const EDGELEN = 500
Do
headPt = endPt
endPt = getPt(EDGELEN)
strLine = Rhino.AddLine(headPt,endPt)
Rhino.ObjectLayer strLine , "black"
Rhino.ObjectColor strLine , RGB(r,g,b)
r = r + 1
If r >= 255 Then
r = 0
End If
b = b + 1
If b >= 255 Then
b = 0
End If
g = g + 1
If g >= 255 Then
g = 0
End If
count = count+1
' rhino.Print count
If count > 5000 Then Exit Do
Loop 'until count > 50
End Sub
Function getPt(EDGELEN)
Dim randomNum : randomNum = Int(Rnd()*6)
Select Case randomNum
Case 0
getPt = Array(Int(Rnd() * EDGELEN), Int(Rnd() * EDGELEN), 0)
Case 1
getPt = Array(0, Int(Rnd() * EDGELEN), Int(Rnd() * EDGELEN))
Case 2
getPt = Array(Int(Rnd() * EDGELEN), 0, Int(Rnd() * EDGELEN))
Case 3
getPt = Array(Int(Rnd() * EDGELEN), Int(Rnd() * EDGELEN), EDGELEN)
Case 4
getPt = Array(Int(Rnd() * EDGELEN), EDGELEN, Int(Rnd() * EDGELEN))
Case 5
getPt = Array(EDGELEN, Int(Rnd() * EDGELEN), Int(Rnd()* EDGELEN))
Case Else
rhino.Print "else"
End Select
End Function
这里我们可以清楚的看到DO LOOP和SELECT CASE结构的用法,在DO LOOP里有条件句的使用方式。 |