$fn = 128; // --- Parameters --- base_radius = 65; post_radius = 14; post_height = 180; rest_length = 90; rest_width = 40; rest_height = 25; // --- Main Assembly --- union() { base(); post(); top_rest(); } // --- Modules --- module base() { // Flat bottom section for stability cylinder(r=base_radius, h=5.01); // Chamfered edge for a modern look translate([0, 0, 5]) cylinder(r1=base_radius, r2=base_radius-3, h=5.01); // Gentle slope up towards the post translate([0, 0, 10]) cylinder(r1=base_radius-3, r2=post_radius+12, h=20.01); // Final transition blending smoothly into the post translate([0, 0, 30]) cylinder(r1=post_radius+12, r2=post_radius, h=10.01); } module post() { // Main vertical pillar translate([0, 0, 40]) cylinder(r=post_radius, h=post_height + 0.01); } module top_rest() { // Curved top rest for the headband, designed to print without supports translate([0, 0, 40 + post_height]) { hull() { // Base of the rest, slightly overlapping the post to ensure manifold geometry translate([0, 0, -0.01]) cylinder(r=post_radius, h=0.1); // Left and right spheres forming a printable, flared pill-shaped top translate([(rest_length - rest_width)/2, 0, rest_height]) sphere(r=rest_width/2); translate([-(rest_length - rest_width)/2, 0, rest_height]) sphere(r=rest_width/2); } } }