$fn=128; // --- Pocket Hole Jig Parameters --- jig_width = 45; // Total width of the jig jig_length = 100; // Total length of the main block jig_height = 22; // Thickness of the main block hole_spacing = 22; // Distance between the two drill holes drill_dia = 10.0; // 9.5mm (3/8") bit + 0.5mm clearance angle = 15; // Standard pocket hole angle in degrees lip_length = 15; // Depth of the registration lip lip_thickness = 8; // Thickness of the registration lip exit_offset = 15; // Distance from the wood edge to the hole exit module pocket_hole_jig() { difference() { // --- Main Body --- union() { // Main block resting on the wood translate([-jig_width/2, 0, 0]) cube([jig_width, jig_length, jig_height]); // Registration lip (hooks over the edge of the wood) translate([-jig_width/2, -lip_thickness, -lip_length]) cube([jig_width, lip_thickness + 0.1, lip_length + jig_height]); } // --- Drill Guide Holes --- for (i = [-1, 1]) { translate([i * hole_spacing/2, exit_offset, 0]) rotate([angle, 0, 0]) rotate([-90, 0, 0]) translate([0, 0, -15]) // Shift to cut cleanly through bottom cylinder(h=150, d=drill_dia); } // --- Chip Clearance Cutouts --- // Allows wood chips to escape at the bottom so the drill doesn't jam for (i = [-1, 1]) { translate([i * hole_spacing/2, exit_offset + 5, -1]) scale([1, 2.5, 1]) cylinder(h=6, d=drill_dia * 1.2); } // --- Centerline Alignment Notch --- // Helps align the jig with marks on the wood translate([0, -lip_thickness/2, -lip_length/2]) cube([1.5, lip_thickness + 2, lip_length + 2], center=true); } } // Render the jig pocket_hole_jig();