diff --git a/build.py b/build.py index 446bc51..2c8d063 100644 --- a/build.py +++ b/build.py @@ -57,8 +57,8 @@ def build_mop_handle(): hand_curve_length = 70 hand_curve_thickness = 5 hand_curve_spacing = 50 - hand_curve_start_space = 10 - hand_curve_end_space = 20 + hand_curve_thumb_space = 10 + hand_curve_pinky_space = 20 flared_base_thickness = hand_curve_thickness flared_base_length = 5 @@ -69,39 +69,41 @@ def build_mop_handle(): 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 BuildSketch(Plane.XZ): with BuildLine() as profile: - sl = Line((0, 0), (handle_diam, 0)) - hs1 = Line(sl @ 1, (handle_diam, hand_curve_start_space)) - h1 = ThreePointArc(hs1 @ 1, (handle_diam + hand_curve_thickness, (hs1 @ 1).Y + (hand_curve_length / 2)), (handle_diam, (hs1 @ 1).Y + hand_curve_length)) - hs2 = Line(h1 @ 1, (handle_diam, (h1 @ 1).Y + hand_curve_spacing)) - h2 = ThreePointArc(hs2 @ 1, (handle_diam + hand_curve_thickness, (hs2 @ 1).Y + (hand_curve_length / 2)), (handle_diam, (hs2 @ 1).Y + hand_curve_length)) - hs3 = Line(h2 @ 1, (handle_diam, (h2 @ 1).Y + hand_curve_end_space)) - 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)) - el = Line(fb @ 1, (0, (fb @ 1).Y)) + sl = Line((0, 0), (handle_radius, 0)) + fb = ThreePointArc(sl @ 1, (handle_radius + flared_base_thickness, (sl @ 1).Y + (flared_base_length / 2)), (handle_radius, (sl @ 1).Y + flared_base_length)) + hs1 = Line(fb @ 1, (handle_radius, (fb @ 1).Y + hand_curve_pinky_space)) + h1 = ThreePointArc(hs1 @ 1, (handle_radius + hand_curve_thickness, (hs1 @ 1).Y + (hand_curve_length / 2)), (handle_radius, (hs1 @ 1).Y + hand_curve_length)) + hs2 = Line(h1 @ 1, (handle_radius, (h1 @ 1).Y + hand_curve_spacing)) + h2 = ThreePointArc(hs2 @ 1, (handle_radius + hand_curve_thickness, (hs2 @ 1).Y + (hand_curve_length / 2)), (handle_radius, (hs2 @ 1).Y + hand_curve_length)) + hs3 = Line(h2 @ 1, (handle_radius, (h2 @ 1).Y + hand_curve_thumb_space)) + el = Line(hs3 @ 1, (0, (hs3 @ 1).Y)) Line(el @ 1, sl @ 0) make_face() + Rectangle((handle_radius + flared_base_thickness) * 2, 10, align=(Align.CENTER, Align.MAX), mode=Mode.SUBTRACT) revolve() - fillet(mop_handle.edges(), rounding) + fillet(mop_handle.edges().sort_by(Axis.Z)[1:], rounding) - with Locations(Plane((0, 0, thickness))): - Cylinder(mop_diameter / 2, 99999, align=(Align.CENTER, Align.CENTER, Align.MIN), mode=Mode.SUBTRACT) + with Locations(Plane((0, 0, handle_length_total - thickness))): + Cylinder(mop_diameter / 2, 99999, align=(Align.CENTER, Align.CENTER, Align.MAX), mode=Mode.SUBTRACT) # 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) - 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 PolarLocations(handle_diam, 2): + with Locations(Plane((0, 0, flared_base_length + hand_curve_pinky_space + hand_curve_length + (hand_curve_spacing / 2)))): + with PolarLocations(handle_radius, 2): with Locations(Rotation(0, 90, 0)): 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 PolarLocations(handle_diam, 2, 90): + with Locations(Plane((0, 0, flared_base_length + (hand_curve_pinky_space / 2)))): + with PolarLocations(handle_radius, 2, 90): with Locations(Rotation(0, 90, 0)): CounterBoreHole(screw_diameter / 2, screw_head_diameter / 2, screw_head_depth)