import rhinoscriptsyntax as rs import random as ran allobjs = rs.AllObjects() rs.DeleteObjects(allobjs) #rs.EnableRedraw(False) ##################################### start1 = [0,0,0] start2 = [30,0,0] xdi=1 ydi=1 zdi=1 ##Segeldach## def make_segel1(start1=start1, start2=start2): ur_s = rs.AddSphere([0,0,0],70) crv = rs.AddCircle3Pt([-70,0,0], [0,0,70], [70,0,0]) my_pts = rs.DivideCurve(crv, 20, False, True) ################################################ line1= rs.AddLine(start1, my_pts[3]) line2= rs.AddLine(start1, my_pts[7]) crv_new= rs.AddArc3Pt(my_pts[3] ,my_pts[7], my_pts[5]) schale= rs.JoinCurves((line1, line2, crv_new), True) rs.MoveObject(schale, [0,-70,0]) ##auf kugel projezieren## p_schale= rs.PullCurve(ur_s, schale) p_schale= rs.JoinCurves(p_schale, True) ##ausschneiden## rs.Command("_Split _SelID {} _Enter _SelID {} _Enter".format(ur_s, p_schale[0]),True) my_segment = rs.FirstObject() rs.DeleteObject(rs.NextObject(my_segment)) ##mirror## points = rs.CurvePoints(p_schale) my_seg= rs.MirrorObject(my_segment, points[0], points[5], copy=True) s1= my_segment, my_seg rs.ScaleObject(s1, [0,0,0], [0.7,0.7,0.7]) rs.MoveObject(s1, [0,-14.8,-2]) rs.RotateObject(s1, [0,0,0], 10) ################################################ rs.DeleteObjects([schale,crv,p_schale]) ################################################ line= rs.AddLine([0,0,0], [0,0,-5]) seg1= rs.ExtrudeSurface(my_segment, line) seg2= rs.ExtrudeSurface(my_seg, line) rs.DeleteObjects([my_segment, my_seg]) return(seg1, seg2) def make_segel2(start1=start1, start2=start2): ur_s = rs.AddSphere([0,0,0],70) crv = rs.AddCircle3Pt([-70,0,0], [0,0,70], [70,0,0]) my_pts = rs.DivideCurve(crv, 20, False, True) ################################################ line1= rs.AddLine(start2, my_pts[5]) line2= rs.AddLine(start2, my_pts[7]) crv_new= rs.AddArc3Pt(my_pts[5] ,my_pts[7], my_pts[6]) schale= rs.JoinCurves((line1, line2, crv_new), True) rs.MoveObject(schale, [0,-70,0]) ##auf kugel projezieren## p_schale= rs.PullCurve(ur_s, schale) p_schale= rs.JoinCurves(p_schale, True) ##ausschneiden## rs.Command("_Split _SelID {} _Enter _SelID {} _Enter".format(ur_s, p_schale[0]),True) my_segment = rs.FirstObject() rs.DeleteObject(rs.NextObject(my_segment)) ##mirror## points = rs.CurvePoints(p_schale) my_seg= rs.MirrorObject(my_segment, points[0], points[5], copy=True) s2= my_segment, my_seg rs.RotateObject(s2, [0,0,0], 8, [0,1,0]) rs.MoveObject(s2, [3.5,0,0]) rs.RotateObject(s2, [0,0,0], 10) ################################################ rs.DeleteObjects([schale,crv,p_schale]) ################################################ line= rs.AddLine([0,0,0], [0,0,-5]) seg3= rs.ExtrudeSurface(my_segment, line) seg4= rs.ExtrudeSurface(my_seg, line) rs.DeleteObjects([my_segment, my_seg]) return(seg3, seg4) def make_segel3(start1=start1, start2=start2): ur_s = rs.AddSphere([0,0,0],70) crv = rs.AddCircle3Pt([-70,0,0], [0,0,70], [70,0,0]) my_pts = rs.DivideCurve(crv, 20, False, True) ################################################ line1= rs.AddLine(start2, my_pts[5]) line2= rs.AddLine(start2, my_pts[9]) crv_new= rs.AddArc3Pt(my_pts[5] ,my_pts[9], my_pts[6]) schale= rs.JoinCurves((line1, line2, crv_new), True) rs.MoveObject(schale, [0,-70,0]) ##auf kugel projezieren## p_schale= rs.PullCurve(ur_s, schale) p_schale= rs.JoinCurves(p_schale, True) ##ausschneiden## rs.Command("_Split _SelID {} _Enter _SelID {} _Enter".format(ur_s, p_schale[0]),True) my_segment = rs.FirstObject() rs.DeleteObject(rs.NextObject(my_segment)) ##mirror## points = rs.CurvePoints(p_schale) my_seg= rs.MirrorObject(my_segment, points[0], points[5], copy=True) s3= my_segment, my_seg rs.ScaleObject(s3, [0,0,0], [1.3,1.3,1.3]) rs.RotateObject(s3, [0,0,0], 8, [0,1,0]) rs.MoveObject(s3, [17,15,3]) rs.RotateObject(s3, [0,0,0], 10) ################################################ rs.DeleteObjects([schale,crv,p_schale]) ################################################ line= rs.AddLine([0,0,0], [0,0,-5]) seg5= rs.ExtrudeSurface(my_segment, line) seg6= rs.ExtrudeSurface(my_seg, line) rs.DeleteObjects([my_segment, my_seg]) return(seg5, seg6) def make_segel4(start1=start1, start2=start2): ur_s = rs.AddSphere([0,0,0],70) crv = rs.AddCircle3Pt([-70,0,0], [0,0,70], [70,0,0]) my_pts = rs.DivideCurve(crv, 20, False, True) ################################################ line1= rs.AddLine(start1, my_pts[2]) line2= rs.AddLine(start1, my_pts[6]) crv_new= rs.AddArc3Pt(my_pts[2] ,my_pts[6], my_pts[5]) schale= rs.JoinCurves((line1, line2, crv_new), True) rs.MoveObject(schale, [0,-70,0]) ##auf kugel projezieren## p_schale= rs.PullCurve(ur_s, schale) p_schale= rs.JoinCurves(p_schale, True) ##ausschneiden## rs.Command("_Split _SelID {} _Enter _SelID {} _Enter".format(ur_s, p_schale[0]),True) my_segment = rs.FirstObject() rs.DeleteObject(rs.NextObject(my_segment)) ##mirror## points = rs.CurvePoints(p_schale) my_seg= rs.MirrorObject(my_segment, points[0], points[5], copy=True) s4= my_segment, my_seg rs.ScaleObject(s4, [0,0,0], [.6,.6,.6]) rs.MoveObject(s4, [106,-19.5,-3]) rs.RotateObject(s4, [0,0,0], 10) ################################################ rs.DeleteObjects([schale,crv,p_schale]) ################################################ line= rs.AddLine([0,0,0], [0,0,-5]) seg7= rs.ExtrudeSurface(my_segment, line) seg8= rs.ExtrudeSurface(my_seg, line) rs.DeleteObjects([my_segment, my_seg]) return(seg7, seg8) def make_segel5(start1=start1, start2=start2): ur_s = rs.AddSphere([0,0,0],70) crv = rs.AddCircle3Pt([-70,0,0], [0,0,70], [70,0,0]) my_pts = rs.DivideCurve(crv, 20, False, True) ################################################ line1= rs.AddLine(start1, my_pts[3]) line2= rs.AddLine(start1, my_pts[7]) crv_new= rs.AddArc3Pt(my_pts[3] ,my_pts[7], my_pts[5]) schale= rs.JoinCurves((line1, line2, crv_new), True) rs.MoveObject(schale, [0,-70,0]) ##auf kugel projezieren## p_schale= rs.PullCurve(ur_s, schale) p_schale= rs.JoinCurves(p_schale, True) ##ausschneiden## rs.Command("_Split _SelID {} _Enter _SelID {} _Enter".format(ur_s, p_schale[0]),True) my_segment = rs.FirstObject() rs.DeleteObject(rs.NextObject(my_segment)) ##mirror## points = rs.CurvePoints(p_schale) my_seg= rs.MirrorObject(my_segment, points[0], points[5], copy=True) s5= my_segment, my_seg rs.ScaleObject(s5, [0,0,0], [0.55,0.55,0.55]) rs.MoveObject(s5, [3,38,-2]) rs.RotateObject(s5, [0,0,0], -15) ################################################ rs.DeleteObject(schale) rs.DeleteObject(crv) rs.DeleteObject(p_schale) ################################################ line= rs.AddLine([0,0,0], [0,0,-5]) seg9= rs.ExtrudeSurface(my_segment, line) seg10= rs.ExtrudeSurface(my_seg, line) rs.DeleteObjects([my_segment, my_seg]) return(seg9, seg10) def make_segel6(start1=start1, start2=start2): ur_s = rs.AddSphere([0,0,0],70) crv = rs.AddCircle3Pt([-70,0,0], [0,0,70], [70,0,0]) my_pts = rs.DivideCurve(crv, 20, False, True) ################################################ line1= rs.AddLine(start2, my_pts[5]) line2= rs.AddLine(start2, my_pts[7]) crv_new= rs.AddArc3Pt(my_pts[5] ,my_pts[7], my_pts[6]) schale= rs.JoinCurves((line1, line2, crv_new), True) rs.MoveObject(schale, [0,-70,0]) ##auf kugel projezieren## p_schale= rs.PullCurve(ur_s, schale) p_schale= rs.JoinCurves(p_schale, True) ##ausschneiden## rs.Command("_Split _SelID {} _Enter _SelID {} _Enter".format(ur_s, p_schale[0]),True) my_segment = rs.FirstObject() rs.DeleteObject(rs.NextObject(my_segment)) ##mirror## points = rs.CurvePoints(p_schale) my_seg= rs.MirrorObject(my_segment, points[0], points[5], copy=True) s6= my_segment, my_seg rs.RotateObject(s6, [0,0,0], 8, [0,1,0]) rs.ScaleObject(s6, [0,0,0], [.85,.85,.85]) rs.MoveObject(s6, [4,53,0]) rs.RotateObject(s6, [0,0,0], -15) ################################################ rs.DeleteObject(schale) rs.DeleteObject(crv) rs.DeleteObject(p_schale) ################################################ line= rs.AddLine([0,0,0], [0,0,-5]) seg11= rs.ExtrudeSurface(my_segment, line) seg12= rs.ExtrudeSurface(my_seg, line) rs.DeleteObjects([my_segment, my_seg]) return(seg11, seg12) def make_segel7(start1=start1, start2=start2): ur_s = rs.AddSphere([0,0,0],70) crv = rs.AddCircle3Pt([-70,0,0], [0,0,70], [70,0,0]) my_pts = rs.DivideCurve(crv, 20, False, True) ################################################ line1= rs.AddLine(start2, my_pts[5]) line2= rs.AddLine(start2, my_pts[9]) crv_new= rs.AddArc3Pt(my_pts[5] ,my_pts[9], my_pts[6]) schale= rs.JoinCurves((line1, line2, crv_new), True) rs.MoveObject(schale, [0,-70,0]) ##auf kugel projezieren## p_schale= rs.PullCurve(ur_s, schale) p_schale= rs.JoinCurves(p_schale, True) ##ausschneiden## rs.Command("_Split _SelID {} _Enter _SelID {} _Enter".format(ur_s, p_schale[0]),True) my_segment = rs.FirstObject() rs.DeleteObject(rs.NextObject(my_segment)) ##mirror## points = rs.CurvePoints(p_schale) my_seg= rs.MirrorObject(my_segment, points[0], points[5], copy=True) s7= my_segment, my_seg rs.ScaleObject(s7, [0,0,0], [1.15,1.15,1.15]) rs.RotateObject(s7, [0,0,0], 8, [0,1,0]) rs.MoveObject(s7, [15,68,2]) rs.RotateObject(s7, [0,0,0], -15) ################################################ rs.DeleteObject(schale) rs.DeleteObject(crv) rs.DeleteObject(p_schale) ################################################ line= rs.AddLine([0,0,0], [0,0,-5]) seg13= rs.ExtrudeSurface(my_segment, line) seg14= rs.ExtrudeSurface(my_seg, line) rs.DeleteObjects([my_segment, my_seg]) return(seg13, seg14) def make_segel8(start1=start1, start2=start2): ur_s = rs.AddSphere([0,0,0],70) crv = rs.AddCircle3Pt([-70,0,0], [0,0,70], [70,0,0]) my_pts = rs.DivideCurve(crv, 20, False, True) ################################################ line1= rs.AddLine(start1, my_pts[2]) line2= rs.AddLine(start1, my_pts[6]) crv_new= rs.AddArc3Pt(my_pts[2] ,my_pts[6], my_pts[5]) schale= rs.JoinCurves((line1, line2, crv_new), True) rs.MoveObject(schale, [0,-70,0]) ##auf kugel projezieren## p_schale= rs.PullCurve(ur_s, schale) p_schale= rs.JoinCurves(p_schale, True) ##ausschneiden## rs.Command("_Split _SelID {} _Enter _SelID {} _Enter".format(ur_s, p_schale[0]),True) my_segment = rs.FirstObject() rs.DeleteObject(rs.NextObject(my_segment)) ##mirror## points = rs.CurvePoints(p_schale) my_seg= rs.MirrorObject(my_segment, points[0], points[5], copy=True) s8= my_segment, my_seg rs.ScaleObject(s8, [0,0,0], [.45,.45,.45]) rs.MoveObject(s8, [90,33.5,-1.5]) rs.RotateObject(s8, [0,0,0], -15) ################################################ rs.DeleteObject(schale) rs.DeleteObject(crv) rs.DeleteObject(p_schale) ################################################ line= rs.AddLine([0,0,0], [0,0,-5]) seg15= rs.ExtrudeSurface(my_segment, line) seg16= rs.ExtrudeSurface(my_seg, line) rs.DeleteObjects([my_segment, my_seg]) return(seg15, seg16) ##Podest## def make_podest_1(insertion=[0,0,0], xdi=xdi, ydi=ydi, zdi=zdi): corners= ([0,0,0], [xdi,0,0], [xdi,ydi,0], [0,ydi,0], [0,0,zdi], [xdi,0,zdi], [xdi,ydi,zdi], [0,ydi,zdi]) box_1= rs.AddBox(corners) return(box_1) def make_podest_2(insertion=[0,0,0], xdi=xdi, ydi=ydi, zdi=zdi): corners= ([0,0,0], [xdi,0,0], [xdi,ydi,0], [0,ydi,0], [0,0,zdi], [xdi,0,zdi], [xdi,ydi,zdi], [0,ydi,zdi]) box_2= rs.AddBox(corners) rs.MoveObject(box_2, [35,5,2]) return(box_2) def make_underground_oper(): u_list=[] u_list.append(make_podest_1(xdi=250, ydi=110, zdi=2)) u_list.append(make_podest_2(xdi=140, ydi=100, zdi=20)) return(u_list) def make_oper1(): s_list=[] s_list.append(make_segel1()) s_list.append(make_segel2()) s_list.append(make_segel3()) s_list.append(make_segel4()) def make_oper2(): d_list=[] d_list.append(make_segel5()) d_list.append(make_segel6()) d_list.append(make_segel7()) d_list.append(make_segel8()) return(d_list) (s_list)= make_oper1() (d_list)= make_oper2() (u_list)= make_underground_oper() rs.MoveObject(u_list, [-50,-75,-22])