#Vorbereitung (immer gleich) import rhinoscriptsyntax as rs allobjs = rs.AllObjects() rs.DeleteObjects(allobjs) #random import random as ran #Variablen bsize = 10 #Seitenlaenge der Box #statt immer eine 10 zu schreiben eine Variable nehmen #fuer Flexibilitaet, wenn man etwas aendern moechte dist = 1 #Distanz zwischen den Boxen offs = bsize + dist #Verschiebung der Boxen #offs schafft einen Abstand zwischen den Boxen in der Hoehe von dist num = 10 #Boxenanzahl in einer Reihe #basic Box schaffen 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)] """ #lange Variante - nur fuers Verstaendnis box_1 = rs.AddBox(corners) box_2 = rs.AddBox(corners) rs.MoveObjects(box_2,(0,0,bsize)) box_3 = rs.AddBox(corners) rs.MoveObjects(box_3,(0,0,2*bsize)) box_4 = rs.AddBox(corners) rs.MoveObjects(box_4,(0,0,3*bsize)) box_5 = rs.AddBox(corners) rs.MoveObjects(box_5,(0,0,4*bsize)) #bessere Variante - in loops #Linie for i in range(num): box = rs.AddBox(corners) rs.MoveObjects(box, (i*offs,0,0)) #Feld for i in range(num): for j in range(num): box = rs.AddBox(corners) rs.MoveObjects(box, (i*offs,j*offs,0)) rs.EnableRedraw(False) #um auszuschalten, dass der Wuerfel live gezeichnet wird #Wuerfel for i in range(num): for j in range(num): for k in range(num): box = rs.AddBox(corners) rs.MoveObjects(box, (i*offs,j*offs,k*offs)) rs.EnableRedraw(True) #um live zeichnen wieder einzuschalten #Muster auf 2D #regelmaessig #basic Mathematik for i in range(num): for j in range(num): if not ((2 < i <= 6) and (1 < j < 4)): box = rs.AddBox(corners) rs.MoveObjects(box, (i*offs,j*offs,0)) #% # immer wenn ein Rest ensteht, generiert man eine Box # immer wenn kein Rest entsteht, generiert man keine Box --> 0 gilt als falsch for i in range(num): for j in range(num): if ((i+j)%3) or ((i-j)%3): box = rs.AddBox(corners) rs.MoveObjects(box, (i*offs,j*offs,0)) #random for i in range(num): for j in range(num): myran = ran.randint(0,9) if not (myran >= 7): box = rs.AddBox(corners) rs.MoveObjects(box, (i*offs,j*offs,0)) #random und regelmaessig for i in range(num): for j in range(num): myran = ran.randint(0,9) if not (myran >= 9): if ((i+j)%3) and ((i-j)%3): box = rs.AddBox(corners) rs.MoveObjects(box, (i*offs,j*offs,0)) #Muster auf 3D for i in range(num): for j in range(num): for p in range(num): myran = ran.randint(0,9) if (myran >=1): if ((i+j+p)%3) and ((i+j-p)%3) and ((i-j+p)%3) and ((i-j-p)%3): box = rs.AddBox(corners) rs.MoveObject(box, (i*offs,j*offs,p*offs)) else: box = rs.AddBox(corners) rs.MoveObject(box, (i*offs,j*offs,p*offs)) rs.ObjectColor(box,(255,0,0)) #else bedeutet, dass passiert mit den Bloecken die bei if nicht dazugehoeren #Farben einzeln anschauen #Farbblock regelmaessig for i in range(num): for j in range(num): for p in range(num): box = rs.AddBox(corners) rs.MoveObject(box, (i*offs,j*offs,p*offs)) rs.ObjectColor(box,(i*(255/num),j*(255/num),p*(255/num))) #Farbblock random Bloecke for i in range(num): for j in range(num): for p in range(num): myran = ran.randint(0,9) if (myran >=3): if ((i+j)%2): box = rs.AddBox(corners) rs.MoveObject(box, (i*offs,j*offs,p*offs)) rs.ObjectColor(box,(i*(255/num),j*(255/num),p*(255/num))) """ #Methode 2 zum generieren - Listen fibonacci = [0] a, b = 0,1 while b < (num**4): fibonacci.append(b) a, b = b, a+b print fibonacci rs.EnableRedraw(False) for i in range(num): for j in range(num): for p in range(num): if not ((i+j+p)in fibonacci): box = rs.AddBox(corners) rs.MoveObject(box, (i*offs,j*offs,p*offs)) rs.ObjectColor(box,(i*(255/num),j*(255/num),p*(255/num)))