################################### ### DM2_w24 #elana.li@student.tugraz.at ### ### hu_06 UN_headquaters NYC ### ###################################################### ### paneling / new dimensions ### 87.5 x 22.0 meters (was lenY = 116.56 / lenX = 28.18) ################################### ###################################################### ############################## import rhinoscriptsyntax as rs import random, time, sys ### sys.path.append("P:/") ### import DM_lib as dm ### reload( dm ) ############################## rs.UnitSystem(4) rs.ShowGrid(None, 0) rs.ShowGridAxes(None, 1) rs.ViewDisplayMode(rs.CurrentView(), "rendered") rs.Command("cplane w t enter", 0) dm.PointRadius(displayModeX=0, rad=3, styl=3) dm.printDisplay(1) rs.EnableRedraw(0) ###_________________________________________# ### basic settings for grid to fit UN_slab # ### # floors = H = dm.H = 40 # default=40 / incl roof slabs = L = dm.L = 11 # default=11 depth = D = dm.D = 4 # default= 4 / division in building_depth floorHeight = fH = dm.fH = 4.0 # default= 4.0 / 4.0*(H-1) = 156 meters # ################ # get from DM_lib as dm: UnoGridCoords = dm.UnoGridCoords # get gridCoords L*D*H = 1760 UnoPanelCoords = dm.UnoPanelCoords # get panelCoords [frontPanels, backPanels, sidePanels, upSidePanels] / default arguments s.u. ################____________________________# ################ lengthVec = lVec = rs.VectorUnitize(rs.VectorSubtract( dm.getUnoCoord(0, 0, 0), dm.getUnoCoord(1, 0, 0) )) ## rs.AddPoint( dm.getUnoCoord(1, 0, 0) ) depthVec = dVec = rs.VectorUnitize(rs.VectorSubtract( dm.getUnoCoord(0, 1, 0), dm.getUnoCoord(0, 0, 0) )) ## rs.AddPoint( dm.getUnoCoord(0, 1, 0) ) ################ ########################################################################################### UnoPanelCoords = dm.getUNpanelCoords(anzL=10*7, anzH=39, anzD=3, stepL=1, stepH=1, stepD=1) ### = all ~windows_panels BigPanelCoords = dm.getUNpanelCoords(anzL=10*1, anzH=39, anzD=3, stepL=2, stepH=6, stepD=2) ### = all ~windows_panels UnoPanelCoords = dm.getUNpanelCoords(anzL=10*1, anzH=39*2, anzD=3, stepL=2, stepH=3, stepD=2) ### = standard for hu_06 ########################################################################################### ########################################################## frontPanels = UnoPanelCoords[0] ### list of coordLists ! backPanels = UnoPanelCoords[1] sidePanels = UnoPanelCoords[2] upSidePanels = UnoPanelCoords[3] allPanels = UnoPanelCoords[4] ################################# dm.newEmptyLayer("UNO::setUp", [120,120,140]) ### Extruded Bulging Triangle Function def bulging_triangle(p0, p1, p2, p3): """Creates a bulging 3D extruded triangle on a panel.""" center = dm.pntInbetween(p1, p3) # Midpoint normal = dm.normVec3pnts(p0, p1, p2) # Panel normal direction bulge_height = random.uniform(1.5, 4.5) # Amount of bulge bulge_vector = rs.VectorScale(normal, bulge_height) peak = rs.VectorAdd(center, bulge_vector) # Move peak outward option = random.randint(0, 3) if option == 0: crv = rs.AddPolyline([p0, p1, peak, p0]) elif option == 1: crv = rs.AddPolyline([p1, p2, peak, p1]) elif option == 2: crv = rs.AddPolyline([p0, p3, peak, p0]) else: crv = rs.AddPolyline([p2, p3, peak, p2]) rs.ObjectColor(crv, [random.randint(80, 200)] * 3) return rs.ExtrudeCurve(crv, rs.AddLine(peak, rs.VectorAdd(peak, normal))) ### Panel Definition Function def myPanel(panel, basement=0): p0, p1, p2, p3 = panel # Get panel corner points base = rs.AddPolyline([p0, p1, p2, p3, p0]) rs.ObjectPrintWidth(base, 1.5) rs.ObjectColor(base, [0, 0, 0]) if basement != 0: for i in range(2): bulging_triangle(p0, p1, p2, p3) else: for i in range(3): # Add multiple bulging extrusions per panel bulging_triangle(p0, p1, p2, p3) ### Apply Function to Panels for i, panel in enumerate(frontPanels + sidePanels): basementVal = 0 if i < 20 or (i >= 130 and i < 136): basementVal = 1 if i % 10 == 0: rs.Redraw() myPanel(panel, basement=basementVal) ################################# #rs.ZoomExtents() rs.EnableRedraw(1) ### 4 the MACs dm.printDisplay(1) dm.newEmptyLayer("Default")