#DM2 Final #Melissa Schnell #Gruppe Gruber 01 ############################## import rhinoscriptsyntax as rs import random, time, sys ### sys.path.append("P:/") ### sys.path.append("P:/WWW\kleeblaettchen04") ### import DM_lib as dm ### import math #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.ViewDisplayMode(rs.CurrentView(), "rendered") 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) dm.newEmptyLayer("myPROJ", [0,0,0]) rs.Redraw() ###Grundform Kuppel ------------------------------------ ###Hoehe = 24m, Radius = 20m def Kreis( rad = 20, mid = (0,0,0), circDiv = 20): circ = rs.AddCircle(mid, rad) rs.ObjectPrintWidth(circ, 0.5) rs.ObjectColor(circ, [139,115,85]) deltaAng = 360/circDiv circsegments=rs.DivideCurve(circ, circDiv, False) return circsegments if 0: circDiv = 20 circ1= Kreis( rad = 20.00, mid = (0,0,0), circDiv = circDiv) circ2= Kreis( rad = 18.69, mid = (0,0,3), circDiv = circDiv) circ3= Kreis( rad = 17.24, mid = (0,0,6), circDiv = circDiv) circ4= Kreis( rad = 15.66, mid = (0,0,9), circDiv = circDiv) circ5= Kreis( rad = 13.91, mid = (0,0,12), circDiv = circDiv) circ6= Kreis( rad = 11.54, mid = (0,0,16), circDiv = circDiv) circ7= Kreis( rad = 7.78, mid = (0,0,20), circDiv = circDiv) circ8= Kreis( rad = 2.00, mid = (0,0,24), circDiv = circDiv) for i in range(circDiv): raster = rs.AddCurve([circ1 [i], circ2 [i], circ3 [i], circ4 [i], circ5 [i], circ6 [i], circ7 [i], circ8 [i]],2) rs.ObjectPrintWidth(raster, 0.5) rs.ObjectColor(raster, [139,115,85]) anzSegments = 20*1 anzDivi = 8 hoehe = 24.0 baseCirc = rs.AddCircle([0,0,0], 20.0) topCirc = rs.AddCircle([0,0,hoehe], 2.0) baseCoords = rs.DivideCurve(baseCirc, anzSegments, 0) topCoords = rs.DivideCurve(topCirc, anzSegments, 0) #rs.AddLine( [0,0,0], [0,0,hoehe]) allCoords = [] for i in range(anzSegments): pBase = baseCoords[i] pTop = topCoords[i] vecRadial = rs.VectorUnitize(pBase) p1 = rs.VectorAdd(pBase, [0,0,hoehe]) p1 = rs.VectorAdd(p1, rs.VectorScale(vecRadial, -12.0)) crv = rs.AddCurve( [ pBase, p1, pTop ], 2 ) coords = rs.DivideCurve( crv, anzDivi, 1) rs.ObjectColor( crv , [139,115,85] ) rs.ObjectPrintWidth( crv , 0.5 ) #rs.DeleteObject( crv ) #print coords # coords_1 = coords[0] hier wollte ich die horizontalen unterteilungen machen, es hat aber nicht funktioniert, ich verstehe nicht warum :( # #print coords_1 coords_2 = coords [1] # print coords_2 # rs.AddCurve(coords_1 , 2) # rs.AddCurve(coords_2 ,1) allCoords.append( coords ) print len(allCoords), ########## ### schema: for i in range(anzSegments-0): coords = [] for j in range(anzDivi+1): k=(i+j)%anzSegments coords.append( allCoords[k][j] ) #rs.ObjectColor( rs.AddCurve( coords, 7 ), [200,200,0]) #rs.AddPoints( coords ) if 1: for i in range(anzSegments-0): coords = [] coordsA = [] for j in range(anzDivi+1): k = i+j k = k%anzSegments cor = allCoords[k][j] coords.append(cor) vec = rs.VectorScale( rs.VectorUnitize(cor), j*0.2) coordsA.append( rs.VectorAdd(cor, vec)) if i%2==0: crvU = rs.AddCurve( coords ) crvA=rs.AddCurve( coordsA ) rs.ObjectColor(crvA, [0,0,0]) rs.AddCurve( [coords[-1], coordsA[-1]] ) coordsVorne=[] coordsHinten = [] ang = 0 angPlus = 4 for x,vec in enumerate(coordsA): if x< (anzDivi*0.5)+1: if x: ang += angPlus else: ang -= angPlus coordsVorne.append( rs.VectorRotate( vec, ang, [0,0,1]) ) coordsHinten.append( rs.VectorRotate( vec, -ang, [0,0,1]) ) crvV = rs.AddCurve( coordsVorne ) rs.ObjectColor(crvV, [220,0,20]) crvH = rs.AddCurve( coordsHinten ) rs.ObjectColor(crvV, [120,0,220]) rs.ObjectColor( rs.AddTweenCurves(crvU, crvV, 8), [100,100,255]) rs.ObjectColor( rs.AddTweenCurves(crvA, crvH, 8), [200,100,200])