Neale Pickett
·
2025-12-02
head.scad
1include <common.scad>
2use <MCAD/regular_shapes.scad>
3
4module head() {
5 od_top = 20.4;
6 union() {
7 difference() {
8 union() {
9 // Body
10 cylinder(h=83, d=od_top);
11
12 // Tenon
13 color("white") cylinder(h=108, d=16.6);
14
15 difference() {
16 // Fat one at the bottom, for good bed adhesion
17 translate([0, 0, 0]) torus((od_top+3)/2, (od_top-3)/2);
18 translate([0, 0, -25]) cube(50, center=true);
19 }
20 }
21
22 // Area for the string
23 translate([0, 0, 90]) {
24 r = 16.6/2;
25 difference() {
26 cylinder_tube(15, r, 0.4);
27
28 // fillets
29 cylinder(r1=r, r2=0, h=r);
30 translate([0, 0, 15-r]) cylinder(r1=0, r2=r, h=r);
31 }
32 }
33
34 // Inner bore
35 translate([0, 0, 17]) cylinder(h=200, d=id_top);
36
37 // Resonance chamber
38 translate([0, 0, -1]) cylinder(h=18+1, d=6.5);
39 translate([0, 0, -0.1]) cylinder(h=10+.2, d1=15.5, d2=6.5); // d1=15.5 in Marat's model, mine's smaller for better bed adhesion
40 translate([0, 0, 16]) rotate([30, 0, -30]) cylinder(d=6, h=200);
41
42 // Embouchure
43 translate([0, 0, 45]) {
44 rotate([90, 0, 0]) {
45 hull() {
46 for (y = [0, 4]) {
47 translate([0, y, 0]) cylinder(d1=13, d2=7, h=id_top);
48 }
49 }
50 }
51 }
52 }
53
54 // Resonance chamber plate
55 intersection() {
56 cylinder(h=82, d=id_top+1);
57 translate([0, 0, 25.2]) rotate([-40, 40, 0]) cube([200, 200, 0.8], center=true);
58 }
59
60 translate([0, 0, 8.5]) torus((od_top+3)/2, (od_top-3)/2);
61 translate([0, 0, 83-3/2]) torus((od_top+3)/2, (od_top-3)/2);
62 }
63}
64
65head();