##################################################################### import rhinoscriptsyntax as rs import random, time, sys import math # Hier wird math importiert sys.path.append("P:/WWW/bobbycar123")### 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(), "wireframe") rs.Command("cplane w t enter", 0) dm.PointRadius(displayModeX=0, rad=3, styl=3) dm.printDisplay(1) rs.EnableRedraw(0) ##################################################################### 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 gridCoords L*D*H = 1760 UnoGridCoords = dm.getUnoGridCoords() # get from DM_lib as dm #################___________________________# dm.newEmptyLayer("UNO::setUp::points", [150,150,200] ) dm.newEmptyLayer("UNO::setUp::geo", [150, 20,150] ) dm.newEmptyLayer("UNO::setUp::crv", [250, 10, 10]) dm.newEmptyLayer("UNO::setUp", [120,120,140] ) ################ 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=9*1, anzH=39, anzD=3, stepL=1, stepH=1, stepD=1) ### = all ~windows_panels BigPanelCoords = dm.getUNpanelCoords(anzL=9*1, anzH=39, anzD=3, stepL=2, stepH=6, stepD=2) ### = all ~windows_panels UnoPanelCoords = dm.getUNpanelCoords(anzL=9, anzH=39, anzD=3, stepL=1, stepH=2, stepD=1) ### ########################################################################################### ########################################################## frontPanels = UnoPanelCoords[0] ### list of coordLists ! backPanels = UnoPanelCoords[1] sidePanels = UnoPanelCoords[2] upSidePanels = UnoPanelCoords[3] allPanels = UnoPanelCoords[4] ################################# if 1: if 0: rs.AddLine( dm.getUnoCoord(0, 0, 0), dm.getUnoCoord(int(10), 0, 0) ) rs.AddLine( dm.getUnoCoord(0, 0, 0), dm.getUnoCoord( 0, 3, 0) ) rs.AddLine( dm.getUnoCoord(0, 0, 0), dm.getUnoCoord( 0, 0, 39) ) rs.CurveArrows(rs.AllObjects()[0], arrow_style=2) rs.CurveArrows(rs.AllObjects()[1], arrow_style=2) rs.CurveArrows(rs.AllObjects()[2], arrow_style=2) rs.ObjectColor(rs.AllObjects()[2], [0, 222, 0] ) rs.ObjectColor(rs.AllObjects()[1], [222, 0, 0] ) rs.ObjectColor(rs.AllObjects()[0], [0, 0, 222] ) rs.ObjectPrintWidth( rs.AllObjects()[0:3], 1.0 ) p0 = dm.getUnoCoord( 0, 0, 0) p1 = dm.getUnoCoord( 7, 0, 0) p2 = dm.getUnoCoord( 7, 3, 0) p3 = dm.getUnoCoord( 0, 3, 0) unoBaseCoords = [p0, p1, p2, p3, p0] unoBaseCrv = rs.AddCurve( unoBaseCoords, 1) unoTopCoords = [dm.getUnoCoord( 0, 0, 39), dm.getUnoCoord( 7, 0, 39), dm.getUnoCoord( 7, 3, 39), dm.getUnoCoord( 0, 3, 39), dm.getUnoCoord( 0, 0, 39), ] unoTopCrv = rs.AddCurve( unoTopCoords, 1) rs.ZoomExtents() ##########################################begin#######################begin######################### ###################################################### versatz = 2 max_height = 65 min_height = 0 mid_height = (max_height + min_height) / 2 effective_height = max_height - min_height def _fuenfeckPanel1(panel, z_offset=3, ecken=5, center_6=None): if z_offset > effective_height: return p0, p1, p2, p3 = panel p0 = [p0[0], p0[1], p0[2] + z_offset + min_height] p1 = [p1[0], p1[1], p1[2] + z_offset + min_height] p2 = [p2[0], p2[1], p2[2] + z_offset + min_height] p3 = [p3[0], p3[1], p3[2] + z_offset + min_height] ep5_0 = dm.pntInbetween(dm.pntInbetween(p1, p2, 0.5), dm.pntInbetween(p3, p0, 0.5), 0.5) ep5_1 = dm.pntInbetween(dm.pntInbetween(p1, p2, 0.75), dm.pntInbetween(p3, p0, 0.5), 0.1) ep5_2 = dm.pntInbetween(p2, p3, 0.3) ep5_3 = dm.pntInbetween(p2, p3, 0.7) ep5_4 = dm.pntInbetween(dm.pntInbetween(p3, p0, 0.25), dm.pntInbetween(p1, p2, 0.5), 0.1) ep5_5 = dm.pntInbetween(dm.pntInbetween(p3, p0, 0.5), dm.pntInbetween(p1, p2, 0.5), 0.5) Points = rs.AddPoints([ep5_2, ep5_3]) rs.ObjectColor(Points, [250, 0, 0]) Points = rs.AddPoints([ep5_0, ep5_1, ep5_4, ep5_5]) rs.ObjectColor(Points, [105, 105, 105]) FECK = rs.AddCurve([ep5_0, ep5_1, ep5_2, ep5_3, ep5_4, ep5_5], 1) rs.ObjectColor(FECK, [80, 80, 80]) rs.ObjectPrintWidth(FECK,2) center = dm.pntInbetween(dm.pntInbetween(p1, p2, 0.5), dm.pntInbetween(p3, p0, 0.5), 0.5)#wen Explosion nicht erwuenscht, dann weg mit 132,133,134 rs.RotateObject(FECK, center, 20, axis=[0, 0, 1]) rs.RotateObject(Points, center, 20, axis=[0, 0, 1]) Seitenverbindungen1= rs.AddLine(dm.pntInbetween(ep5_0, dm.pntInbetween(p0, p1,),0.7),ep5_0) rs.ObjectPrintWidth(Seitenverbindungen1,2) Seitenverbindungen2= rs.AddLine(dm.pntInbetween(ep5_0, dm.pntInbetween(p0, p1, 0.5), 0.7),dm.pntInbetween(p0, p1, 0.25)) rs.ObjectPrintWidth(Seitenverbindungen2,2) Seitenverbindungen3= rs.AddLine(p0,dm.pntInbetween(p0, p1, 0.25)) rs.ObjectPrintWidth(Seitenverbindungen3,2) def _sechseckPanel(panel, z_offset=3, ecken=6): if z_offset > effective_height: return p0, p1, p2, p3 = panel p0 = [p0[0], p0[1], p0[2] + z_offset + min_height] p1 = [p1[0], p1[1], p1[2] + z_offset + min_height] p2 = [p2[0], p2[1], p2[2] + z_offset + min_height] p3 = [p3[0], p3[1], p3[2] + z_offset + min_height] p6_0 = dm.pntInbetween(p0, p1, 0.3) p6_1 = dm.pntInbetween(p0, p1, 0.7) p6_2 = dm.pntInbetween(p1, p2, 0.3) p6_3 = dm.pntInbetween(p1, p2, 0.7) p6_4 = dm.pntInbetween(p2, p3, 0.3) p6_5 = dm.pntInbetween(p2, p3, 0.7) p6_6 = dm.pntInbetween(p3, p0, 0.3) p6_7 = dm.pntInbetween(p3, p0, 0.7) p6_8 = p6_0 Points = rs.AddPoints([p6_2, p6_3, p6_6, p6_7]) rs.ObjectColor(Points, [39, 139, 39]) SECK = rs.AddCurve([p6_0, p6_1, p6_2, p6_3, p6_4, p6_5, p6_6, p6_7, p6_8], 1) rs.ObjectColor(SECK, [80, 80, 80]) rs.ObjectPrintWidth(SECK,2) center = dm.pntInbetween(dm.pntInbetween(p1, p2, 0.5), dm.pntInbetween(p3, p0, 0.5), 0.5)#wen Explosion nicht erwuenscht, dann weg mit 162,163,164 rs.RotateObject(SECK, center, 20, axis=[0, 0, 1]) rs.RotateObject(Points, center, 20, axis=[0, 0,1]) def _fuenfeckPanel2(panel, z_offset=3, ecken=5): if z_offset > effective_height: return p0, p1, p2, p3 = panel p0 = [p0[0], p0[1], p0[2] + z_offset + min_height] p1 = [p1[0], p1[1], p1[2] + z_offset + min_height] p2 = [p2[0], p2[1], p2[2] + z_offset + min_height] p3 = [p3[0], p3[1], p3[2] + z_offset + min_height] p5_0 = dm.pntInbetween(p0, p1, 0.3) p5_1 = dm.pntInbetween(p0, p1, 0.7) p5_2 = dm.pntInbetween(dm.pntInbetween(p1, p2, 0.25), dm.pntInbetween(p3, p0, 0.5), 0.1) p5_3 = dm.pntInbetween(dm.pntInbetween(p1, p2, 0.5), dm.pntInbetween(p3, p0, 0.5), 0.5) p5_4 = dm.pntInbetween(dm.pntInbetween(p3, p0, 0.75), dm.pntInbetween(p1, p2, 0.5), 0.1) p5_5 = dm.pntInbetween(p0, p1, 0.3) Points = rs.AddPoints([p5_1, p5_5]) rs.ObjectColor(Points, [250, 0, 0]) Points = rs.AddPoints([p5_2, p5_3, p5_4]) rs.ObjectColor(Points, [105, 105, 105]) FECK = rs.AddCurve([p5_0, p5_1, p5_2, p5_3, p5_4, p5_5], 1) rs.ObjectColor(FECK, [80, 80, 80]) rs.ObjectPrintWidth(FECK,2) center = dm.pntInbetween(dm.pntInbetween(p1, p2, 0.5), dm.pntInbetween(p3, p0, 0.5), 0.5)#wen Explosion nicht erwuenscht, dann weg mit 188,189,190 rs.RotateObject(FECK, center, 20, axis=[0, 0, 1]) rs.RotateObject(Points, center, 20, axis=[0, 0, 1]) Seitenverbindungen1= rs.AddLine(dm.pntInbetween(p5_3, dm.pntInbetween(p2, p3, 0.5), 0.7),p5_3) rs.ObjectPrintWidth(Seitenverbindungen1,2) Seitenverbindungen2= rs.AddLine(dm.pntInbetween(p5_3, dm.pntInbetween(p2, p3, 0.5), 0.7),dm.pntInbetween(p2, p3, 0.25)) rs.ObjectPrintWidth(Seitenverbindungen2,2) #Seitenverbindungen3= rs.AddLine(p2,dm.pntInbetween(p2, p3, 0.25)) ########################################################################### dm.PointRadius(0,1,1,0) zaehler = 0 for i, panel in enumerate(frontPanels): z_offset = (i // 3) * versatz if zaehler == 0: _fuenfeckPanel1(panel, z_offset=z_offset) elif zaehler == 1: _sechseckPanel(panel, z_offset=z_offset) elif zaehler == 2: _fuenfeckPanel2(panel, z_offset=z_offset) zaehler += 1 if zaehler == 3: zaehler = 0 rs.EnableRedraw(1) ###################################################### ######################################################