################################### ### 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("/Users/maya/Library/Mobile Documents/com~apple~CloudDocs/_DM2") ### sys.path.append("D:/PY/") 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]) 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 ) #_____________________________here you go: dm.newEmptyLayer("myPROJ", [00,10,200]) #dm.ort= "NYC UN" sunVec = dm.setSun(year=2024, mon=3, day=20, hour=18, min=0, sec=0, verbose=1)[2] sunVec = rs.VectorScale(sunVec, -100.0) print rs.VectorLength( sunVec ), "meters" print sunVec def myPanel(panel, cnt=0): dm.esc() p0,p1,p2,p3 = panel coords = [p0,p1,p2,p3, p0] rs.AddCurve( coords, 1 ) cenPt = dm.pntInbetween( p0, p2 ) #rs.AddPoint( cenPt ) sunPt = rs.VectorAdd(cenPt, sunVec) sunBeam = rs.AddLine(cenPt, sunPt) centerBrunnen = [707.636,597.570,0.000] vec = rs.VectorSubtract(cenPt, [707.636,597.570,0.000]) vec = rs.VectorUnitize(vec) vec = rs.VectorScale( vec, -100) reflBeam = rs.AddLine(cenPt, rs.VectorAdd(cenPt, vec) ) tweenCrv = rs.AddTweenCurves(sunBeam, reflBeam, number_of_curves = 1, method = 1, sample_number = 10) planeNorm = rs.CurvePerpFrame(tweenCrv, 0.0) #circ = rs.AddCircle( planeNorm, 5.0) rect = rs.AddRectangle( planeNorm, 8.75*0.9, 12.0*0.9) coords = rs.CurveEditPoints(rect) centerRect = dm.pntInbetween(coords[1], coords[3] ) #rs.AddPoint( centerRect ) movVec = rs.VectorSubtract(cenPt, centerRect) rs.MoveObject( rect, movVec) #rs.AddPlanarSrf( rect ) coordsRect = rs.CurveEditPoints(rect) rs.ObjectColor(rect, [86,78,92]) rs.ObjectPrintWidth(rect, 2.0) #dm.textDots(coordsRect) for i in range(4): rs.AddLine(panel[i], coordsRect[i+1]) rs.DeleteObjects( [tweenCrv, reflBeam, sunBeam] ) if cnt%17==0: #if random.uniform(0,1) < 0.2: reflBeam = rs.AddLine(cenPt, centerBrunnen ) #rs.CurveArrows(reflBeam, arrow_style=2) sunBeam = rs.AddLine(cenPt, sunPt) rs.CurveArrows(sunBeam, arrow_style=1) rs.ObjectColor( sunBeam, [255,100,0] ) rs.ObjectColor( reflBeam, [255,100,0]) rs.ObjectPrintWidth(sunBeam, 1.5) rs.ObjectPrintWidth( reflBeam, 1.5) for i,panel in enumerate(frontPanels[20:]): dm.esc() myPanel(panel, cnt=i) if i%10==0: rs.Redraw() #____________________________:here you end ################################# #rs.ZoomExtents() rs.EnableRedraw(1) ### 4 the MACs dm.printDisplay(1) dm.newEmptyLayer("Default")