################################### ### DM2_w24 # AGruber@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:\WWW\halil2003\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("UNO::setUp", [120,120,240]) print "***\n*** check RHINO 8 SAMMEL-BESTELLUNG / via FakArch / @ https://workdrive.zohopublic.eu/writer/open/8243091847f125bad45ba9abb31e1e1733f3e\n***\n" if 1: ### SETUP >> dont' exec @ homework ! rs.ObjectColor(rs.AddCurve( [dm.getUnoCoord(0,0,0), dm.getUnoCoord(0,0,39), dm.getUnoCoord(10,0,39), dm.getUnoCoord(10,0,0), dm.getUnoCoord(10,3,0), dm.getUnoCoord(0,3,0), dm.getUnoCoord(0,3,39), dm.getUnoCoord(10,3,39)], 1), [100,0,200]) rs.ObjectColor(rs.AddLine( dm.getUnoCoord(0, 0, 0), dm.getUnoCoord(0, 1, 0) ), [222, 0, 0] ) rs.ObjectColor(rs.AddLine( dm.getUnoCoord(0, 0, 0), dm.getUnoCoord(1, 0, 0) ), [0, 222, 0] ) rs.ObjectColor(rs.AddLine( dm.getUnoCoord(0, 0, 0), dm.getUnoCoord(0, 0, 2) ), [0, 0, 222] ) rs.ObjectPrintWidth( rs.AllObjects()[0:4], 1.0 ) #rs.ZoomExtents() #for coords in BigPanelCoords[4]: rs.AddCurve( coords, 1 ) if 0: ### DEMO >> dont' exec @ homework ! print "len(frontPanels) =", len(frontPanels) dm.textDots( frontPanels[0] ) for coords in frontPanels[0:20]+sidePanels[6:]: pass rs.AddPoints( coords ) rs.AddCurve( coords, 1 ) #rs.AddSrfPt( coords ) #for coords in sidePanels[0:]: # rs.AddPoints( coords ) for coords in BigPanelCoords[1][5:]: pass coords[-1]=coords[random.randint(0,3)] rs.ObjectColor( rs.AddCurve( coords, degree=random.randint(1,3) ), [0,100,0]) rs.Redraw() if 0: ### DEMO >> dont' exec @ homework ! #############: ### panel_DEF: def myPanel( panel, basement = 0 ): p0, p1, p2, p3 = panel ### get items (==coords) from list rs.AddLine( p0, p2 ) if basement: crv = rs.AddCurve( [p0, p1, dm.pntInbetween(p1, p3), p2, p3], 1 ) rs.ObjectPrintWidth( crv, 10.5 ) rs.ObjectColor( crv, [200,220,0]) else: rs.AddCurve( panel ) for i,panel in enumerate(frontPanels[:]+sidePanels): pass basementVal = 0 if i<20 or (i>=130 and i<136): basementVal = 1 rs.Redraw() myPanel( panel, basement=basementVal ) ### or: basement=(i<20 or i>=130 and i<136) #_____________________________here you go: dm.newEmptyLayer("myPROJ", [00,10,200]) def newPanel( panel, anzPts = 32, basement = 0 ): p0,p1,p2,p3 = panel #rs.AddLine( p0, p2 ) coordsHinten = panel coordsHinten.append( coordsHinten[0] ) crvHinten = rs.AddCurve( coordsHinten, 1 ) coordsCrvHinten = rs.DivideCurve( crvHinten, anzPts, 0) nVec = dm.normVec3pnts(p0, p1,p2) centerPanel = dm.pntInbetween(p0, p2, 0.5) #rs.AddPoint( centerPanel ) pVorne = rs.VectorAdd(centerPanel, nVec) #rs.AddPoint( pVorne ) zVal = p0[2] scalFac = dm.reMap( zVal, 0, 144, 23.5, 1.0) ### reMap(i, iMin, iMax, oMin, oMax) colorVal = int( dm.reMap( zVal, 0, 144, 0, 250) ) ### reMap(i, iMin, iMax, oMin, oMax) vecNachVorne = rs.VectorScale( nVec, scalFac) coordsVorne = [ rs.VectorAdd(cor, vecNachVorne) for cor in panel ] coordsVorne.append( coordsVorne[0] ) coordsVorne.remove( coordsVorne[random.randint(1,2)] ) crvVorne = rs.AddCurve( coordsVorne, 2 ) coordsCrvVorne = rs.DivideCurve( crvVorne, anzPts, 0) if basement != 0: for i in range(anzPts): pH = coordsCrvHinten[i] pV = coordsCrvVorne[i] lin = rs.AddLine( pH, pV ) rs.ObjectColor(lin, [colorVal, 100,255-colorVal] ) print "colo", zVal, ">>", colorVal, "sF", scalFac def draw_lines(bottom_left, bottom_right, top_left, top_right, color, num_lines): bottom_pts = [bottom_left, bottom_right] bottom_curve = rs.AddCurve(bottom_pts) bottom_pts = rs.DivideCurve(bottom_curve, num_lines) rs.DeleteObject(bottom_curve) top_pts = [top_left, top_right] top_curve = rs.AddCurve(top_pts) top_pts = rs.DivideCurve(top_curve, num_lines) rs.DeleteObject(top_curve) for i in range(num_lines): line = rs.AddLine(bottom_pts[i], top_pts[i]) rs.ObjectColor(line, color) def make_rectangle_1(bottom_left, bottom_right, top_left, top_right, depth): bottom_left_pair = rs.VectorAdd(bottom_left, depth) bottom_right_pair = rs.VectorAdd(bottom_right, depth) top_left_pair = rs.VectorAdd(top_left, depth) top_right_pair = rs.VectorAdd(top_right, depth) # rs.AddLine(bottom_left, bottom_left_pair) # rs.AddLine(bottom_right, bottom_right_pair) # rs.AddLine(top_left, top_left_pair) # rs.AddLine(top_right, top_right_pair) draw_lines(bottom_left_pair, bottom_right_pair, top_left_pair, top_right_pair, [85, 85, 85], 60) draw_lines(top_left_pair, top_right_pair, top_left, top_right, [85, 85, 85], 60) # rectangle_pts = [bottom_left_pair, bottom_right_pair, top_right_pair, top_left_pair, bottom_left_pair] # rs.AddCurve(rectangle_pts, 1) def make_rectangle_2(bottom_left, bottom_right, top_left, top_right, depth, color): bottom_left_pair = rs.VectorAdd(bottom_left, depth) bottom_right_pair = rs.VectorAdd(bottom_right, depth) top_left_pair = rs.VectorAdd(top_left, depth) top_right_pair = rs.VectorAdd(top_right, depth) # rs.AddLine(bottom_left, bottom_left_pair) # rs.AddLine(bottom_right, bottom_right_pair) # rs.AddLine(top_left, top_left_pair) # rs.AddLine(top_right, top_right_pair) # rs.AddLine(bottom_left, top_left) draw_lines(bottom_left_pair, bottom_right_pair, top_left_pair, top_right_pair, color, 30) draw_lines(bottom_right_pair, bottom_right, top_right_pair, top_right, color, 30) draw_lines(bottom_left_pair, bottom_left, top_left_pair, top_left, color, 30) draw_lines(top_left_pair, top_right_pair, top_left, top_right, color, 30) # rectangle_pts = [bottom_left_pair, bottom_right_pair, top_right_pair, top_left_pair, bottom_left_pair] # rs.AddCurve(rectangle_pts, 1) def find_min_x(panel): bottom_right, top_right, top_left, bottom_left = panel return bottom_left[0] def styria_panel(panel, color): bottom_right, top_right, top_left, bottom_left = panel bottom_z = min(bottom_right[2], top_right[2], top_left[2], bottom_left[2]) top_z = max(bottom_right[2], top_right[2], top_left[2], bottom_left[2]) height = top_z - bottom_z vector_up = [0, 0, height / 2] middle_left = rs.VectorAdd(bottom_left, vector_up) middle_right = rs.VectorAdd(bottom_right, vector_up) vector_depth = dm.normVec3pnts(bottom_right, top_right, top_left) vector_depth = rs.VectorScale(vector_depth, 3) bottom_left_right_vector = rs.VectorCreate(bottom_left, bottom_right) bottom_left_right_vector_unit = rs.VectorUnitize(bottom_left_right_vector) bottom_left_right_vector_unit_scaled = rs.VectorScale(bottom_left_right_vector_unit, 1.5) bottom_left_right_vector_unit_scaled = rs.VectorReverse(bottom_left_right_vector_unit_scaled) middle_left_right_vector = rs.VectorCreate(middle_left, middle_right) middle_left_right_vector_unit = rs.VectorUnitize(middle_left_right_vector) middle_left_right_vector_unit_scaled = rs.VectorScale(middle_left_right_vector_unit, 1.5) middle_left_right_vector_unit_scaled = rs.VectorReverse(middle_left_right_vector_unit_scaled) make_rectangle_1(bottom_left, rs.VectorSubtract(bottom_right, bottom_left_right_vector_unit_scaled), middle_left, rs.VectorSubtract(middle_right, middle_left_right_vector_unit_scaled), vector_depth) top_left_right_vector = rs.VectorCreate(top_left, top_right) top_left_right_vector_unit = rs.VectorUnitize(top_left_right_vector) top_left_right_vector_unit_scaled = rs.VectorScale(top_left_right_vector_unit, 1.5) top_left_right_vector_unit_scaled = rs.VectorReverse(top_left_right_vector_unit_scaled) make_rectangle_2(rs.VectorSubtract(bottom_right, bottom_left_right_vector_unit_scaled), bottom_right, rs.VectorSubtract(top_right, top_left_right_vector_unit_scaled), top_right, vector_depth, color) if 0: for f, panel in enumerate(frontPanels[0:]+sidePanels): dm.esc() basementVal = 0 if f > 19: basementVal = 1 newPanel( panel, anzPts = 64*1, basement = basementVal ) #dm.textDots( coords ) if f%10==0: rs.Redraw() row_idx = 0 column_idx = 0 min_x = find_min_x(backPanels[0]) for panel in backPanels: if row_idx % 2 == 0: if column_idx % 2 == 0: color = [153, 153, 153] else: color = [17, 17, 17] else: if column_idx % 2 == 0: color = [17, 17, 17] else: color = [153, 153, 153] styria_panel(panel, color) column_idx = column_idx + 1 if column_idx % 10 == 0: row_idx = row_idx + 1 column_idx = 0 if min_x > find_min_x(panel): min_x = find_min_x(panel) row_idx = 0 for panel in backPanels: if find_min_x(panel) == min_x: bottom_right, top_right, top_left, bottom_left = panel bottom_left_right_vector = rs.VectorCreate(bottom_left, bottom_right) bottom_left_right_vector_unit = rs.VectorUnitize(bottom_left_right_vector) bottom_left_right_vector_unit_scaled = rs.VectorScale(bottom_left_right_vector_unit, 1.5) top_left_right_vector = rs.VectorCreate(top_left, top_right) top_left_right_vector_unit = rs.VectorUnitize(top_left_right_vector) top_left_right_vector_unit_scaled = rs.VectorScale(top_left_right_vector_unit, 1.5) vector_depth = dm.normVec3pnts(bottom_right, top_right, top_left) vector_depth = rs.VectorScale(vector_depth, 3) if row_idx % 2 == 0: color = [17, 17, 17] else: color = [153, 153, 153] row_idx = row_idx + 1 make_rectangle_2(bottom_left, rs.VectorAdd(bottom_left, bottom_left_right_vector_unit_scaled), top_left, rs.VectorAdd(top_left, top_left_right_vector_unit_scaled), vector_depth, color) #____________________________:here you end ################################# #rs.ZoomExtents() rs.EnableRedraw(1) ### 4 the MACs dm.printDisplay(1) dm.newEmptyLayer("Default")