$fn=64; // Panel dimensions panel_width = 200; panel_length = 400; panel_thickness = 4; // Rail dimensions num_pairs = 10; rail_width = 3; rail_height = 5; rail_gap = 8; // Gap between the two rails in a single pair // Calculated values rail_spacing = panel_width / num_pairs; start_x = -panel_width/2 + rail_spacing/2; union() { // Main base panel translate([-panel_width/2, -panel_length/2, 0]) cube([panel_width, panel_length, panel_thickness]); // Generate the 10 rail pairs for (i = [0 : num_pairs - 1]) { // Left rail of the pair translate([start_x + i * rail_spacing - rail_gap/2 - rail_width/2, -panel_length/2, panel_thickness - 0.1]) cube([rail_width, panel_length, rail_height + 0.1]); // Right rail of the pair translate([start_x + i * rail_spacing + rail_gap/2 - rail_width/2, -panel_length/2, panel_thickness - 0.1]) cube([rail_width, panel_length, rail_height + 0.1]); } }