$fn=64; // --- Parametric Dimensions --- base_radius = 85; crown_height = 60; pillar_height = 240; saddle_width = 45; // --- Main Assembly --- union() { royal_crown_base(); pillar(); headphone_saddle(); } // --- Modules --- module royal_crown_base() { difference() { union() { // Stepped sturdy base cylinder(r=base_radius, h=8); translate([0, 0, 8]) cylinder(r1=base_radius, r2=65, h=12); // Crown conical body translate([0, 0, 20]) cylinder(r1=65, r2=80, h=crown_height-20); } // Hollow out the crown bowl to save filament and create the rim translate([0, 0, 20]) cylinder(r1=50, r2=68, h=crown_height); // Scalloped spherical cuts to form the iconic crown peaks for(i = [0 : 7]) { rotate([0, 0, i * 360/8]) translate([80, 0, 75]) sphere(r=38); } } // Jewels (spheres) placed on top of the crown peaks for(i = [0 : 7]) { rotate([0, 0, i * 360/8 + 360/16]) translate([76, 0, 53]) sphere(r=6); } // Decorative jewels embedded on the sides of the crown for(i = [0 : 7]) { rotate([0, 0, i * 360/8]) translate([72, 0, 35]) sphere(r=5); } } module pillar() { // Central tapered shaft cylinder(r1=25, r2=14, h=pillar_height - 35); // Decorative royal rings along the shaft decorative_ring(80, 21); decorative_ring(150, 18); } module decorative_ring(z_pos, r) { translate([0, 0, z_pos]) { cylinder(r=r, h=6, center=true); // Chamfered protrusion designed for easy 3D printing (no steep overhangs) rotate_extrude() { polygon(points=[[r-0.1, -3], [r+4, 0], [r-0.1, 3]]); } } } module headphone_saddle() { translate([0, 0, pillar_height - 60]) { hull() { // Top convex resting surface matching the headphone headband curve intersection() { rotate([90, 0, 0]) cylinder(r=80, h=saddle_width, center=true); // Bounding box to extract just the top 20mm of the arch translate([0, 0, 70]) cube([110, saddle_width, 20], center=true); } // Tapered base sweeping smoothly down to connect to the pillar translate([0, 0, 20]) cylinder(r=13, h=5); } // Raised end stoppers to prevent headphones from sliding off translate([53, 0, 61]) rotate([90, 0, 0]) cylinder(r=4, h=saddle_width, center=true); translate([-53, 0, 61]) rotate([90, 0, 0]) cylinder(r=4, h=saddle_width, center=true); } }