$fn = 64; // Parametric Dimensions length = 80; width = 60; height = 50; wall_thickness = 2; corner_radius = 5; rim_overhang = 2; rim_height = 3; // Helper module for rounded rectangular prisms module rounded_box(l, w, h, r) { hull() { translate([ l/2 - r, w/2 - r, 0]) cylinder(h=h, r=r); translate([-l/2 + r, w/2 - r, 0]) cylinder(h=h, r=r); translate([ l/2 - r, -w/2 + r, 0]) cylinder(h=h, r=r); translate([-l/2 + r, -w/2 + r, 0]) cylinder(h=h, r=r); } } // Main Bin Construction union() { // Main Body difference() { // Outer Shell rounded_box(length, width, height, corner_radius); // Inner Hollow Cutout translate([0, 0, wall_thickness]) rounded_box( length - 2*wall_thickness, width - 2*wall_thickness, height + 1, max(0.1, corner_radius - wall_thickness) ); } // Top Rim (Adds structural rigidity for 0.5kg load) translate([0, 0, height - rim_height]) difference() { // Outer Rim Extrusion rounded_box( length + 2*rim_overhang, width + 2*rim_overhang, rim_height, corner_radius + rim_overhang ); // Inner Rim Cutout (matches the main hollow cutout) translate([0, 0, -1]) rounded_box( length - 2*wall_thickness, width - 2*wall_thickness, rim_height + 2, max(0.1, corner_radius - wall_thickness) ); } }