import rhinoscriptsyntax as rs import Rhino.Geometry as rg import BLOCK_Library as blk import random as r import scriptcontext def rule_a(lego): dim = [lego.h, lego.w, lego.l] lego_new = blk.Block(lego.corner_2, dim) canvas.add_block(lego_new) legos.append(lego_new) lego_new.draw() return lego_new def rule_b(lego): dim = [lego.h, lego.w, lego.l] lego_new = blk.Block(lego.corner_3, dim) canvas.add_block(lego_new) legos.append(lego_new) lego_new.draw() return lego_new def rule_c(lego): dim = [lego.l, lego.w, lego.h] lego_new = blk.Block(lego.corner_7, dim) canvas.add_block(lego_new) legos.append(lego_new) lego_new.draw() return lego_new r.seed("magic spice which will fix the randomness") objects = rs.ObjectsByLayer("Default") rs.DeleteObjects(objects) rs.EnableRedraw(False) canvas_size = 200 canvas_dim = [canvas_size, canvas_size, canvas_size] min_size = 5 max_size = 10 legos = [] canvas = blk.Grid(canvas_dim) canvas.draw_boundary() x, y, z = 0, 0, 0 l, w, h = 10, 3, 3 point = rg.Point3d(x, y, z) dim = [l, w, h] lego = blk.Block(point, dim) canvas.add_block(lego) legos.append(lego) lego.draw() for n in range(10): lego = rule_c(lego) lego = rule_b(lego) lego = rule_a(lego)