""" 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}")