feat: flip the mop_handle 180 degrees to avoid overhangs
This commit is contained in:
@@ -57,8 +57,8 @@ def build_mop_handle():
|
|||||||
hand_curve_length = 70
|
hand_curve_length = 70
|
||||||
hand_curve_thickness = 5
|
hand_curve_thickness = 5
|
||||||
hand_curve_spacing = 50
|
hand_curve_spacing = 50
|
||||||
hand_curve_start_space = 10
|
hand_curve_thumb_space = 10
|
||||||
hand_curve_end_space = 20
|
hand_curve_pinky_space = 20
|
||||||
|
|
||||||
flared_base_thickness = hand_curve_thickness
|
flared_base_thickness = hand_curve_thickness
|
||||||
flared_base_length = 5
|
flared_base_length = 5
|
||||||
@@ -69,39 +69,41 @@ def build_mop_handle():
|
|||||||
|
|
||||||
rounding = 5
|
rounding = 5
|
||||||
|
|
||||||
handle_diam = (mop_diameter / 2) + thickness
|
handle_radius = (mop_diameter / 2) + thickness
|
||||||
|
handle_length_total = flared_base_length + hand_curve_pinky_space + (hand_curve_length * 2) + hand_curve_spacing + hand_curve_thumb_space
|
||||||
|
|
||||||
with BuildPart() as mop_handle:
|
with BuildPart() as mop_handle:
|
||||||
with BuildSketch(Plane.XZ):
|
with BuildSketch(Plane.XZ):
|
||||||
with BuildLine() as profile:
|
with BuildLine() as profile:
|
||||||
sl = Line((0, 0), (handle_diam, 0))
|
sl = Line((0, 0), (handle_radius, 0))
|
||||||
hs1 = Line(sl @ 1, (handle_diam, hand_curve_start_space))
|
fb = ThreePointArc(sl @ 1, (handle_radius + flared_base_thickness, (sl @ 1).Y + (flared_base_length / 2)), (handle_radius, (sl @ 1).Y + flared_base_length))
|
||||||
h1 = ThreePointArc(hs1 @ 1, (handle_diam + hand_curve_thickness, (hs1 @ 1).Y + (hand_curve_length / 2)), (handle_diam, (hs1 @ 1).Y + hand_curve_length))
|
hs1 = Line(fb @ 1, (handle_radius, (fb @ 1).Y + hand_curve_pinky_space))
|
||||||
hs2 = Line(h1 @ 1, (handle_diam, (h1 @ 1).Y + hand_curve_spacing))
|
h1 = ThreePointArc(hs1 @ 1, (handle_radius + hand_curve_thickness, (hs1 @ 1).Y + (hand_curve_length / 2)), (handle_radius, (hs1 @ 1).Y + hand_curve_length))
|
||||||
h2 = ThreePointArc(hs2 @ 1, (handle_diam + hand_curve_thickness, (hs2 @ 1).Y + (hand_curve_length / 2)), (handle_diam, (hs2 @ 1).Y + hand_curve_length))
|
hs2 = Line(h1 @ 1, (handle_radius, (h1 @ 1).Y + hand_curve_spacing))
|
||||||
hs3 = Line(h2 @ 1, (handle_diam, (h2 @ 1).Y + hand_curve_end_space))
|
h2 = ThreePointArc(hs2 @ 1, (handle_radius + hand_curve_thickness, (hs2 @ 1).Y + (hand_curve_length / 2)), (handle_radius, (hs2 @ 1).Y + hand_curve_length))
|
||||||
fb = ThreePointArc(hs3 @ 1, (handle_diam + flared_base_thickness, (hs3 @ 1).Y + flared_base_length / 2), ((hs3 @ 1).X, (hs3 @ 1).Y + flared_base_length))
|
hs3 = Line(h2 @ 1, (handle_radius, (h2 @ 1).Y + hand_curve_thumb_space))
|
||||||
el = Line(fb @ 1, (0, (fb @ 1).Y))
|
el = Line(hs3 @ 1, (0, (hs3 @ 1).Y))
|
||||||
Line(el @ 1, sl @ 0)
|
Line(el @ 1, sl @ 0)
|
||||||
make_face()
|
make_face()
|
||||||
|
Rectangle((handle_radius + flared_base_thickness) * 2, 10, align=(Align.CENTER, Align.MAX), mode=Mode.SUBTRACT)
|
||||||
revolve()
|
revolve()
|
||||||
|
|
||||||
fillet(mop_handle.edges(), rounding)
|
fillet(mop_handle.edges().sort_by(Axis.Z)[1:], rounding)
|
||||||
|
|
||||||
with Locations(Plane((0, 0, thickness))):
|
with Locations(Plane((0, 0, handle_length_total - thickness))):
|
||||||
Cylinder(mop_diameter / 2, 99999, align=(Align.CENTER, Align.CENTER, Align.MIN), mode=Mode.SUBTRACT)
|
Cylinder(mop_diameter / 2, 99999, align=(Align.CENTER, Align.CENTER, Align.MAX), mode=Mode.SUBTRACT)
|
||||||
# this is a seem channel
|
# this is a seem channel
|
||||||
with BuildSketch(Location((0, mop_diameter / 2, thickness))):
|
with BuildSketch(Location((0, mop_diameter / 2, handle_length_total - thickness))):
|
||||||
Triangle(A=90, b=1, c=1)
|
Triangle(A=90, b=1, c=1)
|
||||||
extrude(amount=99999, mode=Mode.SUBTRACT)
|
extrude(amount=-99999, mode=Mode.SUBTRACT)
|
||||||
|
|
||||||
with Locations(Plane((0, 0, hand_curve_start_space + hand_curve_length + (hand_curve_spacing / 2)))):
|
with Locations(Plane((0, 0, flared_base_length + hand_curve_pinky_space + hand_curve_length + (hand_curve_spacing / 2)))):
|
||||||
with PolarLocations(handle_diam, 2):
|
with PolarLocations(handle_radius, 2):
|
||||||
with Locations(Rotation(0, 90, 0)):
|
with Locations(Rotation(0, 90, 0)):
|
||||||
CounterBoreHole(screw_diameter / 2, screw_head_diameter / 2, screw_head_depth)
|
CounterBoreHole(screw_diameter / 2, screw_head_diameter / 2, screw_head_depth)
|
||||||
|
|
||||||
with Locations(Plane((0, 0, hand_curve_start_space + (hand_curve_length * 2) + hand_curve_spacing + (hand_curve_end_space / 2)))):
|
with Locations(Plane((0, 0, flared_base_length + (hand_curve_pinky_space / 2)))):
|
||||||
with PolarLocations(handle_diam, 2, 90):
|
with PolarLocations(handle_radius, 2, 90):
|
||||||
with Locations(Rotation(0, 90, 0)):
|
with Locations(Rotation(0, 90, 0)):
|
||||||
CounterBoreHole(screw_diameter / 2, screw_head_diameter / 2, screw_head_depth)
|
CounterBoreHole(screw_diameter / 2, screw_head_diameter / 2, screw_head_depth)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user