$fn=64; // --- Parametric Variables --- // Card dimensions (Standard 63x88mm + 3mm tolerance for easy fit/sleeves) card_width = 66; card_length = 91; stack_height = 40; // Holds ~60-75 sleeved cards // Tray settings wall_thickness = 2; base_thickness = 2; cutout_radius = 20; // Radius of the finger grab cutouts // Calculated overall dimensions outer_w = card_width + (wall_thickness * 2); outer_l = card_length + (wall_thickness * 2); outer_h = stack_height + base_thickness; difference() { // Main tray body cube([outer_w, outer_l, outer_h]); // Inner cavity for cards // Z is increased by 1 to ensure a clean manifold cut at the top translate([wall_thickness, wall_thickness, base_thickness]) cube([card_width, card_length, stack_height + 1]); // Finger cutouts on the side walls for easy gripping // Translated slightly outside the X bounds (-1) and extended (+2) for clean cuts translate([-1, outer_l / 2, outer_h]) rotate([0, 90, 0]) cylinder(h = outer_w + 2, r = cutout_radius); }