import rhinoscriptsyntax as rs import random, time, sys import math sys.path.append("P:/WWW/bobbycar123") import DM_lib as dm rs.UnitSystem(4) rs.ShowGrid(None, 0) rs.ShowGridAxes(None, 1) rs.ViewDisplayMode(rs.CurrentView(), "wireframe") rs.Command("cplane w t enter", 0) # cPlane World Top 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 UnoGridCoords = dm.UnoGridCoords # get gridCoords L*D*H = 1760 UnoPanelCoords = dm.UnoPanelCoords # get panelCoords [frontPanels, backPanels, sidePanels, upSidePanels] lengthVec = lVec = rs.VectorUnitize(rs.VectorSubtract(dm.getUnoCoord(0, 0, 0), dm.getUnoCoord(1, 0, 0))) depthVec = dVec = rs.VectorUnitize(rs.VectorSubtract(dm.getUnoCoord(0, 1, 0), dm.getUnoCoord(0, 0, 0))) UnoPanelCoords = dm.getUNpanelCoords(anzL=10*7, anzH=39, anzD=3, stepL=1, stepH=1, stepD=1) BigPanelCoords = dm.getUNpanelCoords(anzL=10*1, anzH=39, anzD=3, stepL=2, stepH=6, stepD=2) UnoPanelCoords = dm.getUNpanelCoords(anzL=10*1, anzH=39, anzD=3, stepL=1, stepH=3, stepD=2) frontPanels = UnoPanelCoords[0] backPanels = UnoPanelCoords[1] sidePanels = UnoPanelCoords[2] upSidePanels = UnoPanelCoords[3] allPanels = UnoPanelCoords[4] dm.newEmptyLayer("UNO::setUp", [120, 120, 240]) if 1: 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() if 0: print(len(frontPanels)) for coords in frontPanels[0:10] + sidePanels: rs.AddPoints(coords) rs.AddCurve(coords, 1) for coords in BigPanelCoords[4]: pass if 1: ### panel_DEF: def myPanel(panel, basement=3, auskrag=10): p0, p1, p2, p3 = panel nVec = dm.normVec3pnts(p0, p1, p2) zCor = p0[2] auskrag = dm.reMap(zCor, 50, 10, 10.0, 2) nVec = rs.VectorScale(nVec, auskrag) if basement != 0: p0_d = rs.VectorAdd(p0, rs.VectorScale(depthVec, D)) p1_d = rs.VectorAdd(p1, rs.VectorScale(depthVec, D)) p2_d = rs.VectorAdd(p2, rs.VectorScale(depthVec, D)) p3_d = rs.VectorAdd(p3, rs.VectorScale(depthVec, D)) coords_front = [p0, p1, p2, p3, p0] coords_back = [p0_d, p1_d, p2_d, p3_d, p0_d] front_curve = rs.AddCurve(coords_front, 1) back_curve = rs.AddCurve(coords_back, 3) rs.ObjectColor(front_curve, [200, 100, 50]) rs.ObjectPrintWidth(front_curve, 2) for i in range(len(coords_front) - 5): rs.AddSrfPt([coords_front[i], coords_front[i + 1], coords_back[i + 1], coords_back[i]]) for i in range(len(coords_front)): rs.AddLine(coords_front[i], coords_back[i]) else: p00 = dm.pntInbetween(p0, p2, 0.25) p10 = dm.pntInbetween(p1, p3, 0.25) p20 = dm.pntInbetween(p2, p0, 0.75) p30 = dm.pntInbetween(p3, p1, 0.75) coords_schuppe = [p00, p10, p30, p20, p00] innen_schuppe = rs.AddCurve(coords_schuppe, 4) rs.ObjectColor(innen_schuppe, [255, 0, 0]) coords_overlapp = [rs.VectorAdd(p, rs.VectorScale(nVec, 0.3)) for p in coords_schuppe] aussen_schuppe = rs.AddCurve(coords_overlapp, 10) rs.ObjectColor(aussen_schuppe, [255, 0, 232]) widthVec = rs.VectorScale(depthVec, 4) coords_breite = [rs.VectorAdd(p, widthVec) for p in coords_schuppe] breite_schuppe = rs.AddCurve(coords_breite, 40) rs.ObjectColor(breite_schuppe, [255, 0, 0]) coords_top = [rs.VectorAdd(p, rs.VectorScale([0, 2, 1], floorHeight)) for p in coords_overlapp] top_schuppe = rs.AddCurve(coords_top, 2) rs.ObjectColor(top_schuppe, [255, 0, 0]) rs.ObjectColor(top_schuppe, [200, 0, 50]) rs.ObjectPrintWidth(top_schuppe, 2) for i in range(len(coords_schuppe) - 1): rs.AddSrfPt([coords_schuppe[i], coords_schuppe[i + 1], coords_top[i + 1], coords_top[i]]) rs.AddSrfPt([coords_schuppe[i], coords_breite[i], coords_breite[i + 1], coords_schuppe[i + 1]]) rs.AddSrfPt([coords_schuppe[-1], coords_schuppe[0], coords_top[0], coords_top[-1]]) rs.AddSrfPt([coords_schuppe[-1], coords_breite[-1], coords_breite[0], coords_schuppe[0]]) anz = int(dm.reMap(zCor, 0, 156, 20, 5)) coords_innen = rs.DivideCurve(innen_schuppe, anz, 0) coords_aussen = rs.DivideCurve(aussen_schuppe, anz, 0) for i in range(anz): rs.AddCurve([coords_innen[i], coords_aussen[i]], 10) for i, panel in enumerate(frontPanels[:]): basementVar = 0 if i % 2 == 0: basementVar = 1 myPanel(panel, basement=basementVar, auskrag=1) dm.newEmptyLayer("myPROJ", [200, 100, 0]) rs.EnableRedraw(1) dm.printDisplay(1) dm.newEmptyLayer("Default")