// common base module for front and back connector include use use module connector_half( border_side = false, border_top = false, border_bottom = false ) difference() { union() { // vertical bar cube([bar_thickness/2, bar_thickness, tray_height]); if (!border_side) { // upper horizontal bar translate([0, 0, tray_height - bar_thickness]) cube([tray_width / 2, bar_thickness, bar_thickness]); // lower horizontal bar cube([bar_thickness/2 + rail_width + pla_epsilon, bar_thickness, bar_thickness]); } // male downward positioning nippel if (!border_bottom && !border_side) translate([rail_width, bar_thickness / 2, 0]) nipple(); } // receiver for rail if (!border_side) translate([bar_thickness/2 - rail_thickness, 0, bar_thickness - rail_thickness]) rail(); // female downward positioning nippel if (!border_top) translate([rail_width, bar_thickness / 2, tray_height]) nipple(pla_epsilon); }