#DM_02 #WiSem_24_25 #HUE_04 #Legenstein_Klaus import rhinoscriptsyntax as rs import random, time, sys, math sys.path.append("P:/WWW/soenkele/dm2/lib") import DM_lib as dm rs.UnitSystem(3) rs.ShowGrid(view=None, show=0) rs.ShowGridAxes(view=None, show=0) rs.ViewDisplayMode(view=None, mode="Wireframe") rs.EnableRedraw(0) rs.DeleteObjects(rs.AllObjects()) dm.PointRadius(displayModeX=0, rad=4, styl=1) dm.printDisplay(state=1, scale=1, thickness=1, color='Display') rad = 15 length = rad+1 edge = rad mov = rad mov1 = [mov,mov,0] mov2 = [mov,mov,0] mov3 = [mov,mov,0] mov4 = [mov,mov,0] #cube A ori1A = [-rad,0,0] ori2A = [0,0,0] ori3A = [-rad,-rad,0] ori4A = [0,-rad,0] originsA = [ori1A, ori2A, ori3A, ori4A] cubeCoords = [] allCubescoords = [] if 1: for zVal in [0, -rad]: for ori in range( 4 ): cubeCoords = [] for i in range(length): for j in range(length): for k in range(length): cor = rs.CreatePoint(i, j, k) #points = rs.AddPoint(pnt) cor = rs.VectorAdd( cor, originsA[ori] ) cor = rs.VectorAdd( cor, [0,0,zVal] ) if rs.Distance( [0,0,0],cor ) > rad*(2**0.5): cubeCoords.append( cor ) allCubescoords.append(cubeCoords) print len(allCubescoords) allNumbers = range(8) random.shuffle(allNumbers) for i in range(6): R=random.randint(0,255) G=random.randint(0,255) B=random.randint(0,255) pnts = rs.AddPoints( allCubescoords[allNumbers[i]] ) rs.ObjectColor(pnts, [R,G,B] ) for j in range(1001): p0 = random.choice(allCubescoords[allNumbers[i]]) p1 = random.choice(allCubescoords[allNumbers[i]]) if rs.Distance(p0,p1)<3: crv = rs.AddCurve( [p0, p1] ) rs.ObjectColor(crv, [R,G,B] ) rs.ObjectPrintWidth( crv, .5) #cube B ori1B = rs.VectorAdd(ori1A, mov1) ori2B = rs.VectorAdd(ori2A, mov2) ori3B = rs.VectorAdd(ori3A, mov3) ori4B = rs.VectorAdd(ori4A, mov4) originsB = [ori1B, ori2B, ori3B, ori4B] cubeCoords = [] allCubescoords = [] if 1: for zVal in [rad, 0]: for ori in range( 4 ): cubeCoords = [] for i in range(length): for j in range(length): for k in range(length): cor = rs.CreatePoint(i, j, k) #points = rs.AddPoint(pnt) cor = rs.VectorAdd( cor, originsB[ori] ) cor = rs.VectorAdd( cor, [0,0,zVal] ) if rs.Distance( [mov,mov,mov],cor ) > rad*(2**0.5): cubeCoords.append( cor ) allCubescoords.append(cubeCoords) print len(allCubescoords) allNumbers = range(8) random.shuffle(allNumbers) for i in range(6): R=random.randint(0,255) G=random.randint(0,255) B=random.randint(0,255) pnts = rs.AddPoints( allCubescoords[allNumbers[i]] ) rs.ObjectColor(pnts, [R,G,B] ) for j in range(1001): p0 = random.choice(allCubescoords[allNumbers[i]]) p1 = random.choice(allCubescoords[allNumbers[i]]) if rs.Distance(p0,p1)<3: crv = rs.AddCurve( [p0, p1] ) rs.ObjectColor(crv, [R,G,B] ) rs.ObjectPrintWidth( crv, .5) #cube C ori1C = rs.VectorAdd(ori1B, mov1) ori2C = rs.VectorAdd(ori2B, mov2) ori3C = rs.VectorAdd(ori3B, mov3) ori4C = rs.VectorAdd(ori4B, mov4) originsC = [ori1C, ori2C, ori3C, ori4C] cubeCoords = [] allCubescoords = [] if 1: for zVal in [rad +rad , rad]: for ori in range( 4 ): cubeCoords = [] for i in range(length): for j in range(length): for k in range(length): cor = rs.CreatePoint(i, j, k) #points = rs.AddPoint(pnt) cor = rs.VectorAdd( cor, originsC[ori] ) cor = rs.VectorAdd( cor, [0,0,zVal] ) if rs.Distance( [mov+mov,mov+mov,mov+mov],cor ) > rad*(2**0.5): cubeCoords.append( cor ) allCubescoords.append(cubeCoords) print len(allCubescoords) allNumbers = range(8) random.shuffle(allNumbers) for i in range(6): R=random.randint(0,255) G=random.randint(0,255) B=random.randint(0,255) pnts = rs.AddPoints( allCubescoords[allNumbers[i]] ) rs.ObjectColor(pnts, [R,G,B] ) for j in range(1001): p0 = random.choice(allCubescoords[allNumbers[i]]) p1 = random.choice(allCubescoords[allNumbers[i]]) if rs.Distance(p0,p1)<3: crv = rs.AddCurve( [p0, p1] ) rs.ObjectColor(crv, [R,G,B] ) rs.ObjectPrintWidth( crv, .5)