July 6, 2008
neilarchi
在天空部落發表於20:27:18 |
RhinoScript
An short introduction to RhinoScript
在瞭解RhinoScript的基本語法之後,我們這次要說明的是VB中的「迴圈」(Loops)種類與概念。VB的迴圈基本上可以分為三種:(1) For...Next (計數迴圈)、(2) Do...Loop (條件式迴圈)、(3) For Each...In...Next (陣列迴圈)。三種迴圈的特色與用法各有不同,端看在何種需要來選擇。舉例來說,計數迴圈顧名思義就是指當我們已經知道某一個數量時所使用;而條件式迴圈則是迴圈本身具有條件的設定功能,透過條件的符合與不符合判斷可以決定進入迴圈或者離開迴圈;陣列迴圈則是將在一個「陣列」(array)中的物件一一取出來執行某些命令動作。將上述的迴圈種類與表達方式整理如下:
(1) 計數迴圈
For...Next
(2) 條件式迴圈
Do While...Loop (前側式)
Do Until...Loop (前側式)
Do...Loop While (後測式)
Do...Loop Until (後測式)
Do...Loop (無窮)
While...Wend (如果為真)
(3) 陣列迴圈
For Each...In...Next
接下來,我們就一一說明上述的迴圈運用方式以及提供簡易的範例。先從計數迴圈說起,如果我們執行下列程式,我們可以在Rhino工作介面的Command列看到Rhino當我們印出"1"。
Dim A: A=1
Call Rhino.Print(A)
以此類堆,如果我們要依序印出"1 2 3 4 5 6 7 8",當然可以很辛苦地這麼寫:
Dim A: A=1
Dim B: B=2
Dim C: C=3
Dim D: D=4
Dim E: E=5
Dim F: F=6
Dim G: G=7
Dim H: H=8
Call Rhino.Print(A)
Call Rhino.Print(B)
Call Rhino.Print(C)
Call Rhino.Print(D)
Call Rhino.Print(E)
Call Rhino.Print(F)
Call Rhino.Print(G)
Call Rhino.Print(H)
但是電腦如果真的只能這麼笨地一個口令一個動作,那我會請各位現在就放棄吧!這時候如果我們運用計數迴圈,為得到同樣的結果,可以改成這麼寫:
Dim i
For i = 1 To 8
Call Rhino.Print(i)
Next
這就是所謂的計數迴圈,當我們已知某個數量(從1到8),就可以利用計數迴圈重複執行某個動作,而在此所定義的 "i" 是個變數,每次重新進入迴圈時,"i" 值會被替換為下一個數字。
因此,如果我們很快地將計數迴圈結合RhinoScript Methods,試著執行下列的指令看看:
Dim StratPoint, EndPoint
Dim i
For i = 0 To 10
StartPoint = Array ( i*10, 0, 0)
EndPoint = Array ( i*10, 10, 0)
Call Rhino.AddLine(StartPoint, EndPoint)
Next
我們可以很快地得到11條線,每條線的長度都是10,間距也都是10,第一條線的起點為(0,0,0)終點為(0,10,0),每個下一條線則是間距上一條線10的單位的平行線。如果善加利用計數迴圈與函數規則,就可以做出許多複雜的形體,不僅可省下許多力氣,也可能會產生出一些出乎意料的形體。這次只是簡單地介紹了計數迴圈的最基本用法,之後我們分別會再說明其他種類迴圈的基本用法,並且提供一些比較複雜的迴圈組合運用方式。



