$fn = 64; // --- Parameters --- // Internal dimensions perfectly sized for a standard Funko Pop box or out-of-box figures box_width = 118; box_depth = 92; wall = 3; // Wall and tray thickness base_height = 12; // Height of the front elevation angle = 10; // Display tilt angle in degrees lip_height = 10; // Height of the retaining lip // Calculated dimensions outer_w = box_width + (wall * 2); outer_d = box_depth + (wall * 2); footprint_d = outer_d * cos(angle); max_h = base_height + (outer_d * sin(angle)) + wall; // Center the stand on the X axis translate([-outer_w / 2, 0, 0]) { union() { // 1. Support Frame (Base) intersection() { // Frame layout union() { // Front wall cube([outer_w, wall, max_h]); // Back wall translate([0, footprint_d - wall, 0]) cube([outer_w, wall, max_h]); // Left wall cube([wall, footprint_d, max_h]); // Center support strut for stability translate([outer_w / 2 - wall / 2, 0, 0]) cube([wall, footprint_d, max_h]); // Right wall translate([outer_w - wall, 0, 0]) cube([wall, footprint_d, max_h]); } // Angled cut to perfectly mate with the bottom of the tray // Added 0.1mm overlap to ensure a manifold (watertight) union translate([0, 0, base_height]) rotate([angle, 0, 0]) translate([-1, -1, -max_h]) cube([outer_w + 2, outer_d + 2, max_h + 0.1]); } // 2. Angled Display Tray translate([0, 0, base_height]) rotate([angle, 0, 0]) union() { // Main platform cube([outer_w, outer_d, wall]); // Retaining lips (with 0.1mm downward overlap for manifold mesh) // Front lip translate([0, 0, wall - 0.1]) cube([outer_w, wall, lip_height + 0.1]); // Back lip translate([0, outer_d - wall, wall - 0.1]) cube([outer_w, wall, lip_height + 0.1]); // Left lip translate([0, 0, wall - 0.1]) cube([wall, outer_d, lip_height + 0.1]); // Right lip translate([outer_w - wall, 0, wall - 0.1]) cube([wall, outer_d, lip_height + 0.1]); } } }