Adding Too Tall Toby Tutorial section

This commit is contained in:
gumyr 2023-10-24 19:22:02 -04:00
parent b59953fc1a
commit 4a35b68350
6 changed files with 103 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 990 KiB

View file

@ -0,0 +1,61 @@
"""
Too Tall Toby challenge 23-T-24 CURVED SUPPORT
"""
from math import sin, cos, tan, radians
from build123d import *
from ocp_vscode import *
import sympy
# This problem uses the sympy symbolic math solver
# Define the symbols for the unknowns
# - the center of the radius 30 arc (x30, y30)
# - the center of the radius 66 arc (x66, y66)
# - end of the 8° line (l8x, l8y)
# - the point with the radius 30 and 66 arc meet i30_66
# - the start of the horizontal line lh
y30, x66, xl8, yl8 = sympy.symbols("y30 x66 xl8 yl8")
x30 = 77 - 55 / 2
y66 = 66 + 32
# There are 4 unknowns so we need 4 equations
equations = [
(x66 - x30) ** 2 + (y66 - y30) ** 2 - (66 + 30) ** 2, # distance between centers
xl8 - (x30 + 30 * sin(radians(8))), # 8 degree slope
yl8 - (y30 + 30 * cos(radians(8))), # 8 degree slope
(yl8 - 50) / (55 / 2 - xl8) - tan(radians(8)), # 8 degree slope
]
# There are two solutions but we want the 2nd one
solution = sympy.solve(equations, dict=True)[1]
# Create the critical points
c30 = Vector(x30, solution[y30])
c66 = Vector(solution[x66], y66)
l8 = Vector(solution[xl8], solution[yl8])
i30_66 = Line(c30, c66) @ (30 / (30 + 66))
lh = Vector(c66.X, 32)
with BuildLine() as profile:
l1 = Line((55 / 2, 50), l8)
l2 = RadiusArc(l1 @ 1, i30_66, 30)
l3 = RadiusArc(l2 @ 1, lh, -66)
l4 = Polyline(l3 @ 1, (125, 32), (125, 0), (0, 0), (0, (l1 @ 0).Y), l1 @ 0)
with BuildPart() as curved_support:
with BuildSketch() as base_plan:
c_8_degrees = Circle(55 / 2)
with Locations((0, 125)):
Circle(30 / 2)
base_hull = make_hull(mode=Mode.PRIVATE)
extrude(amount=32)
extrude(c_8_degrees, amount=60)
extrude(base_hull, amount=11)
with BuildSketch(Plane.YZ) as bridge:
make_face(profile.edges())
extrude(amount=11 / 2, both=True)
Hole(35 / 2)
with Locations((0, 125)):
Hole(20 / 2)
print(curved_support.part.volume * 7800e-6) # target 1294g
show(curved_support)

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

BIN
docs/assets/ttt.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 KiB

41
docs/tttt.rst Normal file
View file

@ -0,0 +1,41 @@
#######################
Too Tall Toby Tutorials
#######################
.. image:: assets/ttt.png
:align: center
To enhance users' proficiency with Build123D, this section offers a series of challenges.
In these challenges, users are presented with a CAD drawing and tasked with designing the
part. Their goal is to match the part's mass to a specified target.
These drawings were skillfully crafted and generously provided to Build123D by TooTallToby,
a renowned figure in the realm of 3D CAD. TooTallToby is the host of the World Championship
of 3D CAD Speedmodeling. For additional 3D CAD challenges and content, be sure to
visit `Toby's youtube channel <https://www.Youtube.com/TooTallToby>`_.
Feel free to click on the parts below to embark on these engaging challenges.
.. grid:: 2
.. grid-item-card:: 23-T-24 Curved Support
:img-top: assets/ttt-23-t-24-curved_support_object.png
:link: ttt-23-t-24
:link-type: ref
.. _ttt-23-t-24:
23-T-24 Curved Support
----------------------
.. image:: assets/ttt-23-t-24-curved_support.png
:align: center
.. dropdown:: Object Mass
1294 g
.. dropdown:: Reference Implementation
.. literalinclude:: assets/ttt-23-t-24-curved_support.py

View file

@ -12,3 +12,4 @@ as later tutorials build on the concepts introduced in earlier ones.
tutorial_selectors.rst
tutorial_lego.rst
tutorial_joints.rst
tttt.rst