################################### ### DM2_w24 # tanja.konrad@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:/") ### sys.path.append("C:/DM2/") import DM_lib as dm ### reload( dm ) ############################## rs.UnitSystem(4) # km = 5, meters = 4, cm = 3 etc rs.ShowGrid(None, 0) # grid > 0 = off rs.ShowGridAxes(None, 1) # y/y/z axen display > 0/1 = off/on #rs.ViewDisplayMode(rs.CurrentView(), "wireframe") rs.ViewDisplayMode(rs.CurrentView(), "rendered") rs.Command("cplane w t enter", 0) # cPlane World Top dm.PointRadius(displayModeX=0, rad=3, styl=3) dm.printDisplay(1) # nomen est omen 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, anzD=3, stepL=1, stepH=3, stepD=1) ### = standard for hu_06 ########################################################################################### ########################################################## frontPanels = UnoPanelCoords[0] ### list of coordLists ! backPanels = UnoPanelCoords[1] sidePanels = UnoPanelCoords[2] upSidePanels = UnoPanelCoords[3] allPanels = UnoPanelCoords[4] ################################# dm.newEmptyLayer("HUE 6B", [120,120,140]) import math import random import rhinoscriptsyntax as rs 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) def myPanelAbstract(dach, panel, basement=0): p0, p1, p2, p3 = panel nVec = dm.normVec3pnts(p0, p1, p2) if basement: center = dm.pntInbetween(p0, p2, 0.5) num_cones = random.randint(1, 7) for _ in range(num_cones): u = random.uniform(0.2, 0.8) v = random.uniform(0.2, 0.8) local_point = rs.VectorAdd( rs.VectorAdd(rs.VectorScale(lengthVec, u), rs.VectorScale(depthVec, v)), center, ) radius = random.uniform(2.0, 4.0) height = random.uniform(5.0, 10.0) tip_point = rs.VectorAdd(local_point, rs.VectorScale(nVec, height)) base_circle = rs.AddCircle(rs.PlaneFromNormal(local_point, nVec), radius) base_points = rs.DivideCurve(base_circle, 36, create_points=True) for point in base_points: line = rs.AddLine(point, tip_point) rs.ObjectPrintWidth(line, 1.0) rs.ObjectColor(line, [200, 50, 50]) rs.DeleteObject(base_circle) else: base = rs.AddCurve([p0, p1, p2, p3, p0], 1) rs.ObjectColor(base, [0, 0, 0]) fragments = [] for _ in range(random.randint(5, 10)): pt_a = dm.pntInbetween(p0, p3, random.random()) pt_b = dm.pntInbetween(p1, p2, random.random()) fragments.append(rs.AddCurve([pt_a, pt_b], degree=1)) for frag in fragments: offsetVec = rs.VectorScale(nVec, random.uniform(0.5, 2.5)) fragmented_coords = rs.DivideCurve(frag, random.randint(5, 15), create_points=True) for point in fragmented_coords: point_offset = rs.VectorAdd(point, offsetVec) rs.AddLine(point, point_offset) rs.AddPoint(point_offset) for i, panel in enumerate(frontPanels[:]+sidePanels): basementVal = 0 dach = 2 if i < 20 or (i >= 130 and i < 136) or (i >= 100 and i < 110) or (i >= 160 and i < 163): basementVal = 1 dach = 0 elif (i >= 136 and i < 160) or (i >= 165 and i < 169): dach = 1 myPanelAbstract(dach, panel, basement=basementVal) ################################# #rs.ZoomExtents() rs.EnableRedraw(1) ### 4 the MACs dm.printDisplay(1) dm.newEmptyLayer("Default")