import rhinoscriptsyntax as rs import random as ran # delete everything and start from scratch rs.DeleteObjects(rs.AllObjects()) rs.EnableRedraw(False) # defining variables rad = 20 # radius of the tower hgt = 172 # height of the tower angle = 25 # twist angle # generating the main body of the tower : # base shape of the tower base_crv = rs.AddPolyline([[0,0,0], [0,20,0], [18,29,0], [36,20,0], [36,0,0], [18,-9,0], [0,0,0]], None) base_crv_srf = rs.AddPlanarSrf(base_crv) rail_1 = rs.AddLine([18,10,0],[18,10,170]) upper_crv=rs.CopyObject(base_crv, (0,0,170)) rs.RotateObject(upper_crv, [18,10,0], 360*0.4) rs.AddLine([0,0,0],[36,20,0]) len=rs.Distance([0,0,0],[36,20,0]) spi=rs.AddSpiral([18,10,0],[18,10,150], 150*(1/0.4), 0.4, len/2) rs.RotateObject(spi, [18,10,0],30) body=rs.AddSweep2((spi,rail_1),(base_crv, upper_crv)) rs.CapPlanarHoles(body) # splittimg the main body box=rs.AddBox(([0,0,0],[70,0,0], [70,70,0], [0,70,0],[0,0,8],[70,0,8], [70,70,8], [0,70,8])) rs.MoveObject(box, [-20,-20,125]) rs.BooleanDifference(body, box) rs.DeleteObjects((base_crv, upper_crv)) """ # create the columns base_circ = rs.AddCircle([18,10,0],14) small_circ = rs.AddCircle([0,0,0], 1) pts = rs.DivideCurve(base_circ, 10, True, True) #col_circs = rs.MoveObject(small_circ, pts) for i in range(10): col_circs = rs.CopyObject(small_circ, pts) cols = rs.ExtrudeCurves(col_circs, rail_1) """ # create the plinth: # small cylindric plinth rs.AddCylinder([18,10,0], -15, 19, True) # larger cylindric plinth rs.AddCylinder([18,10,-15], -30, 25, True) # cubic plinth rs.AddBox(([-10,38,-45],[46,38,-45],[46,-18,-45],[-10,-18,-45],[-10,38,-65],[46,38,-65],[46,-18,-65],[-10,-18,-65])) # create the side part of the tower help_pt1 = rs.AddPoint([0,10,0]) help_pt2 = rs.AddPoint([0,10,170]) rail_side1 = rs.AddPolyline((help_pt1, help_pt2), None) rs.DeleteObjects((help_pt1,help_pt2)) rect = rs.AddPolyline(([3,5,-15], [-7,5,-15], [-7,15,-15], [3,15,-15], [3,5,-15]), None) rect2 = rs.CopyObject(rect, [0,0,185]) lower_p = rs.AddSweep1(rail_side1, (rect, rect2), True) rs.CapPlanarHoles(lower_p) rs.MoveObjects((lower_p,rail_side1,rect,rect2), [4,0,0]) rail_side2 = rs.AddPolyline(([-7,10,170],[5,10,170]),None) rect3 = rs.AddPolyline(([-7,5,170],[-7,15,170],[-7,15,180],[-7,5,180],[-7,5,170]),False) rect4 = rs.CopyObject(rect3, [12,0,0]) upper_p = rs.AddSweep1(rail_side2, (rect3,rect4), True) rs.MoveObjects((upper_p,rail_side2,rect3,rect4),[4,0,0]) rs.CapPlanarHoles(upper_p) # create top part of the tower # larger cylinder rs.AddCylinder([18,10,170],15,10,True) # smaller cylinder rs.AddCylinder([18,10,185],10,7,True) # details: # glass elements