$fn=64; // --- Parameters --- base_radius = 45; base_height = 15; tray_depth = 10; tray_wall = 4; spool_radius = 12; spool_height = 30; crystal_radius = 28; crystal_body_height = 15; crystal_point_height = 35; crystal_facets = 6; cable_slot_width = 3.5; // --- Model --- difference() { union() { // Base for stability and accessory tray cylinder(r=base_radius, h=base_height); // Central spool for winding cables translate([0, 0, base_height]) cylinder(r=spool_radius, h=spool_height); // Magic Crystal Top (acts as cable retainer) translate([0, 0, base_height + spool_height]) { // Flared overhang (45-degree angle for easy 3D printing without supports) flare_height = crystal_radius - spool_radius; cylinder(r1=spool_radius, r2=crystal_radius, h=flare_height, $fn=crystal_facets); // Hexagonal crystal body translate([0, 0, flare_height]) cylinder(r=crystal_radius, h=crystal_body_height, $fn=crystal_facets); // Pointed crystal tip translate([0, 0, flare_height + crystal_body_height]) cylinder(r1=crystal_radius, r2=0, h=crystal_point_height, $fn=crystal_facets); } } // Hollow out the base to create an accessory tray translate([0, 0, base_height - tray_depth]) difference() { cylinder(r=base_radius - tray_wall, h=tray_depth + 1); // Leave a solid core around the spool for strength cylinder(r=spool_radius + 4, h=tray_depth + 1); } // Cable catch slots on the outer rim of the base for(i = [0 : crystal_facets - 1]) { rotate([0, 0, i * (360 / crystal_facets)]) translate([base_radius, 0, base_height - (tray_depth / 2) + 0.5]) cube([tray_wall * 4, cable_slot_width, tray_depth + 2], center=true); } }