#################################### ### DM2_w24 # Patrycja Werstak ### ### hu_07 Anne Frank Buecherregal### ### paneling / new dimensions ### #################################### ######################################### import rhinoscriptsyntax as rs ### import random, time, sys ### sys.path.append("P:\WWW\arch2506\DM2\HUE 07\Aufgabe B")### import DM_lib as dm ### reload(dm) ### ######################################### import random rs.ZoomExtents() def randVec(a=-1.0, b=1.0): x = random.uniform(a, b) y = random.uniform(a, b) z = random.uniform(a, b) return [x, y, z] def newEmptyLayer(layer_name, color=(105, 105, 105), parent_layer=None, transparency=0.0): # Layer mit oder ohne Eltern definieren if parent_layer: full_layer_name = parent_layer + "::" + layer_name else: full_layer_name = layer_name # Layer erstellen, falls er nicht existiert if not rs.IsLayer(full_layer_name): rs.AddLayer(full_layer_name, color) # Layer sichtbar machen und loeschen rs.LayerVisible(full_layer_name, True) objects_on_layer = rs.ObjectsByLayer(full_layer_name) if objects_on_layer: rs.DeleteObjects(objects_on_layer) # Farbe und Transparenz setzen rs.LayerColor(full_layer_name, color) if transparency > 0.0: rs.LayerTransparency(full_layer_name, int(transparency * 100)) # Aktiviere den neuen Layer rs.CurrentLayer(full_layer_name) return full_layer_name def create_bookshelf(length=2000, width=800, height=1700, shelf_count=5): """ Erstellt ein Buecherregal mit den angegebenen Massen. :param length: Laenge des Regals (in mm) :param width: Breite des Regals (in mm) :param height: Hoehe des Regals (in mm) :param shelf_count: Anzahl der Regalboeden """ # Setup Layer newEmptyLayer("Bookshelf", [150, 75, 0]) # Regalrahmen corners = [ [0, 0, 0], [length, 0, 0], [length, width, 0], [0, width, 0], # Unterseite [0, 0, height], [length, 0, height], [length, width, height], [0, width, height] # Oberseite ] frame = rs.AddBox(corners) rs.ObjectColor(frame, [150, 75, 0]) # Braune Farbe # Regalboeden shelf_height = height / (shelf_count + 1) shelves = [] for i in range(1, shelf_count + 1): shelf_corners = [ [0, 0, i * shelf_height], [length, 0, i * shelf_height], [length, width, i * shelf_height], [0, width, i * shelf_height], [0, 0, i * shelf_height + 20], # Dicke der Regalboeden: 20 mm [length, 0, i * shelf_height + 20], [length, width, i * shelf_height + 20], [0, width, i * shelf_height + 20] ] shelf = rs.AddBox(shelf_corners) shelves.append(shelf) rs.ObjectColor(shelf, [160, 80, 40]) # Etwas hellere Farbe fuer Boeden def open_bookshelf(frame_id, rotation_angle=90): """ oeffnet das Buecherregal durch Rotation. :param frame_id: ID des Regalrahmens :param rotation_angle: Rotationswinkel (in Grad) """ # Drehpunkt definieren (z. B. linke Ecke unten) pivot_point = [0, 0, 0] rs.RotateObject(frame_id, pivot_point, rotation_angle) # Beispielausfuehrung