$fn=64; // --- Parameters --- num_segments = 10; // Number of rigid segments (adjust for total length) segment_length = 25; // Length of each rigid segment (mm) height = 40; // Total height of the divider (mm) thickness = 2.4; // Thickness of the rigid segments (mm) hinge_thickness = 0.6; // Thickness of the flexible living hinge (mm) hinge_length = 1.5; // Gap between segments for the hinge (mm) slot_width = 2.8; // Width of the interlocking slots (mm) // Small overlap to ensure manifold (watertight) geometry eps = 0.01; union() { for(i = [0 : num_segments - 1]) { translate([i * (segment_length + hinge_length), 0, 0]) { // Rigid Segment with Interlocking Slot difference() { // Main body translate([0, -thickness/2, 0]) cube([segment_length, thickness, height]); // Interlocking slot (cuts from the top down to the middle) translate([segment_length/2 - slot_width/2, -thickness, height/2]) cube([slot_width, thickness*2, height/2 + 1]); // V-chamfer at the top to make slotting/interlocking easier translate([segment_length/2, 0, height]) rotate([0, 45, 0]) cube([slot_width*1.5, thickness*3, slot_width*1.5], center=true); } // Flexible Living Hinge if (i < num_segments - 1) { translate([segment_length - eps, -hinge_thickness/2, 0]) cube([hinge_length + 2*eps, hinge_thickness, height]); } } } }