import rhinoscriptsyntax as rs import Rhino.Geometry as rg import BLOCK_Library as blk import random as r import scriptcontext r.seed("magic spice which will fix the randomness") objects = rs.ObjectsByLayer("Default") rs.DeleteObjects(objects) rs.EnableRedraw(False) canvas_size = 30 canvas_dim = [canvas_size, canvas_size, canvas_size] min_size = 5 max_size = 10 legos = [] canvas = blk.Grid(canvas_dim) canvas.draw_boundary() step_size = 2 for k in range(0,canvas_size -1,step_size): for j in range(0,canvas_size -1,step_size): for i in range(0,canvas_size -1,step_size): if k%4 == 0 and j%4 == 0: x, y, z = i, j, k point = rg.Point3d(x, y, z) l, w, h = 2, 2, 2 dim = [l, w, h] lego = blk.Block(point, dim) canvas.add_block(lego) legos.append(lego) lego.draw() density = canvas.calculate_density() print "Number of blocks:", len(legos) print "Positive space:", canvas.block_count print "Negative space:", canvas_size**3 - canvas.block_count print round((canvas.block_count*100)/(canvas_size**3)), "%" #canvas.fill_grid() #canvas.extract_surface_cells() #canvas.extract_edge_cells() #canvas.extract_corner_cells() #canvas.extract_inside_cells()