import rhinoscriptsyntax as rs import random as ran # Delete all existing objects allobjs = rs.AllObjects() rs.DeleteObjects(allobjs) # Parameters bsize_min = 5 # Minimum side length of cube bsize_max = 15 # Maximum side length of cube dist = 2 # Distance between cubes num = 10 # Number of cubes per axis (3D grid) # Pastel color palette (soft tones) color_palette = [(255, 182, 193), (176, 224, 230), (255, 228, 196), (221, 160, 221), (240, 230, 140), (152, 251, 152)] # Light pink, powder blue, peach, lavender, pale yellow, pastel green rs.EnableRedraw(False) # Function to create a perfect volumetric cube def create_cube(base_size): return [(0, 0, 0), (base_size, 0, 0), (base_size, base_size, 0), (0, base_size, 0), (0, 0, base_size), (base_size, 0, base_size), (base_size, base_size, base_size), (0, base_size, base_size)] # Create a 3D grid of cubes for i in range(num): for j in range(num): for k in range(num): # Random size for each cube (ensuring perfect cubes) bsize = ran.uniform(bsize_min, bsize_max) offs = bsize + dist # Update offset based on size # Create a cube with random size corners = create_cube(bsize) # Generate the cube in 3D space my_cube = rs.AddBox(corners) rs.MoveObject(my_cube, (i * offs, j * offs, k * offs)) # Assign random pastel color from the palette color = ran.choice(color_palette) rs.ObjectColor(my_cube, color) rs.EnableRedraw(True)