import rhinoscriptsyntax as rs import random as ran import fantastic_stairs_lib as fs rs.DeleteObjects(rs.AllObjects()) crl=rs.AddCircle([0,0,0],0.5) circle = rs.FirstObject(select=False) rs.ExtrudeCurveStraight(crl, [0,0,0], [0,0,33]) srf = rs.FirstObject(select=False) rs. CapPlanarHoles(srf) #stair crv = rs.AddSpiral([0,0,0], [0,0,1], 0, 8, 1) fs.make_curved_stair(crv, th=0.176470588, steps=119) #platform platform_radius = 5 platform_thickness = 0.5 hole_radius = 1.6 platform_height = 20.5 oc = rs.AddCircle([2, 0, platform_height], platform_radius) ic = rs.AddCircle([0, 0, platform_height], hole_radius) oc_pl=rs.ExtrudeCurveStraight((oc),[0,0,platform_height], [0,0,platform_height+platform_thickness]) ic_pl=rs.ExtrudeCurveStraight((ic),[0,0,platform_height], [0,0,platform_height+platform_thickness]) rs.CapPlanarHoles(oc_pl) rs.CapPlanarHoles(ic_pl) rs.BooleanDifference(oc_pl,ic_pl,delete_input=True) #handrail crv1 = rs.AddSpiral([0, 0, 0], [0, 0, 21], 3.6, 5.5, 1.6) crv2 = rs.CopyObject(crv1, [0, 0, 1.2]) if crv1 and crv2: rs.AddLoftSrf([crv1, crv2]) #double handrail crv3 = rs.AddSpiral([0, 0, 0], [0, 0, 1.2], 3.6, 0.75, 1.6) crv4 = rs.CopyObject(crv3, [0, 0, 2.4]) if crv3 and crv4: rs.AddLoftSrf([crv3, crv4]) #other handrail oc2 = rs.CopyObject(oc,[0,0,1.2]) if oc and oc2: rs.AddLoftSrf([oc, oc2]) ic2 = rs.CopyObject(ic,[0,0,1.2]) if ic and ic2: rs.AddLoftSrf([ic, ic2]) #upper part u_circle_center = [0, 0, 29] u_circle_radius = 2.5 uc = rs.AddCircle(u_circle_center, u_circle_radius) ''' rs.ExtrudeCurveStraight(uc, u_circle_center, [0, 0, 29.5]) ''' num_rod = 40 pts = rs.DivideCurve(uc, num_rod) for i in range(len(pts)): start_point = pts[i] end_point = [start_point[0], start_point[1], start_point[2] + 0.5] rod_line = rs.AddLine(start_point, end_point) rs.AddPipe(rod_line, 0, 0.05) top_circle = rs.AddCircle([u_circle_center[0], u_circle_center[1], u_circle_center[2] + 0.5], u_circle_radius) bottom_circle = rs.AddCircle(u_circle_center, u_circle_radius) rs.AddPipe(top_circle, 0, 0.03) rs.AddPipe(bottom_circle, 0, 0.03) #pipe num_rods = 6 center_point = [0, 0, 29] points_on_circle = rs.DivideCurve(uc, num_rods, create_points=True, return_points=True) for point in points_on_circle: rod_line = rs.AddLine(point, center_point) rs.AddPipe(rod_line, 0, 0.1) #middle part m_circle_center = [-1, 0, 25] m_circle_radius = 3 mc = rs.AddCircle(m_circle_center, m_circle_radius) rs.ExtrudeCurveStraight(mc, m_circle_center, [-1, 0, 25.5]) pts = rs.DivideCurve(mc, 8, create_points=True, return_points=True) #pipe pts1 = rs.DivideCurve(mc, 8, create_points=True, return_points=True) for point in pts1: rod_line = rs.AddLine([0, 0, 25], [point[0], point[1], 25]) rs.AddPipe(rod_line, 0, 0.1) #column for p in pts: crv = rs.AddCurve([p,(p[0], p[1], 0)],1) rs.AddPipe(crv,0,0.005)