from build123d import * from ocp_vscode import * orange = import_step("./OrangePi-Box.step") orange = orange.rotate(Axis.X, -90).move(Location((0, 0, 37))) dlugosc = 112.80 szerokosc = 87.80 wysokosc = 54 scianka = 3 # 1 otworek dl1o = 17.84 sz1o = 11.68 offset_x1 = 8.931 offset_y1 = 18.295 # 2 otworek dl2o = 24.103 sz2o = 22.007 offset_x2 = 27.894 offset_y2 = 19.047 # 3 otworek dl3o = 6.20 sz3o = 8.40 offset_x3 = 55.740 offset_y3 = 14.770 # 4 otworek dl4o = 26.577 sz4o = 19.737 offset_x4 = 70.481 offset_y4 = 23.208 # 5 otworek dl5o = 15.400 sz5o = 20.400 offset_x5 = 8.910 offset_y5 = 16.720 # otworek 6 dl6o = 10.200 sz6o = 19.600 offset_x6 = 27.160 offset_y6 = 15.620 # otworek 7 dl7o = 43.200 sz7o = 20.200 offset_x7 = 63.660 offset_y7 = 17.820 # mini_uchwytik mini_udl = 10 mini_usz = 8.500 mini_ugr = 4 # wyciecie_mini wyc_dl = 3 wyc_sz = 3 wyc_gr = 4.50 # podstawa_uchwyciku pods_dl = 12.820 pods_sz = 13.400 pods_gr = 1.7 offset_podstawy = 1.410 przesuniecie_uchwyciku = 17.607 with BuildPart() as box: with BuildSketch() as s1: Rectangle(dlugosc, szerokosc) extrude(amount=wysokosc) offset(amount=-scianka, openings=box.faces().sort_by(Axis.Z)[-1]) front = box.faces().sort_by(Axis.Y)[0] front_left_edge_vertex = box.faces().sort_by(Axis.Y)[0].edges().filter_by(Axis.Z).sort_by(Axis.X)[0].vertices()[0] with BuildSketch(front) as s2: with Locations((front_left_edge_vertex.X + offset_x1, -offset_y1)): Rectangle(dl1o, sz1o, align=(Align.MIN, Align.MIN, Align.CENTER)) extrude(amount=-scianka, mode=Mode.SUBTRACT) with BuildSketch(front) as s3: with Locations((front_left_edge_vertex.X + offset_x2, -offset_y2)): Rectangle(dl2o, sz2o, align=(Align.MIN, Align.MIN, Align.CENTER)) extrude(amount=-scianka, mode=Mode.SUBTRACT) with BuildSketch(front) as s4: with Locations((front_left_edge_vertex.X + offset_x3, -offset_y3)): Rectangle(dl3o, sz3o, align=(Align.MIN, Align.MIN, Align.CENTER)) extrude(amount=-scianka, mode=Mode.SUBTRACT) with BuildSketch(front) as s5: with Locations((front_left_edge_vertex.X + offset_x4, -offset_y4)): Rectangle(dl4o, sz4o, align=(Align.MIN, Align.MIN, Align.CENTER)) extrude(amount=-scianka, mode=Mode.SUBTRACT) back = box.faces().sort_by(Axis.Y)[-1] back_left_edge_vertex = box.faces().sort_by(Axis.Y)[-1].edges().filter_by(Axis.Z).sort_by(Axis.X)[-1].vertices()[0] with BuildSketch(back) as s6: with Locations((back_left_edge_vertex.X - offset_x5, + offset_y5)): Rectangle(dl5o, sz5o, align=(Align.MAX, Align.MAX)) extrude(amount=-scianka, mode=Mode.SUBTRACT) with BuildSketch(back) as s7: with Locations((back_left_edge_vertex.X - offset_x6 - 12.450, + offset_y6)): with GridLocations(12.450, 0, 3, 1): Rectangle(dl6o, sz6o, align=(Align.MAX, Align.MAX)) extrude(amount=-scianka, mode=Mode.SUBTRACT) with BuildSketch(back) as s8: with Locations((back_left_edge_vertex.X - offset_x7, + offset_y7)): Rectangle(dl7o, sz7o, align=(Align.MAX, Align.MAX)) extrude(amount=-scianka, mode=Mode.SUBTRACT) bok = box.faces().sort_by(Axis.X)[-1] with BuildSketch(bok) as uchwycik: Rectangle(mini_udl, mini_usz) u1 = extrude(amount=mini_ugr) u1_face = u1.faces().sort_by(Axis.Y)[0] u2_face = u1.faces().sort_by(Axis.X)[-1] with BuildSketch(u1_face) as wyc1: with Locations((-2.750, -0.5)): Rectangle(wyc_dl, wyc_sz) mirror(about=Plane.YZ) extrude(amount=-wyc_gr, mode=Mode.SUBTRACT) with BuildSketch(u2_face) as uchwycik_podstawa: with Locations((-offset_podstawy, 0)): Rectangle(pods_dl, pods_sz) extrude(amount=pods_gr) # show_all() show(box, orange, uchwycik_podstawa)