$fn = 64; // --- Parameters --- outer_radius = 50; // Radius from center to outer hexagon points (approx 100mm wide) total_height = 5; // Total height of the coaster rim_thickness = 3; // Thickness of the outer wall base_thickness = 2; // Thickness of the bottom surface // Calculate inner radius to maintain uniform rim thickness on the flat sides // The angle for a hexagon is 30 degrees from corner to flat center inner_radius = outer_radius - (rim_thickness / cos(30)); // --- Model --- difference() { // Main outer hexagon body cylinder(r=outer_radius, h=total_height, $fn=6); // Inner cutout for the beverage area // Shifted up by base_thickness, made taller to prevent Z-fighting translate([0, 0, base_thickness]) cylinder(r=inner_radius, h=total_height, $fn=6); }