$fn=64; // --- Parameters --- hex_radius = 45; // Outer radius of the hexagon base base_thickness = 5; // Thickness of the base plate pen_diameter = 12.5; // Diameter of the pen holes (includes clearance) holder_height = 40; // Total height of the pen holders wall_thickness = 3; // Thickness of the walls around the pens hole_offset = 18; // Distance of each pen hole from the center holder_outer_radius = (pen_diameter / 2) + wall_thickness; difference() { // Main solid body union() { // Hexagonal base tile cylinder(r=hex_radius, h=base_thickness, $fn=6); // Pen holder outer cylinders for(i = [0 : 120 : 359]) { rotate([0, 0, i]) translate([hole_offset, 0, 0]) cylinder(r=holder_outer_radius, h=holder_height); } // Central reinforcement joining the holders for strength cylinder(r=hole_offset, h=holder_height * 0.6); } // Subtract pen holes (leaving base_thickness at the bottom) for(i = [0 : 120 : 359]) { rotate([0, 0, i]) translate([hole_offset, 0, base_thickness]) cylinder(r=pen_diameter/2, h=holder_height - base_thickness + 1); } }