import rhinoscriptsyntax as rs import random as ran import fantastic_stairs_lib as fs reload(fs) # delete everything and start from scratch rs.DeleteObjects(rs.AllObjects()) def make_v_grid(x_cnt,z_cnt,xsize,zsize,l_len): pts=[] lines=[] for i in range(x_cnt): for j in range(z_cnt): lines.append(rs.AddLine([i*xsize,0,j*zsize],[i*xsize,l_len,j*zsize] )) pts.append(rs.AddPoint([i*xsize,0,j*zsize])) return(pts,lines) x_cnt, z_cnt, xsize, zsize = 3, 4, 4.0, 4.0 l_len = 1.0 dist_x, dist_y, dist_z = 20, 20, 0 angle=ran.uniform(90,180) (pts1, lines1) = make_v_grid(x_cnt,z_cnt,xsize,zsize,l_len) rs.RotateObjects(pts1, [0,0,0], angle, [0,0,1]) rs.RotateObjects(lines1, [0,0,0], angle, [0,0,1]) rs.MoveObjects(pts1, (dist_x, dist_y, dist_z)) rs.MoveObjects(lines1, (dist_x, dist_y, dist_z)) (pts2, lines2) = make_v_grid(x_cnt,z_cnt,xsize,zsize,l_len) ptl1 = range(0, len(pts1)) ptl2 = range(0, len(pts2)) print ptl1 print ptl2 crv_list = [] while len(ptl1 ) > 0: r_init = ran.randint(0,len(ptl1)-1) # indexwert anfangspunkt r_end = ran.randint(0,len(ptl2)-1) # indexwert endpunkt init = lines1[ptl1[r_init]] end = lines2[ptl2[r_end]] #rs.AddLine(init,end) crv_list.append(fs.blend_curves(init, end, 2)) ptl1.pop(r_init) ptl2.pop(r_end) #print ptl1 #print ptl2 for curve in crv_list: (st_crv, tothgt) = fs.curve_to_stairline(curve) len_c = rs.CurveLength(st_crv) if tothgt <= zsize: fs.make_curved_ramp(st_crv, tothgt) else: (steps,th) = fs.calculate_steps_height(tothgt) An=0 tt = (len_c-An)/steps if tt>0.32: tt = fs.tt P = steps/2 P = 4 pod_l = fs.calculate_podlen(len_c, tt, steps, P, An) print "stair values (length, tread height, tread depth, steps", len_c, th, tt, steps fs.make_curved_podeststair(st_crv, steps=steps, th=th, tt=tt, pod_l=pod_l, P=P, An=An, DC=steps+1, s_width=1.2)