$fn=64; // --- Parameters --- card_width = 41; card_length = 63; tolerance = 2.5; // Extra space for easy insertion/removal (accommodates sleeves) capacity = 25; // Height of the card stack wall = 2; // Wall thickness floor = 2; // Bottom thickness // --- Calculated Dimensions --- inner_w = card_width + tolerance; inner_l = card_length + tolerance; outer_w = inner_w + 2 * wall; outer_l = inner_l + 2 * wall; outer_h = capacity + floor; // --- Geometry --- difference() { // Main outer body translate([0, 0, outer_h / 2]) cube([outer_w, outer_l, outer_h], center=true); // Inner card slot // Shifted up by floor thickness, made taller to ensure a clean cut at the top translate([0, 0, (outer_h / 2) + floor]) cube([inner_w, inner_l, outer_h], center=true); // Finger cutouts for easy card removal // Placed at the top edge, cutting through the side walls translate([0, 0, outer_h]) rotate([0, 90, 0]) cylinder(r=15, h=outer_w + 10, center=true); }