$fn = 64; // --- Parameters --- cup_height = 45; // Total height of the cup top_diameter = 80; // Outer diameter at the top bottom_diameter = 60; // Outer diameter at the bottom wall_thickness = 2.4; // Thickness of the walls bottom_thickness = 3.0; // Thickness of the base scoop_radius = 8.0; // Inner rounding radius for easy token removal // --- Calculated Radii --- r_top = top_diameter / 2; r_bottom = bottom_diameter / 2; r_inner_top = r_top - wall_thickness; r_inner_bottom = r_bottom - wall_thickness; // --- Model --- difference() { // Main outer shell cylinder(h=cup_height, r1=r_bottom, r2=r_top); // Hollow interior hull() { // Extended top opening to ensure a clean manifold cut translate([0, 0, cup_height - 0.1]) cylinder(h=1.2, r=r_inner_top + 0.1); // Rounded inner bottom edge (torus) for easy scooping translate([0, 0, bottom_thickness + scoop_radius]) rotate_extrude() translate([r_inner_bottom - scoop_radius, 0, 0]) circle(r=scoop_radius); // Flat inner bottom center translate([0, 0, bottom_thickness]) cylinder(h=0.1, r=r_inner_bottom - scoop_radius); } }