$fn=64; // --- Parameters --- length = 50; // Overall length of the slot piece width = 12; // Width of the base height = 15; // Total height above the baseplate slot_width = 3.2; // Width of the slot (3.2mm fits standard 3mm acrylic) slot_depth = 10; // How deep the acrylic sits in the base peg_diameter = 4.8; // Slightly undersized for standard 5mm grid holes peg_length = 5; // Length of mounting pegs peg_spacing = 25; // Distance between mounting pegs module acrylic_panel_slot() { union() { // Main slotted body difference() { // Base block translate([-length/2, -width/2, 0]) cube([length, width, height]); // Acrylic insertion slot translate([-(length + 2)/2, -slot_width/2, height - slot_depth]) cube([length + 2, slot_width, slot_depth + 1]); // Chamfered inner edges for easier panel insertion translate([-(length + 2)/2, -slot_width/2, height]) rotate([45, 0, 0]) cube([length + 2, slot_width, slot_width]); translate([-(length + 2)/2, slot_width/2, height]) rotate([45, 0, 0]) cube([length + 2, slot_width, slot_width]); } // Mounting pegs (bottom) for (x = [-peg_spacing/2, peg_spacing/2]) { translate([x, 0, -peg_length]) cylinder(d=peg_diameter, h=peg_length + 0.1); } } } // Render the object acrylic_panel_slot();