############################## ### DM2_w24 hu_05_setUp ### ### _diag / 2024 11 14 ### ############################## import rhinoscriptsyntax as rs import random, time, sys ### sys.path.append("P:\WWW\mori21\DM2") ### add path where "DM_lib.py" can be found !!! 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=2, styl=3) dm.printDisplay(0) # nomen est omen rs.EnableRedraw(0) ### MAC >> problem ! dm.eAA() ###_________________________________________# ### basic settings for grid to fit UN_slab # ### # ! no need 2 change ! 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", [200, 100, 100]) dm.newEmptyLayer("UNO::setUp", [120,120,140]) ################## depthVec = dVec = rs.VectorUnitize(rs.VectorSubtract( dm.getUnoCoord(0, 0, 0), dm.getUnoCoord(0, 2, 0) )) lengthVec = lVec = rs.VectorUnitize(rs.VectorSubtract( dm.getUnoCoord(0, 0, 0), dm.getUnoCoord(1, 0, 0) )) ################## if 1: ### SETUP >> dont' exec @ homework ! if 1: rs.AddLine( dm.getUnoCoord(0, 0, 0), dm.getUnoCoord(1, 0, 0) ) rs.AddLine( dm.getUnoCoord(0, 0, 0), dm.getUnoCoord(0, 1, 0) ) rs.AddLine( dm.getUnoCoord(0, 0, 0), dm.getUnoCoord(0, 0, 1) ) 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( 10, 0, 0) p2 = dm.getUnoCoord( 10, 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( 10, 0, 39), dm.getUnoCoord( 10, 3, 39), dm.getUnoCoord( 0, 3, 39), dm.getUnoCoord( 0, 0, 39), ] unoTopCrv = rs.AddCurve( unoTopCoords, 1) rs.ZoomExtents() if 0: ############################## rs.CurrentLayer("UNO::setUp::points") rs.AddPoints( UnoGridCoords ) for i in range(L): rs.ObjectColor( rs.AddTextDot( str(i), dm.getUnoCoord(i, 0, 0) ), [0, 222, 0] ) for i in range(D): rs.ObjectColor( rs.AddTextDot( str(i), dm.getUnoCoord(0, i, 0) ), [222, 0, 0] ) for i in range(H): rs.ObjectColor( rs.AddTextDot( str(i), dm.getUnoCoord(0, 0, i) ), [0, 0, 222] ) ############################## if 0: rs.CurrentLayer("UNO::setUp::crv") for i in range(8): p0 = dm.getUnoCoord( random.randint(0,L-1), random.randint(0,D-1), random.randint(0,H-1) ) p1 = dm.getUnoCoord( random.randint(0,L-1), random.randint(0,D-1), random.randint(0,H-1) ) rs.AddCurve( [p0, p1] ) #dm.textDots( [p0, p1] ) rs.ZoomExtents() if 0: coords = UnoGridCoords[:] ### make COPY - not equal ! #random.shuffle( coords ) rs.AddCurve( coords[0:], 2 ) #_____________________________here you go: dm.newEmptyLayer("myPROJ", [100,100,100]) #############Ab jetzt mache ich weiter yuhu...endlichhh #############Meine 5.DM2 HUE hoeheVec = hVec = rs.VectorUnitize(rs.VectorSubtract( dm.getUnoCoord(0, 0, 0), dm.getUnoCoord(0, 0, 1))) ##############Ich erstelle jetzt die Punkte fuer meine Wasserrutsche if 1: P0 = rs.VectorAdd(dm.getUnoCoord(0,0,39), rs.VectorAdd(rs.VectorScale(dVec, -28.0), rs.VectorScale(hVec, -0.0))) P1 = rs.VectorAdd(dm.getUnoCoord(2,0,38), rs.VectorScale(dVec, -30.0)) P2 = rs.VectorAdd(dm.getUnoCoord(4,0,37), rs.VectorScale(dVec, -32.0)) P3 = rs.VectorAdd(dm.getUnoCoord(6,0,36), rs.VectorScale(dVec, -35.0)) P4 = rs.VectorAdd(dm.getUnoCoord(8,0,36), rs.VectorScale(dVec,-40.0)) P5 = rs.VectorAdd(dm.getUnoCoord(9,0,34), rs.VectorScale(dVec,-60.0)) P6 = rs.VectorAdd(dm.getUnoCoord(6,0,32), rs.VectorScale(dVec,-60.0)) P7 = rs.VectorAdd(dm.getUnoCoord(4,0,30), rs.VectorScale(dVec,-50.0)) P8 = rs.VectorAdd(dm.getUnoCoord(2,0,29), rs.VectorScale(dVec,-40.0)) P9 = rs.VectorAdd(dm.getUnoCoord(0,0,29), rs.VectorScale(dVec,-40.0)) P10 = rs.VectorAdd(dm.getUnoCoord(0,0,29), rs.VectorAdd(rs.VectorScale(lVec, 10.0), rs.VectorScale(dVec,-40.0))) P11 = rs.VectorAdd(dm.getUnoCoord(0,0,26), rs.VectorAdd(rs.VectorScale(lVec, 12.0), rs.VectorScale(dVec,-30.0))) P12 = rs.VectorAdd(dm.getUnoCoord(0,2,23), rs.VectorScale(lVec,12.0)) P13 = rs.VectorAdd(dm.getUnoCoord(0,0,21), rs.VectorScale(lVec,12.0)) P14 = rs.VectorAdd(dm.getUnoCoord(0,0,20), rs.VectorAdd(rs.VectorScale(lVec, 12.0), rs.VectorScale(dVec,15.0))) P15 = rs.VectorAdd(dm.getUnoCoord(7,0,30), rs.VectorScale(dVec,20.0)) P16 = rs.VectorAdd(dm.getUnoCoord(5,0,16), rs.VectorScale(dVec,10.0)) P17 = rs.VectorAdd(dm.getUnoCoord(8,0,10), rs.VectorScale(dVec,10.0)) P18 = rs.VectorAdd(dm.getUnoCoord(10,0,9), rs.VectorScale(dVec,10.0)) P19 = rs.VectorAdd(dm.getUnoCoord(10,0,8), rs.VectorAdd(rs.VectorScale(lVec, -10.0), rs.VectorScale(dVec,5.0))) P20 = rs.VectorAdd(dm.getUnoCoord(10,2,6), rs.VectorScale(lVec,-10.0)) P21 = rs.VectorAdd(dm.getUnoCoord(10,0,5), rs.VectorAdd(rs.VectorScale(lVec, -5.0), rs.VectorScale(dVec,-45.0))) P22 = rs.VectorAdd(dm.getUnoCoord(5,0,2), rs.VectorScale(dVec,-40.0)) P23 = rs.VectorAdd(dm.getUnoCoord(0,0,0), rs.VectorScale(dVec,-30.0)) ABPts = [P0,P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13,P14,P15,P16,P17,P18,P19,P20,P21,P22,P23] ABP = rs.AddPoints(ABPts) #Farbe fuer eine Kurve innerhalb der Wasserrutsche crv = rs.AddCurve(ABPts,3) rs.ObjectColor(crv,[128,0,128]) ##domain dom =rs.CurveDomain(crv)[1] print "dom =", dom ##Schienenbreite SchB = 5 dicke = 3 anz = dicke anzahl = 60 if 1: for i in range( anzahl ): para = dom/anzahl*i pX = rs.AddPoint(rs.EvaluateCurve(crv,para)) zpt = rs.PointCoordinates(pX)[2] perpendicular_tangent_vector = perVec = rs.VectorRotate(rs.CurveTangent(crv, para),90,[0,0,1]) schPts1 = rs.VectorAdd(pX, rs.VectorScale(perVec, dicke)) schPts1 = [schPts1[0], schPts1[1], zpt] rs.AddPoint(schPts1) schPts2 = rs.VectorAdd(pX, rs.VectorScale(perVec, -dicke)) schPts2 = [schPts2[0], schPts2[1], zpt] rs.AddPoint(schPts2) #Farbe fuer Brette die quer liegen ist Blau bretter = rs.AddPolyline([schPts2,schPts1]) rs.ObjectPrintWidth(bretter, 2) rs.ObjectColor(bretter, [0,0,128]) #Farbe fuer meine Leitschienen ist Weiss crvCoords = [] coords1 = [] coords2 = [] crvCoords.append(pX) coords1.append(schPts1) coords2.append(schPts2) Ls1 = rs.OffsetCurve(crv,coords1[0],dicke) Ls2 = rs.OffsetCurve(crv,coords2[0],dicke) rs.ObjectPrintWidth([Ls1, Ls2], 3) rs.ObjectColor([Ls1, Ls2],[255,255,255]) anzahl = 130 rad = 5.33 circDvisions = 60 allCoords = [] for i in range(anzahl+1): para = dom/anzahl*i #rs.AddPoint( rs.EvaluateCurve( crv, para) ) planeX = rs.CurvePerpFrame( crv, para) circ = rs.AddCircle(planeX, rad) coords = rs.DivideCurve( circ, circDvisions, 0) allCoords.append( coords ) spante = rs.AddCurve( coords[0: int(circDvisions*0.5)] ) rs.ObjectPrintWidth( spante,0.5) midPt = rs.CurveMidPoint( spante ) midPtXY0 = [midPt[0], midPt[1], 0.0] #Meine Stuetzen if i%4==0: stuetze = rs.AddCurve( [midPt, midPtXY0] ) rs.ObjectPrintWidth(stuetze,3) para = rs.CurveClosestPoint(unoTopCrv, midPt) ptTop = rs.EvaluateCurve(unoTopCrv, para) ptBase = rs.EvaluateCurve(unoBaseCrv, rs.CurveClosestPoint(unoBaseCrv, midPt)) geruest =rs.AddCurve( [ptBase, midPt, ptTop], 1) rs.ObjectPrintWidth( geruest, 1) rs.ObjectColor(bretter, [255,255,0]) #Farbe fuer meine Wasserrutsche ist Lila i=0 for i in range(0, circDvisions): coords = [] for circCoordList in allCoords: pX = circCoordList[i] coords.append( pX ) crv=rs.AddCurve( coords ) rs.ObjectColor( crv, [128,0,128] ) #____________________________:here you end ################################### dm.zA( proz=0.95 ) rs.EnableRedraw(1) ### 4 the MACs #dm.printDisplay(1) dm.newEmptyLayer("Default")