$fn = 32; webbing_width = 14.7; webbing_thickness = 1.1; // Just enough room, pressure fit base_width = 18; base_thickness = 4; base_length = 39; slot_thickness = 1.5; // How thick the bit that runs through the slot needs to be slot_width = 11.5; hole_diameter = 7.5; hole_inset = 8; // The main hunk, from which we remove bits module body() { cylinder(d=base_width, h=base_thickness, center=true); translate([0, (base_length - (base_width / 2)) / 2, 0]) cube([base_width, base_length - (base_width / 2), base_thickness], center=true); } // color("red") body(); // Remove bits for the slot module slot_cutouts() { cutout_width = (base_width - slot_width) / 2; translate([(slot_width / 2) + (cutout_width / 2) + 0.1, 6, slot_thickness]) cube([cutout_width + 0.2, base_length - 4, base_thickness], center = true); translate([-(slot_width / 2) - (cutout_width / 2) - 0.1, 6, slot_thickness]) cube([cutout_width + 0.2, base_length - 4, base_thickness], center = true); } // slot_cutouts(); // The cutout for the circular hole module hole() { translate([0, -1, 0]) cylinder(d=hole_diameter, h=base_width + 2, center=true); translate([0, -(hole_inset + hole_diameter) / 2, -2]) cube([hole_diameter, hole_inset + hole_diameter, 2], center=true); } // hole(); // Make a hole for the webbing // It needs to be thick enough for the webbing to go through doubled up module webbing_hole() { translate([0, base_length - (base_width / 2) - 3.25, 0]) cube([webbing_width, webbing_thickness * 3, base_thickness + 2], center=true); } difference() { body(); webbing_hole(); hole(); slot_cutouts(); }