import rhinoscriptsyntax as rs import random as ran rs.DeleteObjects(rs.AllObjects()) plane = rs.WorldXYPlane() ### quader erstellen crv = rs.AddRectangle(plane, 50, 30) box = rs.ExtrudeCurveStraight(crv, [0,0,0], [0,0,200]) rs.DeleteObject(crv) rs.CapPlanarHoles(box) rs.MoveObject(box, [0,100,0]) """ # grundplatte erstellen gp1 = rs.AddLine([0,100,0],[0,130,0]) rs.MoveObject(gp, [0,100,0]) obj = rs.SelectObject(gp1) points = rs.DivideCurve(gp1, 5) if obj: for point in points: rs.AddPoint(point) gp2 = rs.AddLine([0,100,0],[50,100,0]) rs.MoveObject(gp, [0,100,0]) obj = rs.SelectObject(gp2) points = rs.DivideCurve(gp2, 8) if obj: for point in points: rs.AddPoint(point) gp3 = rs.AddLine([50,100,0],[50,130,0]) rs.MoveObject(gp, [0,100,0]) obj = rs.SelectObject(gp3) points = rs.DivideCurve(gp3, 5) if obj: for point in points: rs.AddPoint(point) gp4 = rs.AddLine([0,130,0],[50,130,0]) rs.MoveObject(gp, [0,100,0]) obj = rs.SelectObject(gp4) points = rs.DivideCurve(gp4, 8) if obj: for point in points: rs.AddPoint(point) gesamt = rs.JoinCurves((gp1,gp2,gp3,gp4), delete_input=True) #rs.UnselectAllObjects() # put a dot on each point if 1: for i,pt in enumerate(points): #rs.AddPoint(pt) cmd = "-Dot {} {} _Enter ".format(str(i),str(pt)) rs.Command(cmd, False) """ """ # grundplatte erstellen gp = rs.AddRectangle(plane, 50, 30) rs.MoveObject(gp, [0,50,0]) obj = rs.SelectObject(gp) points = rs.DivideCurve(gp, 26) if obj: for point in points: rs.AddPoint(point) rs.DeleteObject(gp) # put a dot on each point if 0: for i,pt in enumerate(points): #rs.AddPoint(pt) cmd = "-Dot {} {} _Enter ".format(str(i),str(pt)) rs.Command(cmd, False) """ ### geschossplatte def make_gp(): pt_list = [] ### punkte des ausgangsrechtecks 50x30 pts1 = [(0,100,0), (0,106.154,0), (0,112.308,0), (0,118.462,0), (0,124.616,0), (0,130.77,0)] for pts in pts1: pt1 = rs.AddPoint(pts) pt_list.append(pt1) pts2 = [(6.154,100,0), (12.308,100,0), (18.462,100,0), (24.616,100,0), (30.77,100,0), (36.924,100,0), (43.078,100,0)] for pts in pts2: pt2 = rs.AddPoint(pts) pt_list.append(pt2) pts3 = [(49.232,100,0), (49.232,106.154,0), (49.232,112.308,0), (49.232,118.462,0), (49.232,124.616,0), (49.232,130.77,0)] for pts in pts3: pt3 = rs.AddPoint(pts) pt_list.append(pt3) pts4 = [(6.154,130.77,0), (12.308,130.77,0), (18.462,130.77,0), (24.616,130.77,0), (30.77,130.77,0), (36.924,130.77,0), (43.078,130.77,0)] for pts in pts4: pt4 = rs.AddPoint(pts) pt_list.append(pt4) ### verschobene punkte und kurve von pts1, y achse def make_points_pts1(pts1): #print pts1[0] point1 = rs.AddPoint(pts1[0]) rs.MoveObject(point1, [-5,0,0]) pt_list.append(point1) #print pts1[1] point2 = rs.AddPoint(pts1[1]) rs.MoveObject(point2, [-2,0,0]) pt_list.append(point2) #print pts1[2] point3 = rs.AddPoint(pts1[2]) rs.MoveObject(point3, [-3,0,0]) pt_list.append(point3) #print pts1[3] point4 = rs.AddPoint(pts1[3]) rs.MoveObject(point4, [2,0,0]) pt_list.append(point4) #print pts1[4] point5 = rs.AddPoint(pts1[4]) rs.MoveObject(point5, [1,0,0]) pt_list.append(point5) #print pts1[5] point6 = rs.AddPoint(pts1[5]) rs.MoveObject(point6, [-3,0,0]) pt_list.append(point6) crv1 = rs.AddInterpCurve([point1,point2,point3,point4,point5,point6], degree=3) return crv1 #make_points_pts1(pts1) ### verschobene punkte und kurve von pts3, y achse def make_points_pts3(pts3): #print pts1[0] point1 = rs.AddPoint(pts3[0]) rs.MoveObject(point1, [3,0,0]) pt_list.append(point1) #print pts1[1] point2 = rs.AddPoint(pts3[1]) rs.MoveObject(point2, [-1,0,0]) pt_list.append(point2) #print pts1[2] point3 = rs.AddPoint(pts3[2]) rs.MoveObject(point3, [-2,0,0]) pt_list.append(point3) #print pts1[3] point4 = rs.AddPoint(pts3[3]) rs.MoveObject(point4, [3,0,0]) pt_list.append(point4) #print pts1[4] point5 = rs.AddPoint(pts3[4]) rs.MoveObject(point5, [2,0,0]) pt_list.append(point5) #print pts1[5] point6 = rs.AddPoint(pts3[5]) rs.MoveObject(point6, [5,0,0]) pt_list.append(point6) crv3 = rs.AddInterpCurve([point1,point2,point3,point4,point5,point6], degree=3) return crv3 #make_points_pts3(pts3) ### verschobene punkte und kurve von pts2, x achse def make_points_pts2(pts2): #print zusatz pts anfang point9 = rs.AddPoint([0,100,0]) rs.MoveObject(point9, [0,-3,0]) pt_list.append(point9) #print pts1[0] point1 = rs.AddPoint(pts2[0]) rs.MoveObject(point1, [0,-2,0]) pt_list.append(point1) #print pts1[1] point2 = rs.AddPoint(pts2[1]) rs.MoveObject(point2, [0,0,0]) pt_list.append(point2) #print pts1[2] point3 = rs.AddPoint(pts2[2]) rs.MoveObject(point3, [0,2,0]) pt_list.append(point3) #print pts1[3] point4 = rs.AddPoint(pts2[3]) rs.MoveObject(point4, [0,0.5,0]) pt_list.append(point4) #print pts1[4] point5 = rs.AddPoint(pts2[4]) rs.MoveObject(point5, [0,-3,0]) pt_list.append(point5) #print pts1[5] point6 = rs.AddPoint(pts2[5]) rs.MoveObject(point6, [0,-1,0]) pt_list.append(point6) #print pts1[6] point7 = rs.AddPoint(pts2[6]) rs.MoveObject(point7, [0,-4,0]) pt_list.append(point7) #print zusatz pts ende point8 = rs.AddPoint([49.232,100,0]) rs.MoveObject(point8, [0,-5,0]) pt_list.append(point8) crv2 = rs.AddInterpCurve([point9,point1,point2,point3,point4,point5,point6,point7,point8], degree=3) return crv2 #make_points_pts2(pts2) ### verschobene punkte und kurve von pts4, x achse def make_points_pts4(pts4): #print zusatz pts4 anfang point9 = rs.AddPoint([0,130,0]) rs.MoveObject(point9, [0,5,0]) pt_list.append(point9) #print pts4[0] point1 = rs.AddPoint(pts4[0]) rs.MoveObject(point1, [0,4,0]) pt_list.append(point1) #print pts4[1] point2 = rs.AddPoint(pts4[1]) rs.MoveObject(point2, [0,1,0]) pt_list.append(point2) #print pts4[2] point3 = rs.AddPoint(pts4[2]) rs.MoveObject(point3, [0,3,0]) pt_list.append(point3) #print pts4[3] point4 = rs.AddPoint(pts4[3]) rs.MoveObject(point4, [0,-0.5,0]) pt_list.append(point4) #print pts4[4] point5 = rs.AddPoint(pts4[4]) rs.MoveObject(point5, [0,-2,0]) pt_list.append(point5) #print pts4[5] point6 = rs.AddPoint(pts4[5]) rs.MoveObject(point6, [0,0,0]) pt_list.append(point6) #print pts4[6] point7 = rs.AddPoint(pts4[6]) rs.MoveObject(point7, [0,2,0]) pt_list.append(point7) #print zusatz pts ende point8 = rs.AddPoint([49.232,130,0]) rs.MoveObject(point8, [0,3,0]) pt_list.append(point8) crv4 = rs.AddInterpCurve([point9,point1,point2,point3,point4,point5,point6,point7,point8], degree=3) return crv4 #make_points_pts4(pts4) ### kurven erstellen und verbinden crv1 = make_points_pts1(pts1) # Kurve von pts1 crv2 = make_points_pts2(pts2) # Kurve von pts2 crv3 = make_points_pts3(pts3) # Kurve von pts1 crv4 = make_points_pts4(pts4) # Kurve von pts2 # kurve 1 und 2 start_point1 = rs.CurveStartPoint(crv1) start_point2 = rs.CurveStartPoint(crv2) #print zusatz pts1[0] point7 = rs.AddPoint(pts1[0]) rs.MoveObject(point7, [-3,-3,0]) pt_list.append(point7) connecting_curve_1_2 = rs.AddInterpCurve([start_point1, point7, start_point2], degree=10) #fillet1 = rs.AddFilletCurve(crv1,crv2,radius=4.0) #fillet2 = rs.AddFilletCurve(connecting_curve_1_2, crv1, radius=3.0) #fillet3 = rs.AddFilletCurve(connecting_curve_1_2, crv2, radius=5.0) # kurve 1 und 4 end_point1 = rs.CurveEndPoint(crv1) start_point4 = rs.CurveStartPoint(crv4) #print zusatz pts4 anfang1 point10 = rs.AddPoint([0,130,0]) rs.MoveObject(point10, [-3,3,0]) pt_list.append(point10) connecting_curve_1_4 = rs.AddInterpCurve([end_point1, point10, start_point4], degree=10) # kurve 3 und 2 start_point3 = rs.CurveStartPoint(crv3) end_point2 = rs.CurveEndPoint(crv2) #print zusatz pts3[0] point7 = rs.AddPoint(pts3[0]) rs.MoveObject(point7, [3,-3,0]) pt_list.append(point7) connecting_curve_3_2 = rs.AddInterpCurve([start_point3, point7, end_point2], degree=10) # kurve 3 und 4 end_point3 = rs.CurveEndPoint(crv3) end_point4 = rs.CurveEndPoint(crv4) #print zusatz pts4 ende point10 = rs.AddPoint([49.232,130,0]) rs.MoveObject(point10, [3,3,0]) pt_list.append(point10) connecting_curve_3_4 = rs.AddInterpCurve([end_point3, point10, end_point4], degree=10) ### geschossplatte outline = rs.JoinCurves([connecting_curve_1_2, crv1, connecting_curve_1_4, crv4, connecting_curve_3_4, crv3, connecting_curve_3_2, crv2], delete_input=True) #surface = rs.AddPlanarSrf(outline) #path = rs.AddLine([-5,100,0], [-5,100,0.5]) surface = rs.ExtrudeCurveStraight(outline, (-5,100,0), (-5,100,0.5)) rs.CapPlanarHoles(surface) for i in range(20): rs.CopyObject(surface,(0,0,10*i)) ### punkte ausblenden for pt in pt_list: rs.HideObject(pt) make_gp() """ anzahl = 5 abstand = 10 for i in range(1, anzahl): verschiebungsvektor = [0, 0, i * abstand] # Verschiebung in Z-Richtung rs.CopyObject(make_gp, verschiebungsvektor) # Platte kopieren # Beispiel: 5 Platten stapeln mit einem Abstand von 3 Einheiten in der Z-Richtung stapel_geschossplatten(5, 3) """ """ def create_geschosse(anzahl, abstand, thickness=0.5): geschossplatten = [] for i in range(anzahl): base_height = i * abstand platte = create_geschossplatte(base_height, thickness) geschossplatten.append(platte) return geschossplatten rs.DeleteObjects(rs.AllObjects()) create_geschosse(anzahl=10, abstand=10) """ """ for i in range(10): rs.CopyObject(surface,(0,0,10*i)) """