$fn=64; // --- Parameters --- base_width = 62; // Width of the square modular base base_height = 12; // Total height of the holder amiibo_dia = 51.5; // Diameter of the amiibo recess (~50mm standard + clearance) recess_depth = 5; // Depth of the recess to hold the figure notch_width = 24; // Width of the finger notch for easy removal corner_r = 3; // Corner radius for smooth edges // --- Geometry --- difference() { // Main modular base body hull() { translate([-base_width/2 + corner_r, -base_width/2 + corner_r, 0]) cylinder(r=corner_r, h=base_height); translate([ base_width/2 - corner_r, -base_width/2 + corner_r, 0]) cylinder(r=corner_r, h=base_height); translate([-base_width/2 + corner_r, base_width/2 - corner_r, 0]) cylinder(r=corner_r, h=base_height); translate([ base_width/2 - corner_r, base_width/2 - corner_r, 0]) cylinder(r=corner_r, h=base_height); } // Amiibo base recess translate([0, 0, base_height - recess_depth]) cylinder(d=amiibo_dia, h=recess_depth + 1); // Finger notch (front to back) for accessibility translate([-notch_width/2, -base_width/2 - 1, base_height - recess_depth]) cube([notch_width, base_width + 2, recess_depth + 1]); // Center cutout to save material and allow pushing the figure out from the bottom translate([0, 0, -1]) cylinder(d=amiibo_dia - 16, h=base_height + 2); }