import rhinoscriptsyntax as rs import random as ran import flipped_classroom_lib as fc reload(fc) rs.DeleteObjects(rs.AllObjects()) rs.EnableRedraw(False) ############################# # Panel functions ############################# def my_panel(points, scale): rs.AddSrfPt(points) (P0,P1,P2,P3) = points rs.AddLine(P0,P2) d_cen1 = rs.VectorDivide(rs.VectorAdd(P0,P2),2) rs.AddPoint(d_cen1) rs.AddLine(P1,P3) d_cen2 = rs.VectorDivide(rs.VectorAdd(P1,P3),2) rs.AddPoint(d_cen2) center_pt = rs.VectorDivide(rs.VectorAdd(d_cen1, d_cen2),2) rs.AddPoint(center_pt) if not(rs.PointCompare(d_cen1,d_cen2)): rs.AddLine(d_cen1,d_cen2) vec1 = rs.VectorSubtract(P0, center_pt) vec2 = rs.VectorSubtract(center_pt, P3) normal = rs.VectorCrossProduct(vec1,vec2) u_normal = rs.VectorUnitize(normal) su_normal = rs.VectorScale(u_normal, scale) normal_pt = rs.VectorAdd(center_pt, su_normal) rs.AddPoint(normal_pt) rs.AddLine(center_pt, normal_pt) rs.AddSrfPt([P0,normal_pt,P1]) rs.AddSrfPt([P1,normal_pt,P2]) rs.AddSrfPt([P2,normal_pt,P3]) rs.AddSrfPt([P3,normal_pt,P0]) quad = [[0,0,0], [15,0,0], [15,0,15], [0,0,15]] result_list = fc.PEF_pantheon() #result_list = fc.PEF_face_w(15,10,15,20,15,10) #result_list = fc.PEF_single_face(quad) #result_list = fc.PEF_face(9,10,5,4,20) p_list = result_list[0] e_list = result_list[1] ve_list = result_list[2] f_list = result_list[3] zcol = result_list[4] xcol = result_list[5] print "there are " + str(len(p_list)) + " points and " + str(len(f_list)) + " faces on " + str(zcol) + " levels, " + str(xcol) + " per level" if 0: for i in range(zcol): for j in range(xcol): points = f_list[i*xcol+j] #scale = ran.uniform(0,20) my_panel(f_list[i*xcol+j],5) rs.AddSrfPt(f_list[i*xcol+j]) ############################# # experiments ############################# if 0: for i, quad in enumerate(f_list): if i%4: rs.AddSrfPt(quad) if 1: for i in range(zcol): for j in range(xcol): if(i-j)%2: rs.AddSrfPt(f_list[i*xcol+j]) if 0: for i in range(zcol): for j in range(xcol): points = f_list[i*xcol+j] (P0,P1,P2,P3) = points cpoints = [P0,P1,P2,P3,P0] plinea = rs.AddCurve(cpoints,2) if 1: for i in range(zcol): for j in range(xcol): if i != zcol/3 and i != zcol-2: points = f_list[i*xcol-j] #scale = ran.uniform(0,10) my_panel(f_list[i*xcol+j],15) else: rs.AddSrfPt(ve_list[i*xcol-j])