$fn = 64; // --- Parametric Dimensions --- length = 120; width = 80; height = 60; wall_thickness = 2.5; // Sturdy walls for 1kg capacity corner_radius = 6; lip_width = 3; // Reinforcing top lip width lip_height = 4; // Reinforcing top lip height // --- Derived Dimensions --- inner_length = length - 2 * wall_thickness; inner_width = width - 2 * wall_thickness; inner_radius = max(0.1, corner_radius - wall_thickness); // --- Modules --- module rounded_box(l, w, h, r) { hull() { translate([r, r, 0]) cylinder(r=r, h=h); translate([l-r, r, 0]) cylinder(r=r, h=h); translate([r, w-r, 0]) cylinder(r=r, h=h); translate([l-r, w-r, 0]) cylinder(r=r, h=h); } } // --- Main Object --- difference() { // Outer Shell union() { // Main bin body rounded_box(length, width, height, corner_radius); // Top reinforcing lip for strength translate([-lip_width, -lip_width, height - lip_height]) rounded_box(length + 2 * lip_width, width + 2 * lip_width, lip_height, corner_radius + lip_width); } // Inner Hollow Cutout // Height is increased slightly to ensure a clean manifold cut at the top translate([wall_thickness, wall_thickness, wall_thickness]) rounded_box(inner_length, inner_width, height + 1, inner_radius); }