--- /dev/null
+$fn = 100;
+
+head_top_inner_radius = 76;
+band_top_width = 5;
+band_thickness = 3;
+head_top_outer_radius = head_top_inner_radius + band_thickness;
+buffer=10;
+band_height = 127;
+
+head_side_inner_radius = 127;
+head_side_outer_radius = head_side_inner_radius + band_thickness;
+
+module hairband() {
+
+ difference() {
+
+ difference() {
+
+ union() {
+ difference() {
+ cylinder(r=head_top_outer_radius, h=band_top_width, center=true);
+ cylinder(r=head_top_inner_radius, h=band_top_width+buffer, center=true);
+ }
+
+ translate([head_side_outer_radius - head_top_outer_radius,0,0])
+ difference() {
+ cylinder(r=head_side_outer_radius, h=band_top_width, center=true);
+ cylinder(r=head_side_inner_radius, h=band_top_width+buffer, center=true);
+ }
+
+ translate([-(head_side_outer_radius - head_top_outer_radius),0,0])
+ difference() {
+ cylinder(r=head_side_outer_radius, h=band_top_width, center=true);
+ cylinder(r=head_side_inner_radius, h=band_top_width+buffer, center=true);
+ }
+ }
+
+ difference() {
+ translate([-(head_side_outer_radius - head_top_outer_radius),0,0])
+ cylinder(r=head_side_inner_radius, center=true, h=band_top_width+buffer);
+ translate([-head_side_outer_radius, -0, 0])
+ cube([head_side_outer_radius*2, head_side_outer_radius*2, band_top_width+buffer*2], center=true);
+ translate([0, head_side_outer_radius/2, 0])
+ cube([head_side_outer_radius*2, head_side_outer_radius, band_top_width+buffer*2], center=true);
+ }
+
+ difference() {
+ translate([(head_side_outer_radius - head_top_outer_radius),0,0])
+ cylinder(r=head_side_inner_radius, center=true, h=band_top_width+buffer);
+ translate([head_side_outer_radius, 0, 0])
+ cube([head_side_outer_radius*2, head_side_outer_radius*2, band_top_width+buffer*2], center=true);
+ translate([0, head_side_outer_radius/2, 0])
+ cube([head_side_outer_radius*2, head_side_outer_radius, band_top_width+buffer*2], center=true);
+ }
+
+ translate([0, -band_height, 0])
+ cube([head_side_inner_radius*2, head_side_inner_radius, band_top_width+buffer*2], center=true);
+
+ }
+
+
+ difference() {
+ cylinder(r=head_side_outer_radius*2+buffer, h=band_top_width+buffer, center=true);
+
+ cylinder(r=head_top_outer_radius, center=true, h=band_top_width+buffer*3);
+ intersection() {
+ translate([head_side_outer_radius - head_top_outer_radius,0,0])
+ cylinder(r=head_side_outer_radius, h=band_top_width+buffer*3, center=true);
+ translate([-head_top_outer_radius+buffer/2,-head_top_outer_radius,0])
+ cube([head_top_outer_radius+buffer,head_top_outer_radius*2,band_top_width+buffer*3], center=true);
+ }
+ intersection() {
+ translate([-(head_side_outer_radius - head_top_outer_radius),0,0])
+ cylinder(r=head_side_outer_radius, h=band_top_width+buffer*3, center=true);
+ translate([head_top_outer_radius+buffer,-head_top_outer_radius,0])
+ cube([head_top_outer_radius+buffer,head_top_outer_radius*2,band_top_width+buffer*3], center=true);
+ }
+ }
+ }
+}
+
+hairband();
+
+module ears() {
+ translate([0, 0, - band_top_width / 2]) {
+ rotate([90,0,30]) {
+ translate([-0.2, 0, 1]) {
+ linear_extrude(height=58.5) {
+ square([band_thickness, band_top_width]);
+ }
+ }
+ }
+ rotate([90,0,-30]) {
+ linear_extrude(height=57.5) {
+ square([band_thickness, band_top_width]);
+ }
+ }
+
+ translate([band_thickness/2, 0, 0])
+ cylinder(h=band_top_width, r=band_thickness/2);
+ } }
+
+translate([-57, 17, 0]) {
+ rotate([0, 0, 30]) {
+ translate([head_top_outer_radius/2, head_top_outer_radius, 0])
+ ears();
+ }
+}
+
+mirror([200, 0, 0]) {
+ translate([-57, 17, 0]) {
+ rotate([0, 0, 30]) {
+ translate([head_top_outer_radius/2, head_top_outer_radius, 0])
+ ears();
+ }
+ }
+}