代码:
'版权所有(C)2009 <清华大学建筑学院人居环境模拟实验室>
'本程序为自由软件;您可依据自由软件基金会所发表的GNU 通用公共授权条款,对本程
'序再次发布和/或修改;无论您依据的是本授权的第三版,或(您可选的)任一日后发
'行的版本。
'本程序是基于使用目的而加以发布,然而不负任何担保责任;亦无对适售性或特定目的
'适用性所为的默示性担保。详情请参照GNU 通用公共授权。
'您应已收到附随于本程序的GNU 通用公共授权的副本;如果没有,请参照
' <http://www.gnu.org/licenses/>.
'基于 GPL 的软件允许商业化销售,但不允许封闭源代码。在一个软件产品中使用("使用"
'指类库引用,修改后的代码或者衍生代码)此源代码,则该软件产品必须继承 GPL 协议,
'不允许封闭源代码。
'Do man want thick road.(做人要厚道)
Option Explicit
'Script written by <王韶宁>
'Script copyrighted by <清华大学建筑学院人居环境模拟实验室>
'Script version 2009年3月6日 21:51:55
Call Main()
Sub Main()
'定义一个圆形所需要的plane
Dim arrPlane
arrPlane = Rhino.WorldXYPlane
'全部小球,少于100个,其中 0-小球是否存在,物体的objextIDstr 1--小球位置x 2--小球位置y 3--小球速度 4--小球运动方向x 5--小球运动方向y
Dim pinBall(100,7)
'是否暂停
Dim isRunning
isRunning = True
'初始化随机数
Randomize
'在循环里面制造的小球的序号
Dim currentCreatedPinBallNumber
currentCreatedPinBallNumber =0
'循环
Do While isRunning
'如果没有到达创造小球数量的极限,则创造小球
If currentCreatedPinBallNumber <= 9 Then
'创造一个小球
'小球初始x位置
pinBall(currentCreatedPinBallNumber,1) = 0
'小球初始y位置
pinBall(currentCreatedPinBallNumber,2) = 0
'小球初始x方向
pinBall(currentCreatedPinBallNumber,3) = Rnd *5
'小球初始y方向
pinBall(currentCreatedPinBallNumber,4) = Rnd *5
'创造一个图面上的圆
pinBall(currentCreatedPinBallNumber,0) = Rhino.AddCircle( arrPlane, 5.0)
pinBall(currentCreatedPinBallNumber,5) = "yes"
currentCreatedPinBallNumber = currentCreatedPinBallNumber + 1
Rhino.Print "currentCreatedPinBallNumber = "
Rhino.Print currentCreatedPinBallNumber
End If
'移动每一个小球
dim i
For i=0 To 99
Rhino.Print i
'Rhino.Print pinBall(i,0)
If Len( pinBall(i,5) )>1 Then
'现在的位置加上新的位置
'新的位置x
dim xNewPosition
xNewPosition = pinBall(i,1) + pinBall(i,3)
'新的位置y
dim yNewPosition
yNewPosition = pinBall(i,2) + pinBall(i,4)
'改变真实的圆的位置
dim arrStart, arrEnd
arrStart = array(pinBall(i,1),pinBall(i,2),0)
arrEnd = array(xNewPosition,yNewPosition,0)
Rhino.MoveObject pinBall(i,0), arrStart, arrEnd
'改变小球的x,y位置
pinBall(i,1) = xNewPosition
pinBall(i,2) = yNewPosition
Rhino.Print "test "
End If
'Rhino.Print "test 1"
Next
'Rhino.Print "test loop"
Loop
End Sub