$fn=64; // --- Parameters --- panel_width = 200; panel_height = 100; panel_thickness = 3; // Rail parameters rail_width = 3; rail_height = 6; // Height of rail extending above the panel rail_gap = 5; // Gap between the two rails in a single pair rail_offset_x = 40; // Distance from side edges to the rail pairs // Mounting hole parameters hole_radius = 2.5; hole_offset = 6; // --- Main Geometry --- union() { // Base panel with corner mounting holes difference() { cube([panel_width, panel_height, panel_thickness]); // Bottom-left hole translate([hole_offset, hole_offset, -1]) cylinder(h=panel_thickness + 2, r=hole_radius); // Bottom-right hole translate([panel_width - hole_offset, hole_offset, -1]) cylinder(h=panel_thickness + 2, r=hole_radius); // Top-left hole translate([hole_offset, panel_height - hole_offset, -1]) cylinder(h=panel_thickness + 2, r=hole_radius); // Top-right hole translate([panel_width - hole_offset, panel_height - hole_offset, -1]) cylinder(h=panel_thickness + 2, r=hole_radius); } // Left Rail Pair translate([rail_offset_x, 0, 0]) { // Inner rail cube([rail_width, panel_height, panel_thickness + rail_height]); // Outer rail translate([rail_width + rail_gap, 0, 0]) cube([rail_width, panel_height, panel_thickness + rail_height]); } // Right Rail Pair translate([panel_width - rail_offset_x - (rail_width * 2 + rail_gap), 0, 0]) { // Inner rail cube([rail_width, panel_height, panel_thickness + rail_height]); // Outer rail translate([rail_width + rail_gap, 0, 0]) cube([rail_width, panel_height, panel_thickness + rail_height]); } }