forked from gumyr/build123d
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
TooTallToby tutorials: unbreak and test.
- Unbreak the three broken tutorials (fixes gumyr#848) - This involved a rewrite of PPP-01-10 because I already had my own solution to that one and I couldn't easily tell what was going wrong with the previous solution. - Add assertions to all the tutorials so that non-raising means success - Add the TTT examples to `test_examples.py` added recently for gumyr#909 - Also added sympy to development dependencies since one of the TTT examples uses it.
- Loading branch information
Showing
15 changed files
with
576 additions
and
486 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,47 +1,54 @@ | ||
""" | ||
Too Tall Toby Party Pack 01-01 Bearing 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 | ||
|
||
with BuildPart() as p: | ||
with BuildSketch() as s: | ||
Rectangle(115, 50) | ||
with Locations((5 / 2, 0)): | ||
SlotOverall(90, 12, mode=Mode.SUBTRACT) | ||
extrude(amount=15) | ||
|
||
with BuildSketch(Plane.XZ.offset(50 / 2)) as s3: | ||
with Locations((-115 / 2 + 26, 15)): | ||
SlotOverall(42 + 2 * 26 + 12, 2 * 26, rotation=90) | ||
zz = extrude(amount=-12) | ||
split(bisect_by=Plane.XY) | ||
edgs = p.part.edges().filter_by(Axis.Y).group_by(Axis.X)[-2] | ||
fillet(edgs, 9) | ||
|
||
with Locations(zz.faces().sort_by(Axis.Y)[0]): | ||
with Locations((42 / 2 + 6, 0)): | ||
CounterBoreHole(24 / 2, 34 / 2, 4) | ||
mirror(about=Plane.XZ) | ||
|
||
with BuildSketch() as s4: | ||
RectangleRounded(115, 50, 6) | ||
extrude(amount=80, mode=Mode.INTERSECT) | ||
# fillet does not work right, mode intersect is safer | ||
|
||
with BuildSketch(Plane.YZ) as s4: | ||
with BuildLine() as bl: | ||
l1 = Line((0, 0), (18 / 2, 0)) | ||
l2 = PolarLine(l1 @ 1, 8, 60, length_mode=LengthMode.VERTICAL) | ||
l3 = Line(l2 @ 1, (0, 8)) | ||
mirror(about=Plane.YZ) | ||
make_face() | ||
extrude(amount=115/2, both=True, mode=Mode.SUBTRACT) | ||
|
||
show_object(p) | ||
print(f"\npart mass = {p.part.volume*densa:0.2f}") | ||
""" | ||
Too Tall Toby Party Pack 01-01 Bearing 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 | ||
|
||
with BuildPart() as p: | ||
with BuildSketch() as s: | ||
Rectangle(115, 50) | ||
with Locations((5 / 2, 0)): | ||
SlotOverall(90, 12, mode=Mode.SUBTRACT) | ||
extrude(amount=15) | ||
|
||
with BuildSketch(Plane.XZ.offset(50 / 2)) as s3: | ||
with Locations((-115 / 2 + 26, 15)): | ||
SlotOverall(42 + 2 * 26 + 12, 2 * 26, rotation=90) | ||
zz = extrude(amount=-12) | ||
split(bisect_by=Plane.XY) | ||
edgs = p.part.edges().filter_by(Axis.Y).group_by(Axis.X)[-2] | ||
fillet(edgs, 9) | ||
|
||
with Locations(zz.faces().sort_by(Axis.Y)[0]): | ||
with Locations((42 / 2 + 6, 0)): | ||
CounterBoreHole(24 / 2, 34 / 2, 4) | ||
mirror(about=Plane.XZ) | ||
|
||
with BuildSketch() as s4: | ||
RectangleRounded(115, 50, 6) | ||
extrude(amount=80, mode=Mode.INTERSECT) | ||
# fillet does not work right, mode intersect is safer | ||
|
||
with BuildSketch(Plane.YZ) as s4: | ||
with BuildLine() as bl: | ||
l1 = Line((0, 0), (18 / 2, 0)) | ||
l2 = PolarLine(l1 @ 1, 8, 60, length_mode=LengthMode.VERTICAL) | ||
l3 = Line(l2 @ 1, (0, 8)) | ||
mirror(about=Plane.YZ) | ||
make_face() | ||
extrude(amount=115/2, both=True, mode=Mode.SUBTRACT) | ||
|
||
show_object(p) | ||
|
||
|
||
got_mass = p.part.volume*densa | ||
want_mass = 797.15 | ||
tolerance = 1 | ||
delta = abs(got_mass - want_mass) | ||
print(f"Mass: {got_mass:0.2f} g") | ||
assert delta < tolerance, f'{got_mass=}, {want_mass=}, {delta=}, {tolerance=}' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,49 +1,57 @@ | ||
""" | ||
Too Tall Toby Party Pack 01-02 Post Cap | ||
""" | ||
|
||
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 | ||
|
||
|
||
# TTT Party Pack 01: PPP0102, mass(abs) = 43.09g | ||
with BuildPart() as p: | ||
with BuildSketch(Plane.XZ) as sk1: | ||
Rectangle(49, 48 - 8, align=(Align.CENTER, Align.MIN)) | ||
Rectangle(9, 48, align=(Align.CENTER, Align.MIN)) | ||
with Locations((9 / 2, 40)): | ||
Ellipse(20, 8) | ||
split(bisect_by=Plane.YZ) | ||
revolve(axis=Axis.Z) | ||
|
||
with BuildSketch(Plane.YZ.offset(-15)) as xc1: | ||
with Locations((0, 40 / 2 - 17)): | ||
Ellipse(10 / 2, 4 / 2) | ||
with BuildLine(Plane.XZ) as l1: | ||
CenterArc((-15, 40 / 2), 17, 90, 180) | ||
sweep(path=l1) | ||
|
||
fillet(p.edges().filter_by(GeomType.CIRCLE, reverse=True).group_by(Axis.X)[0], 1) | ||
|
||
with BuildLine(mode=Mode.PRIVATE) as lc1: | ||
PolarLine( | ||
(42 / 2, 0), 37, 94, length_mode=LengthMode.VERTICAL | ||
) # construction line | ||
|
||
pts = [ | ||
(0, 0), | ||
(42 / 2, 0), | ||
((lc1.line @ 1).X, (lc1.line @ 1).Y), | ||
(0, (lc1.line @ 1).Y), | ||
] | ||
with BuildSketch(Plane.XZ) as sk2: | ||
Polygon(*pts, align=None) | ||
fillet(sk2.vertices().group_by(Axis.X)[1], 3) | ||
revolve(axis=Axis.Z, mode=Mode.SUBTRACT) | ||
|
||
show(p) | ||
print(f"\npart mass = {p.part.volume*densa:0.2f}") | ||
""" | ||
Too Tall Toby Party Pack 01-02 Post Cap | ||
""" | ||
|
||
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 | ||
|
||
|
||
# TTT Party Pack 01: PPP0102, mass(abs) = 43.09g | ||
with BuildPart() as p: | ||
with BuildSketch(Plane.XZ) as sk1: | ||
Rectangle(49, 48 - 8, align=(Align.CENTER, Align.MIN)) | ||
Rectangle(9, 48, align=(Align.CENTER, Align.MIN)) | ||
with Locations((9 / 2, 40)): | ||
Ellipse(20, 8) | ||
split(bisect_by=Plane.YZ) | ||
revolve(axis=Axis.Z) | ||
|
||
with BuildSketch(Plane.YZ.offset(-15)) as xc1: | ||
with Locations((0, 40 / 2 - 17)): | ||
Ellipse(10 / 2, 4 / 2) | ||
with BuildLine(Plane.XZ) as l1: | ||
CenterArc((-15, 40 / 2), 17, 90, 180) | ||
sweep(path=l1) | ||
|
||
fillet(p.edges().filter_by(GeomType.CIRCLE, reverse=True).group_by(Axis.X)[0], 1) | ||
|
||
with BuildLine(mode=Mode.PRIVATE) as lc1: | ||
PolarLine( | ||
(42 / 2, 0), 37, 94, length_mode=LengthMode.VERTICAL | ||
) # construction line | ||
|
||
pts = [ | ||
(0, 0), | ||
(42 / 2, 0), | ||
((lc1.line @ 1).X, (lc1.line @ 1).Y), | ||
(0, (lc1.line @ 1).Y), | ||
] | ||
with BuildSketch(Plane.XZ) as sk2: | ||
Polygon(*pts, align=None) | ||
fillet(sk2.vertices().group_by(Axis.X)[1], 3) | ||
revolve(axis=Axis.Z, mode=Mode.SUBTRACT) | ||
|
||
show(p) | ||
|
||
|
||
got_mass = p.part.volume*densc | ||
want_mass = 43.09 | ||
tolerance = 1 | ||
delta = abs(got_mass - want_mass) | ||
print(f"Mass: {got_mass:0.2f} g") | ||
assert delta < tolerance, f'{got_mass=}, {want_mass=}, {delta=}, {tolerance=}' | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,34 +1,40 @@ | ||
""" | ||
Too Tall Toby Party Pack 01-03 C Clamp Base | ||
""" | ||
|
||
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 | ||
|
||
|
||
with BuildPart() as ppp0103: | ||
with BuildSketch() as sk1: | ||
RectangleRounded(34 * 2, 95, 18) | ||
with Locations((0, -2)): | ||
RectangleRounded((34 - 16) * 2, 95 - 18 - 14, 7, mode=Mode.SUBTRACT) | ||
with Locations((-34 / 2, 0)): | ||
Rectangle(34, 95, 0, mode=Mode.SUBTRACT) | ||
extrude(amount=16) | ||
with BuildSketch(Plane.XZ.offset(-95 / 2)) as cyl1: | ||
with Locations((0, 16 / 2)): | ||
Circle(16 / 2) | ||
extrude(amount=18) | ||
with BuildSketch(Plane.XZ.offset(95 / 2 - 14)) as cyl2: | ||
with Locations((0, 16 / 2)): | ||
Circle(16 / 2) | ||
extrude(amount=23) | ||
with Locations(Plane.XZ.offset(95 / 2 + 9)): | ||
with Locations((0, 16 / 2)): | ||
CounterSinkHole(5.5 / 2, 11.2 / 2, None, 90) | ||
|
||
show(ppp0103) | ||
print(f"\npart mass = {ppp0103.part.volume*densb:0.2f}") | ||
""" | ||
Too Tall Toby Party Pack 01-03 C Clamp Base | ||
""" | ||
|
||
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 | ||
|
||
|
||
with BuildPart() as ppp0103: | ||
with BuildSketch() as sk1: | ||
RectangleRounded(34 * 2, 95, 18) | ||
with Locations((0, -2)): | ||
RectangleRounded((34 - 16) * 2, 95 - 18 - 14, 7, mode=Mode.SUBTRACT) | ||
with Locations((-34 / 2, 0)): | ||
Rectangle(34, 95, 0, mode=Mode.SUBTRACT) | ||
extrude(amount=16) | ||
with BuildSketch(Plane.XZ.offset(-95 / 2)) as cyl1: | ||
with Locations((0, 16 / 2)): | ||
Circle(16 / 2) | ||
extrude(amount=18) | ||
with BuildSketch(Plane.XZ.offset(95 / 2 - 14)) as cyl2: | ||
with Locations((0, 16 / 2)): | ||
Circle(16 / 2) | ||
extrude(amount=23) | ||
with Locations(Plane.XZ.offset(95 / 2 + 9)): | ||
with Locations((0, 16 / 2)): | ||
CounterSinkHole(5.5 / 2, 11.2 / 2, None, 90) | ||
|
||
show(ppp0103) | ||
|
||
got_mass = ppp0103.part.volume*densb | ||
want_mass = 96.13 | ||
tolerance = 1 | ||
delta = abs(got_mass - want_mass) | ||
print(f"Mass: {got_mass:0.2f} g") | ||
assert delta < tolerance, f'{got_mass=}, {want_mass=}, {delta=}, {tolerance=}' |
Oops, something went wrong.