$fn = 64; // --- Parameters --- width = 60; height = 160; base_thick = 8; cradle_height = 30; cradle_depth = 55; slot_width = 34; loop_height = 25; loop_depth = 45; hole_diameter = 36; top_hole_y = height/2 - cradle_height - 15; bot_hole_y = -height/2 + loop_height + 15; // --- Main Model --- difference() { union() { // Base Plate hull() { translate([0, height/2 - width/2, base_thick/2]) cylinder(d=width, h=base_thick, center=true); translate([0, -height/2 + width/2, base_thick/2]) cylinder(d=width, h=base_thick, center=true); } // Top Cradle translate([0, height/2 - cradle_height/2, base_thick]) hull() { translate([0, 0, 0.05]) cube([width, cradle_height, 0.1], center=true); translate([0, 0, cradle_depth - width/2]) rotate([90, 0, 0]) cylinder(d=width, h=cradle_height, center=true); } // Bottom Loop translate([0, -height/2 + loop_height/2, base_thick]) hull() { translate([0, 0, 0.05]) cube([width, loop_height, 0.1], center=true); translate([0, 0, loop_depth - width/2]) rotate([90, 0, 0]) cylinder(d=width, h=loop_height, center=true); } } // --- Cutouts --- // Top Cradle Slot (U-shape for handle) translate([0, height/2 - cradle_height/2, base_thick + cradle_depth - width/2]) rotate([90, 0, 0]) linear_extrude(height=cradle_height + 2, center=true) { hull() { circle(d=slot_width); translate([0, width]) square([slot_width, 0.1], center=true); } } // Top Cradle Groove (Contoured rest for hammer head) translate([0, height/2 - 4, base_thick + cradle_depth]) rotate([0, 90, 0]) cylinder(d=25, h=width + 2, center=true); // Bottom Loop Teardrop Hole (Printable without supports) translate([0, -height/2 + loop_height/2, base_thick + loop_depth - width/2]) rotate([90, 0, 0]) linear_extrude(height=loop_height + 2, center=true) { circle(d=hole_diameter); polygon([ [-hole_diameter/2, 0], [hole_diameter/2, 0], [0, (hole_diameter/2) * 1.414] // 45-degree overhang for support-free printing ]); } // Mounting Holes (Countersunk) for (y = [top_hole_y, bot_hole_y]) { translate([0, y, -0.1]) { cylinder(d=5, h=base_thick + 1); translate([0, 0, base_thick - 3.5]) cylinder(d1=5, d2=10, h=3.6); } } }