这个案例练习会涉及物件着色、条件判定、循环语句和函数定义等内容。
#coding:utf-8
import rhinoscriptsyntax as rs
import random as rnd
def ptMtx(XMAX,YMAX,ZMAX):
ptDict={}
ptList=[]
for i in range(XMAX):
for j in range(YMAX):
for k in range(ZMAX):
x=i*5+rnd.random()*2
y=j*5+rnd.random()*2
z=k*5+rnd.random()*2
ptDict[(i,j,k)]=(x,y,z)
ptList.append((x,y,z))
# rs.AddPoint(x,y,z)
def randRadius():
radius=rnd.random()*5
if radius<0.75:
radius=0.75
elif radius>4:
radius=4
else:
radius=radius
return radius
for i in range (XMAX):
for j in range(YMAX):
for k in range(ZMAX):
# rs.AddTextDot((i,j,k),ptDict[(i,j,k)])
sphere=rs.AddSphere(ptDict[(i,j,k)],randRadius())
rs.ObjectColor(sphere,(255/XMAX*i,255/YMAX*j,255/ZMAX*k))
#RGB color Black:(0,0,0), White(255,255,255)
# for i in range(len(ptList)):
# rs.AddTextDot(i,ptList[i])
def main():
xmax=rs.GetInteger("input number in x direction",10)
ymax=rs.GetInteger("input number in y direction",10)
zmax=rs.GetInteger("input number in z direction",10)
#添加下面一行代码,可使得在Rhino的运行速度变开,但不改变运行结果。
rs.EnableRedraw(False)
ptMtx(xmax,ymax,zmax)
main()