import rhinoscriptsyntax as rs import Rhino.Geometry as rg import random import BLOCK_Library as block rs.EnableRedraw(False) objects = rs.ObjectsByLayer("Default") rs.DeleteObjects(objects) canvas_size = 20 canvas = block.Grid([canvas_size,canvas_size,canvas_size]) canvas.draw_boundary() iterations = 10000 block_domain = 3 collision_counter = 0 blocks = [] for i in range(iterations): point = rg.Point3d(random.randint(0,canvas_size-block_domain),random.randint(0,canvas_size-block_domain),random.randint(0,canvas_size-block_domain)) dim = [random.randint(1,block_domain),random.randint(1,block_domain),random.randint(1,block_domain)] lego = block.Block(point, dim) if canvas.check_collision(lego): collision_counter += 1 else: canvas.add_block(lego) blocks.append(lego) lego.draw() canvas.calculate_density() print "Number of blocks:", len(blocks) print "Number of collisions:", collision_counter print "Block density:", canvas.block_count/canvas.total_space