################################### ### 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/ge84lid/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(), "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) alleObjekte = rs.AllObjects() rs.DeleteObjects(alleObjekte) rs.Redraw() ###_________________________________________# ### 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] ################################# if 0: ### 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) dm.textDots( frontPanels[0] ) for coords in frontPanels[0:10]+sidePanels: pass rs.AddPoints( coords ) rs.AddCurve( coords, 1 ) #rs.AddSrfPt( coords ) #for coords in sidePanels[0:]: # rs.AddPoints( coords ) for coords in BigPanelCoords[4]: pass rs.AddCurve( coords, 1 ) if 0: ### DEMO >> dont' exec @ homework ! #############: ### panel_DEF: def myPanel( panel, sockel = 0 ): p0, p1, p2, p3 = panel ### get items (==coords) from list rs.AddLine( p0, p2 ) if sockel: crv = rs.AddCurve( [p0, p1, dm.pntInbetween(p1, p3), p2, p3], 1 ) rs.ObjectPrintWidth( crv, 1 ) rs.ObjectColor( crv, [200,0,0]) else: coords = [p0, p1, p2, p3, p0] rs.AddCurve( coords, 2 ) for i,panel in enumerate(frontPanels[0:50] + sidePanels): pass sockel = 0 if i<20 or i>119: sockel = 1 myPanel( panel, sockel = sockel ) ### sockel = (i<20 or i>109) #rs.Redraw() dm.newEmptyLayer("myPROJ", [25,25,112]) if 1: ### panel_DEF: def Panels_Vorne( panel, sockel = 0 ): p0, p1, p2, p3 = panel #rs.AddCurve( [p0, p1, p2, p3], 1 ) if sockel: crv = rs.AddCurve( [dm.pntInbetween(p0, p3), dm.pntInbetween(p1, p2)], 1 ) rs.ObjectPrintWidth( crv, 0.1 ) rs.ObjectColor( crv, [0,0,139]) else: coords = [p0, p1, p2, p3, p0] #rs.AddCurve( coords, 1 ) ## Schussfaden mitte cenPt = dm.pntInbetween(p0,p2,0.5) cenR = dm.pntInbetween(p0,p1,0.5) cenL = dm.pntInbetween(p2,p3,0.5) cenRM = dm.pntInbetween(cenPt,cenR,0.5) cenLM = dm.pntInbetween(cenPt,cenL,0.5) nVec = dm.normVec3pnts(p0, p1, p2) nachVorne = dm.reMap(p0[2], 0.0, 144.0, 0.5, 0.5) cenRM = rs.VectorAdd(cenRM, rs.VectorScale(dVec, nachVorne)) cenLM = rs.VectorAdd(cenLM, rs.VectorScale(dVec, nachVorne)) nachHinten = -nachVorne cenPt = rs.VectorAdd(cenPt, rs.VectorScale(dVec, nachHinten)) cenR = rs.VectorAdd(cenR, rs.VectorScale(dVec, nachHinten)) cenL = rs.VectorAdd(cenL, rs.VectorScale(dVec, nachHinten)) schussfaden = rs.AddCurve( [cenR, cenRM, cenPt, cenLM, cenL], 1) rs.ObjectName( schussfaden, "schussfaden") ## Kettfaden mitte cenPt = dm.pntInbetween(p0,p2,0.5) cenO = dm.pntInbetween(p1,p2,0.5) cenU = dm.pntInbetween(p0,p3,0.5) cenOM = dm.pntInbetween(cenO,cenPt,0.5) cenUM = dm.pntInbetween(cenU,cenPt,0.5) cenPt = rs.VectorAdd(cenPt, rs.VectorScale(dVec, nachVorne)) cenO = rs.VectorAdd(cenO, rs.VectorScale(dVec, nachVorne)) cenU = rs.VectorAdd(cenU, rs.VectorScale(dVec, nachVorne)) cenOM = rs.VectorAdd(cenOM, rs.VectorScale(dVec, nachHinten)) cenUM = rs.VectorAdd(cenUM, rs.VectorScale(dVec, nachHinten)) kettfaden = rs.AddCurve( [cenO, cenOM, cenPt, cenUM, cenU], 1) rs.ObjectName( kettfaden, "kettfaden") ## Schussfaden oben mitte #neu wegen gleich cenOn = dm.pntInbetween(p1,p2,0.5) cenPtn = dm.pntInbetween(p0,p2,0.5) cenOMn = dm.pntInbetween(cenOn,cenPtn,0.5) cenRn = dm.pntInbetween(p0,p1,0.5) cenLn = dm.pntInbetween(p2,p3,0.5) cenORM0 = dm.pntInbetween(p1,cenRn,0.5) cenORM2 = dm.pntInbetween(cenORM0,cenOMn,0.5) cenOLM2 = dm.pntInbetween(p2,cenLn,0.5) cenOLM0 = dm.pntInbetween(cenOLM2,cenOMn,0.5) cenOMn = rs.VectorAdd(cenOMn, rs.VectorScale(dVec, nachVorne)) cenORM0 = rs.VectorAdd(cenORM0, rs.VectorScale(dVec, nachVorne)) cenOLM2 = rs.VectorAdd(cenOLM2, rs.VectorScale(dVec, nachVorne)) cenORM2 = rs.VectorAdd(cenORM2, rs.VectorScale(dVec, nachHinten)) cenOLM0 = rs.VectorAdd(cenOLM0, rs.VectorScale(dVec, nachHinten)) schussfadenOM = rs.AddCurve( [cenORM0, cenORM2, cenOMn, cenOLM0, cenOLM2], 1) rs.ObjectName( schussfadenOM, "schussfaden") ## Schussfaden unten mitte #neu wegen gliech cenUn = dm.pntInbetween(p0,p3,0.5) cenUMnn = dm.pntInbetween(cenUn,cenPtn,0.5) cenURM0 = dm.pntInbetween(p0,cenRn,0.5) cenURM2 = dm.pntInbetween(cenURM0,cenUMnn,0.5) cenULM2 = dm.pntInbetween(p3,cenLn,0.5) cenULM0 = dm.pntInbetween(cenULM2,cenUMnn,0.5) cenUMnn = rs.VectorAdd(cenUMnn, rs.VectorScale(dVec, nachVorne)) cenURM0 = rs.VectorAdd(cenURM0, rs.VectorScale(dVec, nachVorne)) cenULM2 = rs.VectorAdd(cenULM2, rs.VectorScale(dVec, nachVorne)) cenURM2 = rs.VectorAdd(cenURM2, rs.VectorScale(dVec, nachHinten)) cenULM0 = rs.VectorAdd(cenULM0, rs.VectorScale(dVec, nachHinten)) schussfadenUM = rs.AddCurve( [cenURM0, cenURM2, cenUMnn, cenULM0, cenULM2], 1) rs.ObjectName( schussfadenUM, "schussfaden") ## Schussfaden unten #neu wegen gleich cenUnn = dm.pntInbetween(p0,p3,0.5) cenURM1 = dm.pntInbetween(p0,cenUnn,0.5) cenULM1 = dm.pntInbetween(p3,cenUnn,0.5) cenURM1 = rs.VectorAdd(cenURM1, rs.VectorScale(dVec, nachVorne)) cenULM1 = rs.VectorAdd(cenULM1, rs.VectorScale(dVec, nachVorne)) p0 = rs.VectorAdd(p0, rs.VectorScale(dVec, nachHinten)) cenUnn = rs.VectorAdd(cenUnn, rs.VectorScale(dVec, nachHinten)) p3 = rs.VectorAdd(p3, rs.VectorScale(dVec, nachHinten)) schussfadenU = rs.AddCurve( [p0, cenURM1, cenUnn, cenULM1, p3], 1) rs.ObjectName( schussfadenU, "schussfaden") ## Schussfaden oben #neu wegen gleich cenOnn = dm.pntInbetween(p1,p2,0.5) cenORM1 = dm.pntInbetween(p1,cenOnn,0.5) cenOLM1 = dm.pntInbetween(p2,cenOnn,0.5) cenORM1 = rs.VectorAdd(cenORM1, rs.VectorScale(dVec, nachVorne)) cenOLM1 = rs.VectorAdd(cenOLM1, rs.VectorScale(dVec, nachVorne)) p1 = rs.VectorAdd(p1, rs.VectorScale(dVec, nachHinten)) cenOnn = rs.VectorAdd(cenOnn, rs.VectorScale(dVec, nachHinten)) p2 = rs.VectorAdd(p2, rs.VectorScale(dVec, nachHinten)) schussfadenO = rs.AddCurve( [p1, cenORM1, cenOnn, cenOLM1, p2], 1) rs.ObjectName( schussfadenO, "schussfaden") ## Kettfaden rechts p0 = rs.VectorAdd(p0, rs.VectorScale(dVec, nachVorne*2)) cenURM0 = rs.VectorAdd(cenURM0, rs.VectorScale(dVec, nachHinten*2)) cenR = rs.VectorAdd(cenR, rs.VectorScale(dVec, nachVorne*2)) cenORM0 = rs.VectorAdd(cenORM0, rs.VectorScale(dVec, nachHinten*2)) p1 = rs.VectorAdd(p1, rs.VectorScale(dVec, nachVorne*2)) kettfadenR = rs.AddCurve( [p0, cenURM0, cenR, cenORM0, p1], 1) rs.ObjectName( kettfadenR, "kettfaden") ## Kettfaden links p3 = rs.VectorAdd(p3, rs.VectorScale(dVec, nachVorne*2)) cenULM2 = rs.VectorAdd(cenULM2, rs.VectorScale(dVec, nachHinten*2)) cenL = rs.VectorAdd(cenL, rs.VectorScale(dVec, nachVorne*2)) cenOLM2 = rs.VectorAdd(cenOLM2, rs.VectorScale(dVec, nachHinten*2)) p2 = rs.VectorAdd(p2, rs.VectorScale(dVec, nachVorne*2)) kettfadenL = rs.AddCurve( [p3, cenULM2, cenL, cenOLM2, p2], 1) rs.ObjectName( kettfadenL, "kettfaden") ## Kettfaden rechts mitte cenORM1 = rs.VectorAdd(cenORM1, rs.VectorScale(dVec, nachHinten*2)) cenORM2 = rs.VectorAdd(cenORM2, rs.VectorScale(dVec, nachVorne*2)) cenRM = rs.VectorAdd(cenRM, rs.VectorScale(dVec, nachHinten*2)) cenURM2 = rs.VectorAdd(cenURM2, rs.VectorScale(dVec, nachVorne*2)) cenURM1 = rs.VectorAdd(cenURM1, rs.VectorScale(dVec, nachHinten*2)) kettfadenRM = rs.AddCurve( [cenORM1, cenORM2, cenRM, cenURM2, cenURM1], 1) rs.ObjectName( kettfadenRM, "kettfaden") ## Kettfaden links mitte cenOLM1 = rs.VectorAdd(cenOLM1, rs.VectorScale(dVec, nachHinten*2)) cenOLM0 = rs.VectorAdd(cenOLM0, rs.VectorScale(dVec, nachVorne*2)) cenLM = rs.VectorAdd(cenLM, rs.VectorScale(dVec, nachHinten*2)) cenULM0 = rs.VectorAdd(cenULM0, rs.VectorScale(dVec, nachVorne*2)) cenULM1 = rs.VectorAdd(cenULM1, rs.VectorScale(dVec, nachHinten*2)) kettfadenLM = rs.AddCurve( [cenOLM1, cenOLM0, cenLM, cenULM0, cenULM1], 1) rs.ObjectName( kettfadenLM, "kettfaden") if 1: ### Sockel = Erdgeschoss/Kettfaedenueberstand for i,panel in enumerate(frontPanels[0:]): sockelVal = 0 if i<10: sockelVal = 1 #rs.Redraw() Panels_Vorne( panel, sockel = sockelVal ) for crv in rs.ObjectsByName("kett*"): rs.RebuildCurve(crv, degree=2, point_count=20) for crv in rs.ObjectsByName("schuss*") : rs.RebuildCurve(crv, degree=2, point_count=20)