$fn=64; // --- Parameters --- plate_width = 200; plate_length = 300; plate_thickness = 10; cols = 4; rows = 6; hex_radius = 20; // Circumradius of the hexagons // --- Model --- difference() { // Main rectangular base plate cube([plate_width, plate_length, plate_thickness], center=true); // 4x6 Grid of hexagonal cutouts for (i = [0 : cols - 1]) { for (j = [0 : rows - 1]) { // Calculate evenly distributed centers x_pos = (i - (cols - 1) / 2) * (plate_width / cols); y_pos = (j - (rows - 1) / 2) * (plate_length / rows); // Hexagon cutout (using $fn=6 for hex shape) translate([x_pos, y_pos, 0]) // Rotate 30 degrees to align flat sides with the grid rotate([0, 0, 30]) cylinder( r = hex_radius, h = plate_thickness + 2, center = true, $fn = 6 ); } } }