mirror of
https://github.com/gumyr/build123d.git
synced 2025-12-06 02:30:55 -08:00
33 lines
892 B
Python
33 lines
892 B
Python
# [Code]
|
|
|
|
from build123d import *
|
|
from ocp_vscode import show_object
|
|
|
|
l1 = Line((0, 0), (12, 0))
|
|
l2 = RadiusArc(l1 @ 1, (15, 20), 50)
|
|
l3 = Spline(l2 @ 1, (22, 40), (20, 50), tangents=(l2 % 1, (-0.75, 1)))
|
|
l4 = RadiusArc(l3 @ 1, l3 @ 1 + Vector(0, 5), 5)
|
|
l5 = Spline(
|
|
l4 @ 1,
|
|
l4 @ 1 + Vector(2.5, 2.5),
|
|
l4 @ 1 + Vector(0, 5),
|
|
tangents=(l4 % 1, (-1, 0)),
|
|
)
|
|
outline = l1 + l2 + l3 + l4 + l5
|
|
outline += Polyline(
|
|
l5 @ 1,
|
|
l5 @ 1 + Vector(0, 1),
|
|
(0, (l5 @ 1).Y + 1),
|
|
l1 @ 0,
|
|
)
|
|
profile = make_face(outline.edges())
|
|
vase = revolve(profile, Axis.Y)
|
|
vase = offset(vase, openings=vase.faces().sort_by(Axis.Y).last, amount=-1)
|
|
|
|
top_edges = vase.edges().filter_by(GeomType.CIRCLE).filter_by_position(Axis.Y, 60, 62)
|
|
vase = fillet(top_edges, radius=0.25)
|
|
|
|
vase = fillet(vase.edges().sort_by(Axis.Y).first, radius=0.5)
|
|
|
|
show_object(Rot(90, 0, 0) * vase, name="vase")
|
|
# [End]
|