import rhinoscriptsyntax as rs import random as ran #deleting and starting from scratch allobjs = rs.AllObjects() rs.DeleteObjects(allobjs) bsize = 10 #side length of box dist = 1 #distance between boxes offs = bsize+dist #offset of boxes num = 10 #parameters of the box corners = [(0,0,0), (bsize,0,0), (bsize,bsize,0), (0,bsize,0), (0,0,bsize), (bsize,0,bsize), (bsize,bsize,bsize), (0,bsize,bsize)] #gotta be fast rs.EnableRedraw(False) #creating the box and the pattern for k in range(num): for i in range(num): for j in range(num): #myran = ran.randint(1,10) if not((i+j+k)%5): box = rs.AddBox(corners) rs.MoveObject(box, (j*offs,i*offs,k*offs)) #rs.ObjectColor(box, (j*(255/num),i*(255/num),k*(255/num))) #assigning glass material glass = rs.AddMaterialToObject(box) rs.MaterialColor(glass, (0,0,255)) rs.MaterialTransparency(glass, 0.8) rs.MaterialShine(glass, 100) rs.MaterialReflectiveColor(glass, (200, 200, 255)) rs.ObjectMaterialIndex(box, glass) #make outlines bbox = rs.BoundingBox(box) outline = [] for o in range(4): outline.append(rs.AddLine(bbox[o], bbox[(o+1)%4])) outline.append(rs.AddLine(bbox[o+4], bbox[(o+1)%4+4])) outline.append(rs.AddLine(bbox[o], bbox[o+4])) for line in outline: rs.ObjectColor(line, (255,255,0)) #rotating one quarter of the creation rs.RotateObjects(rs.AllObjects(), (offs*num,offs*num,0), 90, None, True) #mirroring the rest rs.MirrorObjects(rs.AllObjects(), (offs*num,offs*num,0), (0,offs*num,0), True)