import rhinoscriptsyntax as rs import Rhino.Geometry as rg import BLOCK_Library as blk import random as r objects = rs.ObjectsByLayer("Default") rs.DeleteObjects(objects) rs.EnableRedraw(False) canvas_size = 10 canvas_dim = [canvas_size, canvas_size, canvas_size] iterations = 100 max_size = 3 canvas = blk.Grid(canvas_dim) canvas.draw_boundary() for i in range(iterations): x = r.randint(0,canvas_size - max_size) y = r.randint(0,canvas_size - max_size) z = r.randint(0,canvas_size - max_size) point = rg.Point3d(x, y, z) l = r.randint(1,max_size) w = r.randint(1,max_size) h = r.randint(1,max_size) dim = [l, w, h] lego = blk.Block(point, dim) collision = canvas.check_collision(lego) if collision == False: canvas.add_block(lego) lego.draw() canvas.calculate_density() print "Positive space:", canvas.block_count print "Negative space:", canvas_size**3 - canvas.block_count print round((canvas.block_count*100)/(canvas_size**3)), "%"