$fn = 64; // --- Parameters --- hex_width = 60; // Flat-to-flat outer width bowl_height = 30; // Total height wall_thickness = 2; // Wall thickness at the flats floor_thickness = 2; // Bottom thickness internal_fillet = 12; // Radius of the internal scoop for easy item retrieval // --- Calculations --- // Radius from center to the hexagon corner hex_radius = (hex_width / 2) / cos(30); // Wall thickness at the corner to maintain uniform flat thickness corner_wall = wall_thickness / cos(30); // --- Model --- // Modular hexagonal design, tiles seamlessly with other hex bowls rotate([0, 0, 30]) rotate_extrude($fn=6) { difference() { // Outer profile with bottom chamfer for elephant foot compensation polygon([ [0, 0], [hex_radius - 1, 0], [hex_radius, 1], [hex_radius, bowl_height], [0, bowl_height] ]); // Inner hollow cavity translate([0, floor_thickness]) hull() { // Center axis line (ensures clean hollowing at the center) square([0.1, bowl_height]); // Top right corner (extends above the bowl to ensure a clean top cut) translate([hex_radius - corner_wall - internal_fillet, bowl_height - 0.1]) square([internal_fillet, 0.1]); // Bottom right internal scoop (creates the rounded interior) translate([hex_radius - corner_wall - internal_fillet, internal_fillet]) circle(r=internal_fillet); } } }