print" ADA Lovelace Fibonaccihaus mit ADA Fassade" print" " print "____________ $$$$$$$$$$$$" print "_________ $$$$____________$$$" print "_______ $$_____$$$$$$$$$_____$$" print "_____ $$$____$$$$____$$$$______$$$" print "____ $$_____$$$_________$$$_____$$" print "____ $$____$$$___________$$$______$$$" print "____ $_____$_____$$$$$_____$$______$$$" print "____ $_____$$____$$__$_____$$$_____$$$$" print "_____ $_____$$______$$_____$$$______$$" print "______$ _____$$$___$$_____$$$$" print "_______$ _______$$$______$$$" print "________$$$$ __________$$$$" print " " print "DM2 Final Project by Tanja Konrad" ############################## import rhinoscriptsyntax as rs import random, time, sys, os ### sys.path.append("P:/") ### add path where "DM_lib.py" can be found !!! sys.path.append("P:/WWW/tkonrad/DM2/") import DM_lib as dm ### reload(dm) import Rhino import scriptcontext as sc ############################## ################### rs.ViewDisplayMode(view=None, mode="rendered") rs.EnableRedraw(0) dm.printDisplay(1) dm.newEmptyLayer("FIBONACCI::ADA", [0,0,0]) ################### #dm.getCameraTarget() dm.setCameraTarget( [-40.98986702, 10.95630827, 38.13359588], [5.4364466, 11.92821094, 2.88615249], lens=50.0, rota=0, upVec=[0.6044692058545058,0.012654143537115987,0.7965279981425418] ) # ... danke, andi ! rs.EnableRedraw(0) ### ag #dm.eA() rs.Redraw() #Colors #blau blue = [28,134,238] #grau grey = [80,80,80] n = 5 a = b = 1 fibReihe = [a,b] for i in range(n): c = a+b a = b b = c fibReihe.append(c) #print "fibi =", fibReihe origin = [0,0,0] dm.newEmptyLayer("FIBI", [0,0,0]) #Fibonacci-Rechtecke und Kurven for i,fibi in enumerate(fibReihe): rect = rs.AddRectangle([origin, [fibi,origin[1],origin[2]], [origin[0],fibi,origin[2]]], fibi, fibi) rs.RotateObject(rect, origin, -90, [0,0,1]) rs.ObjectName( rect, "fibi_"+str(i) ) if i: p0 = rs.CurveEditPoints(rs.ObjectsByType(4)[0])[(i-0)%4-0] p1 = rs.CurveEditPoints(rs.ObjectsByType(4)[1])[(i+1)%4-0] rs.MoveObject(rs.ObjectsByType(4)[0], rs.VectorSubtract(p1, p0)) fibis = rs.ObjectsByName("fibi_*", 0) ### ag fibis.reverse() #print "len(fibis)", len(fibis) rota = 0 spiraCoords=[] floor = 10 base = [] top = [] top2 = [] base2 = [] div = 10-2^i curveOffset = -4.0 path = "C:/DM2/DM2/anim-fibi/" #path = "D:/animatzi/TU_tst/" if not os.path.exists(path): os.makedirs(path) framNumber=0 captureIt = 1 if 1:#Basiskurven for i,crv in enumerate(fibis[1:]): coords = rs.CurveEditPoints(crv) p0 = dm.pnt2str( coords[0] ) p1 = dm.pnt2str( coords[1] ) p3 = dm.pnt2str( coords[3] ) rs.Command("Arc "+str(p0)+" "+str(p1)+" "+str(p3)+" enter", 0) rs.RotateObject(rs.AllObjects()[0], dm.pntCentroid(coords[0:4]), rota+180*(0)) rota += 90 coords = rs.CurveEditPoints(rs.AllObjects()[0]) base_arc = rs.AddArc3Pt(coords[0], coords[2], coords[1]) base_arcOffset = rs.OffsetCurve( base_arc, origin, 0.0000001 )[0] coords_base_arc = rs.DivideCurve(base_arcOffset, div, 0) base.extend(coords_base_arc) coords[0][2]=fibReihe[i-0] coords[1][2]=fibReihe[i-0]+(fibReihe[i+1]-fibReihe[i-0])*0.5 coords[2][2]=fibReihe[i+1] top_arc = rs.AddArc3Pt(coords[0], coords[2], coords[1]) top_arcOffset = rs.OffsetCurve( top_arc, [0,0,0], 0.0000001 )[0] coords_top_arc = rs.DivideCurve(top_arcOffset, div, 0) rs.ObjectColor( top_arcOffset, grey) top.extend(coords_top_arc) i = 0 coords[0][2]=i#fibReihe[i-0] coords[1][2]=i#fibReihe[i-0]+(fibReihe[i+1]-fibReihe[i-0])*0.5 coords[2][2]=i#fibReihe[i+1] arc = rs.AddArc3Pt(coords[0], coords[2], coords[1]) base2Offset = rs.OffsetCurve( arc, origin, curveOffset ) coordsC2 = rs.DivideCurve(base2Offset, div, 0) base2.extend(coordsC2) if i==0: coords[0][2]=0 coords[1][2]=0.5 coords[2][2]=1 rs.ObjectColor(rs.AllObjects()[0], grey) spiraCoords.extend( coords[1:3]) rs.DeleteObject(base_arc) rs.DeleteObject(base_arcOffset) rs.DeleteObject(top_arc) rs.DeleteObjects(fibis) baseCurve = rs.AddCurve(base,1) rs.ObjectColor(baseCurve,grey) # print "len",rs.CurveLength(baseCurve) hoehe = 1 allCoords = [] lin_out_mids = [] anzSegments = 90 seg_innen = 40 #Fassadengeruest innere Schnecke #Unterscheidung innen-aussen damit innen nicht soviel auskragt for i in range(seg_innen): pBase2 = base2[i] pTop = top[i] pBase = base[i] lin_out = rs.AddLine(pBase2,pTop) #Linie aussen lin_mid = rs.AddLine(pBase,pTop) vecRadial = rs.VectorUnitize(pBase) if hoehe == 15: hoehe = 15 else: hoehe = hoehe + 0.2 p1 = rs.VectorAdd(pBase, [0,0,hoehe]) p1 = rs.VectorAdd(p1, rs.VectorScale(vecRadial, -i/40-5.0)) p2 = rs.VectorAdd(pBase, [0,0,2]) p2 = rs.VectorAdd(p2, rs.VectorScale(vecRadial, -i/40-2)) lin_out = rs.AddLine(pBase2,pTop) #Linie aussen lin_out = rs.DivideCurve(lin_out, 10,0) crv = rs.AddCurve( [ pBase, p2, p1, pTop ], 2 ) coords = rs.DivideCurve( crv, div, 0) # rs.ObjectColor( crv , [255,0,0] ) rs.ObjectPrintWidth( crv , 0.05 ) rs.DeleteObject( crv ) allCoords.append( coords ) #Fassadengeruest weiter aussen for i in range(seg_innen,anzSegments): pBase = base[i] pTop = top[i] pBase2 = base2[i] anzfotos = 14 vecRadial = rs.VectorUnitize(pBase) if hoehe == 15: hoehe = 15 else: hoehe = hoehe + 0.2 woelbung1 = -6.0 woelbung2 = -3.0 p1 = rs.VectorAdd(pBase, [0,0,hoehe]) p1 = rs.VectorAdd(p1, rs.VectorScale(vecRadial, woelbung1)) p2 = rs.VectorAdd(pBase, [0,0,2]) p2 = rs.VectorAdd(p2, rs.VectorScale(vecRadial, woelbung2)) lin_out = rs.AddLine(pBase2,pTop) #Linie aussen lin_out = rs.DivideCurve(lin_out, 10,0) crv = rs.AddCurve( [ pBase, p2, p1, pTop ], 2 ) coords = rs.DivideCurve( crv, div, 0) rs.ObjectPrintWidth( crv , 0.05 ) rs.DeleteObject( crv ) allCoords.append( coords ) if 1: ### DM2_nerd^2 : AddArc3Pt for i in range( anzfotos-0 ): rs.Redraw() nam = dm.makeName("FIBI", frameNumber=framNumber, anzahl=4, format='jpg') if captureIt: rs.Command("-viewCaptureToFile Width=960 Height=540 Scale=2 DrawCPlaneAxes=No TransparentBackground=No "+path+nam+" ", 0) framNumber +=1 #ADA Fassade for j in range(anzSegments-0): p0 = allCoords[j%anzSegments][i] #Um Zacken herausstehen zu lassen # pout = rs.VectorAdd(p0, rs.VectorScale(vecRadial, -1.0)) p1 = allCoords[j%anzSegments][i+1] p2 = allCoords[(j+1)%anzSegments][i+1] p3 = allCoords[(j+1)%anzSegments][i+0] pMid12 = dm.pntInbetween(p1,p2) pMid23 = dm.pntInbetween(p2,p3) pMid3 = dm.pntInbetween(pMid12,p3) pMid1 = dm.pntInbetween(pMid12,p0) pMid2 = dm.pntInbetween(pMid12,pMid1) pMid03 = dm.pntInbetween(p0,p3) pMid030 = dm.pntInbetween(pMid03,p0) pMid = dm.pntInbetween(p0,p2) pMid01 = dm.pntInbetween(p0,p1) pMid012 = dm.pntInbetween(p0,pMid12) pMid00 = dm.pntInbetween(p0,pMid012) pMid123 = dm.pntInbetween(pMid12,p3) pMid11 = dm.pntInbetween(pMid12,p1) if random.random() < 0.5: if j == anzSegments-1:#89: lin = rs.ObjectColor(rs.AddLine(p0,lin_out[0]),grey) else: lin = rs.ObjectColor(rs.AddLine( p0, pMid12 ),grey) lin = rs.ObjectColor(rs.AddLine(pMid12,p3),grey) lin = rs.ObjectColor(rs.AddLine(p3,p0),blue) lin = rs.ObjectColor(rs.AddLine(pMid3,pMid),grey) lin = rs.ObjectColor(rs.AddLine(pMid,pMid030),grey) lin = rs.ObjectColor(rs.AddLine(pMid,pMid2),grey) lin = rs.ObjectColor(rs.AddLine(p1,p2),blue) lin = rs.ObjectColor(rs.AddLine(pMid01,pMid00),blue) lin = rs.ObjectColor(rs.AddLine(pMid23,pMid123),blue) lin = rs.ObjectColor(rs.AddLine(pMid11,pMid01),blue) elif j == anzSegments-1:#89: lin = rs.ObjectColor(rs.AddLine(p0,lin_out[0]),grey) else: lin_re = rs.AddLine( p0, pMid12 ) lin_base = rs.AddLine( p0, p3 ) lin_div_re = rs.DivideCurve(lin_re,10,0) lin_div_base = rs.DivideCurve(lin_base,10,0) for a in range(0,10): rs.AddLine( lin_div_re[9-a],lin_div_base[a]) lin = rs.ObjectColor(rs.AddLine( p3, pMid12 ),blue) lin = rs.ObjectColor(rs.AddLine( p2, p1 ),blue) lin = rs.ObjectColor(rs.AddLine(pMid01,pMid00),blue) lin = rs.ObjectColor(rs.AddLine(pMid23,pMid123),blue) lin = rs.ObjectColor(rs.AddLine(pMid11,pMid01),blue) #posInLondon = [-14593.209,69045.226] allFibiObjects = rs.ObjectsByLayer("FIBI", 0) #movVec =rs.VectorSubtract(posInLondon, [0,0,0] ) #print movVec #rs.MoveObjects(allFibiObjects, movVec) #rs.AddLine( [0,0,0], posInLondon )