$fn = 64; // --- Parameters --- stand_width = 70; // Total width of the stand cutout_width = 40; // Width of the center cutout (leaves 15mm support arms) // --- Modules --- // The outer side profile of the stand module side_profile() { // offset(r=3) rounds all corners and expands the shape by 3mm offset(r=3) polygon(points=[ [3, 3], // Front bottom [97, 3], // Back bottom [77, 67], // Top back outer [67, 67], // Top back inner [45, 15], // Cradle deep point (rests bottom of controller) [15, 35], // Front lip inner (stops sliding) [10, 35], // Front lip top [3, 15] // Front face ]); } // The profile of the center cutout to make room for the controller body and jacks module cutout_profile() { // offset(r=4) rounds the inside corners of the cutout offset(r=4) polygon(points=[ [-10, 100], // Top front (extends past top to ensure clean cut) [-10, 12], // Bottom front (leaves an 8mm solid base) [45, 12], // Bottom back (matches the cradle deep point) [60, 100] // Top back (leaves a solid backrest bridge) ]); } // --- Main Assembly --- difference() { // Main solid body rotate([90, 0, 90]) linear_extrude(height=stand_width, center=true) side_profile(); // Center cutout rotate([90, 0, 90]) linear_extrude(height=cutout_width, center=true) cutout_profile(); }