diff --git a/build.py b/build.py index f91c964..130a207 100644 --- a/build.py +++ b/build.py @@ -110,6 +110,43 @@ def build_mop_handle(): return mop_handle +def build_trash_belt_hook( + belt_width: float = 37.5, + belt_thickness: float = 6.6, + + clip_thickness: float = 5, + + hook_width: float = 40, + + hook_height: float = 9, + hook_thickness: float = 13.5, + hook_chamfer: float = 10, + + hook_tip_offset: float = 15, + hook_tip_thickness_p: float = 0.2, + hook_tip_width_p: float = 0.3, +): + with BuildPart() as trash_belt_hook: + with BuildSketch(Plane.YZ): + SlotOverall(belt_width, belt_thickness, 90) + offset(amount=clip_thickness) + offset(amount=-clip_thickness, mode=Mode.SUBTRACT) + extrude(amount=hook_width / 2, both=True) + + pln = Plane(trash_belt_hook.faces().sort_by(Axis.Y)[-1].offset(hook_height)).rotated((-45, 0, 0)) + with BuildSketch(pln) as hook_s: + Rectangle(hook_thickness, hook_width) + chamfer(hook_s.vertices().group_by(Axis.X)[0], hook_chamfer) + extrude(until=Until.PREVIOUS) + + with BuildSketch(pln.offset(hook_tip_offset)) as hook_tip: + Rectangle(hook_thickness * hook_tip_thickness_p, hook_width * hook_tip_width_p) + chamfer(hook_tip.vertices().group_by(Axis.X)[0], hook_chamfer * hook_tip_thickness_p) + loft([hook_s.sketch, hook_tip.sketch]) + + + return trash_belt_hook + mop_scraper_holder_top = build_mop_scraper_holder(15) assert mop_scraper_holder_top.part is not None @@ -122,3 +159,7 @@ export_step(mop_scraper_holder_bottom.part, "mop_scraper_holder_bottom.step") mop_handle = build_mop_handle() assert mop_handle.part is not None export_step(mop_handle.part, "mop_handle.step") + +trash_belt_hook = build_trash_belt_hook() +assert trash_belt_hook.part is not None +export_step(trash_belt_hook.part, "trash_belt_hook.step")