# [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]