### https://www.student.tugraz.at/amel.ahmetovic/dm2/ue_06/ue_06.py ### grabbed: 2024-11-28 16:37:15 #################################add ############################## import rhinoscriptsyntax as rs import random, time, sys ### sys.path.append("P:/WWW/zargut2406/lib") ### 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.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=1, stepH=3, 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 ) 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, 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, 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 basement = 0 if i<20 or i>119: basement = 1 myPanel( panel, basement = basement ) ### basement = (i<20 or i>109) #rs.Redraw() #_____________________________here you go: dm.newEmptyLayer("myPROJ", [200,100,200]) def myPanel( panel, dachl = 0 ): p0, p1, p2, p3 = panel nVec = dm.normVec3pnts( p0, p1, p2 ) auskrag = 5.9 zVal = p0[2] auskrag = dm.reMap(zVal, 0, 156, 20.0, 1.0) nVec = rs.VectorScale( nVec, auskrag) coords0 = [p0, p1, p2, p3, p0] rs.AddCurve( coords0, 1) p10 = dm.pntInbetween( p1, p0, 0.3 ) p23 = dm.pntInbetween( p2, p3, 0.3 ) p12 = dm.pntInbetween( p1, p2, 0.5 ) p12 = rs.VectorAdd( p12, nVec ) anz = 111 coordsA = [p10, p1, p12, p2, p23] crvA = rs.AddCurve( coordsA, 2) crvI = rs.AddCurve( [p10, p1, p2, p23], 2) coordsDivA = rs.DivideCurve( crvA, anz, 0) coordsDivI = rs.DivideCurve( crvI, anz, 0) if dachl: for i in range(anz): rs.AddCurve( [coordsDivA[i], coordsDivI[i]] ) p0X = coordsDivA[ int( anz*0.3 ) ] ### int == "type_casting" p3X = coordsDivA[ int( anz*0.7 ) ] ### int == "type_casting" rs.AddLine( p0, p0X ) rs.AddLine( p3, p3X ) #rs.AddCurve( [p0, p1, p2, p3, p0], 2) def myPanel_2( panel, dachl = 0 ): dm.esc() ##!!!!!!!! p0, p1, p2, p3 = panel rs.AddCurve( [p0,p1,p2,p3,p0] ) coords = rs.DivideCurve( rs.AllObjects()[0], 1001, 0) zVal = p0[2] anz = int(dm.reMap(zVal, 4, 152, 204, 2)) for i in range(anz): rs.AddCurve( [random.choice(coords), random.choice(coords)] ) def myNewPanel( panel, distX = 0.4, divCrv = 4): dm.esc() ##!!!!!!!! p0, p1, p2, p3 = panel rs.AddCurve( [p0,p1,p2,p3,p0], 1 ) # Panel Umriss p0p1_45 = dm.pntInbetween( p0, p1, 0.5-distX) p0p1_55 = dm.pntInbetween( p0, p1, 0.5+distX) lScale = random.uniform(-5, -1) p0p1_45L = rs.VectorAdd( p0p1_45, rs.VectorScale(lVec, lScale) ) lScale = random.uniform(-5, -1) p0p1_55L = rs.VectorAdd( p0p1_55, rs.VectorScale(lVec, lScale) ) #rs.AddLine(p0p1_45, p0p1_45L ) # #rs.AddLine( p0p1_55, p0p1_55L ) # lScale = random.uniform(-5, -1) # obenlinks p1p2_45 = dm.pntInbetween( p1, p2, 0.5-distX) p1p2_55 = dm.pntInbetween( p1, p2, 0.5+distX) p1p2_45U = rs.VectorAdd( p1p2_45, [0,0, lScale] ) lScale = random.uniform(-5, -1) p1p2_55U = rs.VectorAdd( p1p2_55, [0,0, lScale] ) #rs.AddLine( p1p2_45, p1p2_45U ) # #rs.AddLine( p1p2_55, p1p2_55U ) # #rs.AddPoint( dm.pntInbetween( p0, p2 ) ) randPt = dm.pntInbetween(p1,p3, random.uniform(0.4, 0.1)) #rs.AddCurve( [ p0p1_55, p0p1_55L, randPt, p1p2_45U, p1p2_45 ], 1) # verbindung aller punkte degree1 #rs.AddCurve( [ p0p1_55, p0p1_55L, randPt, p1p2_45U, p1p2_45 ], 2) # verbindung aller punkte degree2 rndCrv = rs.AddCurve( [ p0p1_55, p0p1_55L, randPt, p1p2_45U, p1p2_45 ], 2) eckCrv = rs.AddCurve( [ p0p1_55, p1, p1p2_45 ], 1) coordsRndCrv = rs.DivideCurve(rndCrv, divCrv, 0) coordsEckCrv = rs.DivideCurve(eckCrv, divCrv, 0) for i in range(1, divCrv): pA = coordsRndCrv[i] pB = coordsEckCrv[i] rs.AddLine( pA, pB ) #rs.AddPoint( p1p245U ) # #rs.AddPoint( p1p255U ) # #a - obenrechts p2p3_45 = dm.pntInbetween( p2, p3, 0.5-distX) p2p3_55 = dm.pntInbetween( p2, p3, 0.5+distX) p2p3_45R = rs.VectorAdd( p2p3_45, [0,lScale, 0] ) lScale = random.uniform(5, 1) p2p3_55R = rs.VectorAdd( p2p3_55, [0,-lScale, 0] ) #rs.AddLine( p2p3_45, p2p3_45R ) # #rs.AddLine( p2p3_55, p2p3_55R ) # #rs.AddPoint( dm.pntInbetween( p0, p2 ) ) randPt = dm.pntInbetween(p2,p0, random.uniform(0.5, 0.1)) #rs.AddCurve( [ p2p3_45, p2p3_45R, randPt, p1p2_55U, p1p2_55 ], 1) # verbindung aller punkte degree1 #rs.AddCurve( [ p2p3_45, p2p3_45R, randPt, p1p2_55U, p1p2_55 ], 1) rndCrv2 = rs.AddCurve( [ p2p3_45, p2p3_45R, randPt, p1p2_55U, p1p2_55 ], 2) eckCrv2 = rs.AddCurve( [ p2p3_45, p2, p1p2_55 ], 1) coordsRndCrv2 = rs.DivideCurve(rndCrv2, divCrv, 0) coordsEckCrv2 = rs.DivideCurve(eckCrv2, divCrv, 0) for i in range(1, divCrv): pA2 = coordsRndCrv2[i] pB2 = coordsEckCrv2[i] rs.AddLine( pA2, pB2 ) # untenlinks p3p0_45 = dm.pntInbetween( p3, p0, 0.5-distX) p3p0_55 = dm.pntInbetween( p3, p0, 0.5+distX) p3p0_45O = rs.VectorAdd( p3p0_45, [0,0, lScale] ) lScale = random.uniform(5, 1) p3p0_55O = rs.VectorAdd( p3p0_55, [0,0, lScale] ) #rs.AddLine( p3p0_45, p3p0_45O ) # #rs.AddLine( p3p0_55, p3p0_55O ) # #rs.AddPoint( dm.pntInbetween( p3, p1 ) ) randPt3 = dm.pntInbetween(p3,p1, random.uniform(0.4, 0.1)) #rs.AddCurve( [ p2p3_55, p2p3_55R, randPt3, p3p0_45O, p3p0_45 ], 1) rndCrv3 = rs.AddCurve( [ p2p3_55, p2p3_55R, randPt3, p3p0_45O, p3p0_45 ], 2) eckCrv3 = rs.AddCurve( [ p2p3_55, p3, p3p0_45 ], 1) coordsRndCrv3 = rs.DivideCurve(rndCrv3, divCrv, 0) coordsEckCrv3 = rs.DivideCurve(eckCrv3, divCrv, 0) for i in range(1, divCrv): pA3 = coordsRndCrv3[i] pB3 = coordsEckCrv3[i] rs.AddLine( pA3, pB3 ) # untenrechts randPt4 = dm.pntInbetween(p0,p2, random.uniform(0.5, 0.1)) #rs.AddCurve( [ p3p0_55, p3p0_55O, randPt4, p0p1_45L, p0p1_45 ], 1) rndCrv4 = rs.AddCurve( [ p3p0_55, p3p0_55O, randPt4, p0p1_45L, p0p1_45 ], 2) eckCrv4 = rs.AddCurve( [ p3p0_55, p0, p0p1_45 ], 1) coordsRndCrv4 = rs.DivideCurve(rndCrv4, divCrv, 0) coordsEckCrv4 = rs.DivideCurve(eckCrv4, divCrv, 0) for i in range(1, divCrv): pA4 = coordsRndCrv4[i] pB4 = coordsEckCrv4[i] rs.AddLine( pA4, pB4 ) for i,panel in enumerate(BigPanelCoords[0][0:]): myNewPanel(panel,distX = 0.08, divCrv = random.randint(5,5)) dachl = random.randint(0, 115)*(i > 20) if i < 20: pass #dachl = 0 #myPanel( panel, dachl=dachl ) if i%10==0: rs.Redraw() #for i in range(10): # rs.AddCurve( frontPanels[i], 1 ) # rs.AddCurve( frontPanels[i+20], 1 ) # #dm.textDots( frontPanels[3] ) ##rs.AddSrfPt( frontPanels[3] ) #____________________________:here you end ################################# #rs.ZoomExtents() rs.EnableRedraw(1) ### 4 the MACs dm.printDisplay(1) dm.newEmptyLayer("Default")