$fn = 64; // --- Parameters --- hex_inner_width = 33.0; // Distance between opposite flat inner walls of the hex bin divider_height = 30.0; // Total height of the divider thickness = 2.0; // Thickness of the divider wall snap_protrusion = 0.8; // Depth of the snap-in ridges on the sides clearance = 0.4; // Clearance for easy insertion // --- Calculated Variables --- width = hex_inner_width - clearance; ridge_radius = (thickness / 2) + snap_protrusion; // --- Main Model --- hex_bin_divider(); module hex_bin_divider() { difference() { union() { // Main divider wall translate([0, 0, divider_height / 2]) cube([width, thickness, divider_height], center=true); // Left snap ridge translate([-width / 2, 0, 0]) snap_ridge(); // Right snap ridge translate([width / 2, 0, 0]) snap_ridge(); } // Finger notch at the top for easy removal translate([0, 0, divider_height]) scale([1.8, 1, 1]) rotate([90, 0, 0]) cylinder(h=thickness + 4, r=5, center=true); } } module snap_ridge() { // A vertical ridge with chamfered top and bottom for smooth snap-in hull() { // Bottom taper (eases insertion into the bin) translate([0, 0, 0]) cylinder(r=thickness / 2, h=0.1); // Main ridge body lower point translate([0, 0, 3]) cylinder(r=ridge_radius, h=0.1); // Main ridge body upper point translate([0, 0, divider_height - 3]) cylinder(r=ridge_radius, h=0.1); // Top taper translate([0, 0, divider_height - 0.1]) cylinder(r=thickness / 2, h=0.1); } }