$fn=64; // --- Parametric Dimensions (in millimeters) --- label_width = 60; // Width of the label holder (extrusion length) label_height = 25; // Height of the label slot bin_edge_thickness = 3.5; // Thickness of the bin wall to clip onto wall_thickness = 2.0; // General wall thickness for the holder clip_depth = 18; // How far the clip extends down the back of the bin lip_size = 3.0; // Size of the retaining lip for the label label_thickness = 0.8; // Slot gap for the paper/cardboard label // --- 3D Model --- // The profile is designed to be extruded and printed on its side. // This orientation requires NO supports and provides maximum layer strength for the clip. linear_extrude(height = label_width, convexity = 3) { union() { // 1. Main front plate (Label backing) square([label_height, wall_thickness]); // 2. Bottom label retaining lip translate([0, wall_thickness - 0.01]) square([lip_size, label_thickness + 0.01]); translate([0, wall_thickness + label_thickness - 0.01]) square([lip_size + 1.5, wall_thickness + 0.01]); // 3. Top label retaining lip translate([label_height - lip_size, wall_thickness - 0.01]) square([lip_size, label_thickness + 0.01]); translate([label_height - lip_size - 1.5, wall_thickness + label_thickness - 0.01]) square([lip_size + 1.5, wall_thickness + 0.01]); // 4. Top bridge of the clip (goes over the bin edge) translate([label_height - wall_thickness, -bin_edge_thickness - 0.01]) square([wall_thickness, bin_edge_thickness + 0.01]); // 5. Back plate of the clip (goes down the inside/back of the bin) translate([label_height - clip_depth, -bin_edge_thickness - wall_thickness]) square([clip_depth, wall_thickness + 0.01]); // 6. Lead-in flare for the back plate (makes it easy to slide onto the bin) translate([label_height - clip_depth, -bin_edge_thickness - wall_thickness]) polygon([ [0.01, 0], [0.01, wall_thickness], [-2.5, wall_thickness - 1.5], [-2.5, -1.5] ]); // 7. Grip bump to securely hold onto the bin edge translate([label_height - clip_depth + 4, -bin_edge_thickness]) circle(r=0.6); } }