mirror of
https://github.com/gumyr/build123d.git
synced 2025-12-15 07:10:25 -08:00
57 lines
1.9 KiB
Python
57 lines
1.9 KiB
Python
"""
|
|
Too Tall Toby Party Pack 01-04 Angle Bracket
|
|
"""
|
|
|
|
from build123d import *
|
|
from ocp_vscode import *
|
|
|
|
densa = 7800 / 1e6 # carbon steel density g/mm^3
|
|
densb = 2700 / 1e6 # aluminum alloy
|
|
densc = 1020 / 1e6 # ABS
|
|
|
|
d1, d2, d3 = 38, 26, 16
|
|
h1, h2, h3, h4 = 20, 8, 7, 23
|
|
w1, w2, w3 = 80, 10, 5
|
|
f1, f2, f3 = 4, 10, 5
|
|
sloth1, sloth2 = 18, 12
|
|
slotw1, slotw2 = 17, 14
|
|
|
|
with BuildPart() as p:
|
|
with BuildSketch() as s:
|
|
Circle(d1 / 2)
|
|
extrude(amount=h1)
|
|
with BuildSketch(Plane.XY.offset(h1)) as s2:
|
|
Circle(d2 / 2)
|
|
extrude(amount=h2)
|
|
with BuildSketch(Plane.YZ) as s3:
|
|
Rectangle(d1 + 15, h3, align=(Align.CENTER, Align.MIN))
|
|
extrude(amount=w1 - d1 / 2)
|
|
# fillet workaround \/
|
|
ped = p.part.edges().group_by(Axis.Z)[2].filter_by(GeomType.CIRCLE)
|
|
fillet(ped, f1)
|
|
with BuildSketch(Plane.YZ) as s3a:
|
|
Rectangle(d1 + 15, 15, align=(Align.CENTER, Align.MIN))
|
|
Rectangle(d1, 15, mode=Mode.SUBTRACT, align=(Align.CENTER, Align.MIN))
|
|
extrude(amount=w1 - d1 / 2, mode=Mode.SUBTRACT)
|
|
# end fillet workaround /\
|
|
with BuildSketch() as s4:
|
|
Circle(d3 / 2)
|
|
extrude(amount=h1 + h2, mode=Mode.SUBTRACT)
|
|
with BuildSketch() as s5:
|
|
with Locations((w1 - d1 / 2 - w2 / 2, 0)):
|
|
Rectangle(w2, d1)
|
|
extrude(amount=-h4)
|
|
fillet(p.part.edges().group_by(Axis.X)[-1].sort_by(Axis.Z)[-1], f2)
|
|
fillet(p.part.edges().group_by(Axis.X)[-4].sort_by(Axis.Z)[-2], f3)
|
|
pln = Plane.YZ.offset(w1 - d1 / 2)
|
|
with BuildSketch(pln) as s6:
|
|
with Locations((0, -h4)):
|
|
SlotOverall(slotw1 * 2, sloth1, 90)
|
|
extrude(amount=-w3, mode=Mode.SUBTRACT)
|
|
with BuildSketch(pln) as s6b:
|
|
with Locations((0, -h4)):
|
|
SlotOverall(slotw2 * 2, sloth2, 90)
|
|
extrude(amount=-w2, mode=Mode.SUBTRACT)
|
|
|
|
show(p)
|
|
print(f"\npart mass = {p.part.volume*densa:0.2f}")
|