import rhinoscriptsyntax as rs import random as ran import fantastic_stairs_lib as fs # Szene zuruecksetzen rs.DeleteObjects(rs.AllObjects()) rs.EnableRedraw(False) # Zufallsbasierte Treppenkurven generieren spiral_curve = fs.make_random_spiral(12, 9, 70) clover_curve = fs.make_clover2(60, 20, 110, (0, 0, 0)) # Treppen entlang der generierten Kurven erstellen def create_staircase(curve, p_factor, d_factor): len_c = rs.CurveLength(curve) An = 0 P = p_factor mods = (len_c - An) / (P * fs.tt + fs.pod_l + fs.tt) steps = int(mods * P) + 1 fs.make_curved_podeststair(curve, steps=steps, pod_l=fs.pod_l, DC=steps + 1, P=P, An=An) return steps, An, P, len_c spiral_steps, spiral_An, spiral_P, spiral_len_c = create_staircase(spiral_curve, 8, 2) clover_steps, clover_An, clover_P, clover_len_c = create_staircase(clover_curve, 20, 4) # Zusaetzliche strukturelle Elemente entlang der Treppen hinzufuegen def add_supporting_elements(curve, steps, P): i = 1 len_fromstart = P * fs.tt + fs.pod_l / 2 while len_fromstart <= rs.CurveLength(curve): point = rs.CurveArcLengthPoint(curve, len_fromstart) if point: m_l = rs.AddLine(point, [point[0], point[1], i * P * fs.th - fs.thick]) rs.AddPipe(m_l, 0, 0.2) if i % 4 == 0: (box, line) = fs.make_box_wline([point[0], point[1], i * P * fs.th - fs.thick], fs.pod_l, 4.8, fs.thick) param = rs.CurveClosestPoint(curve, point) normal = rs.CurveTangent(curve, param) angle = rs.Angle([0, 0, 0], normal)[0] rs.RotateObject([box, line], [point[0], point[1], i * P * fs.th - fs.thick], angle, [0, 0, 1]) i += 1 len_fromstart += P * fs.tt + fs.pod_l + fs.tt add_supporting_elements(spiral_curve, spiral_steps, spiral_P) add_supporting_elements(clover_curve, clover_steps, clover_P) #cleanup rs.Command("_SelCrv _Enter") crvs=rs.SelectedObjects() rs.DeleteObjects(crvs) rs.EnableRedraw(True) print("Optimierte Treppenkonstruktion generiert!")