$fn = 64; // --- Parameters --- cup_height = 60; // Total height of the cup cup_top_radius = 40; // Outer radius at the top (80mm diameter) cup_bottom_radius = 32; // Outer radius at the base (64mm diameter) wall_thickness = 2.5; // Thickness of the walls base_thickness = 3; // Thickness of the bottom base inner_fillet = 8; // Radius of the inner rounded bottom (for easy scooping) // --- Calculated Variables --- inner_top_r = cup_top_radius - wall_thickness; inner_bot_r = cup_bottom_radius - wall_thickness; // --- Main Geometry --- difference() { // Outer shell cylinder(h=cup_height, r1=cup_bottom_radius, r2=cup_top_radius); // Inner void (subtracted) hull() { // Top opening (extended slightly above to ensure a clean manifold cut) translate([0, 0, cup_height]) cylinder(h=1, r=inner_top_r); // Bottom rounded corner (torus for smooth token scooping) translate([0, 0, base_thickness + inner_fillet]) rotate_extrude() translate([inner_bot_r - inner_fillet, 0, 0]) circle(r=inner_fillet); // Fill the center flat area of the inner bottom translate([0, 0, base_thickness]) cylinder(h=inner_fillet, r=inner_bot_r - inner_fillet); } }