build123d_orange/orange.py

154 lines
4.5 KiB
Python

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.080
# parametry zamka trójkąta
t_dlugosc = 2.3
t_ramie = 1.6
t_cala_dlugosc = 16
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 BuildPart() as u1:
with BuildSketch(bok) as uchwycik:
with Locations((-przesuniecie_uchwyciku, 0)):
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)
mirror(about=Plane.YZ)
gora_left_edge = box.faces().sort_by(Axis.Z)[-1].edges().filter_by(Axis.Y).sort_by(Axis.X)[1].vertex()
# ZAMEK ==============================================================
with BuildPart() as zamek:
with BuildSketch(Plane.ZX) as z1:
with Locations((gora_left_edge.Z, gora_left_edge.X, 0)):
z = Triangle(a=t_ramie, b=t_ramie, c=t_dlugosc, align=(Align.MAX, Align.MIN))
extrude(amount=t_cala_dlugosc / 2, both=True)
mirror(about=Plane.ZY)
show(box, orange)