- commit
- de97cac
- parent
- 8ea6092
- author
- Neale Pickett
- date
- 2025-10-22 16:38:03 -0600 MDT
Ready to print first prototype
1 files changed,
+92,
-0
+92,
-0
1@@ -0,0 +1,92 @@
2+include <common.scad>
3+use <MCAD/regular_shapes.scad>
4+
5+height = 189.68;
6+id_bot = 10.5;
7+id_top = 12.6;
8+
9+toneholes = [
10+ [40, 7.0],
11+ [66, 8.5],
12+ [81, 7.0],
13+ [106.5, 7.0],
14+ [125.0, 7.5],
15+ [144.4, 7.0],
16+];
17+
18+module body() {
19+ union() {
20+ d1 = 17.0;
21+ d2 = 21.6;
22+ difference() {
23+ cylinder(h=height, d1=d1, d2=d2);
24+ translate([0, 0, -1]) cylinder(h=height+2, d1=id_bot, d2=id_top);
25+ for (hole = toneholes) {
26+ translate([0, 0, hole[0]]) tonehole(d=hole[1]);
27+ }
28+
29+ translate([0, 0, height-25]) {
30+ d = 16.9;
31+ cylinder(h=25, d=d);
32+ }
33+ }
34+ // rings
35+ translate([0, 0, height-1.5]) torus((d2+3)/2, (d2-3)/2);
36+ difference() {
37+ translate([0, 0, 1.5]) torus((d1+3)/2, (d1-3)/2);
38+ translate([0, 0, -25]) cube(50, center=true);
39+ }
40+ }
41+}
42+
43+module head() {
44+ od_top = 20.4;
45+ union() {
46+ difference() {
47+ union() {
48+ // Body
49+ cylinder(h=83, d=od_top);
50+
51+ // Tenon
52+ color("white") cylinder(h=108, d=16.6);
53+ }
54+
55+ // Area for the string
56+ translate([0, 0, 90]) {
57+ r = 16.6/2;
58+ difference() {
59+ cylinder_tube(15, r, 0.4);
60+
61+ // fillets
62+ cylinder(r1=r, r2=0, h=r);
63+ translate([0, 0, 15-r]) cylinder(r1=0, r2=r, h=r);
64+ }
65+ }
66+
67+ // Inner bore
68+ translate([0, 0, 17]) cylinder(h=200, d=id_top);
69+
70+ // Resonance chamber
71+ translate([0, 0, -1]) cylinder(h=18+1, d=6.5);
72+ translate([0, 0, -0.1]) cylinder(h=10+.2, d1=15.5, d2=6.5);
73+ translate([0, 0, 20]) rotate([45, 0, -30]) cylinder(d=6, h=200);
74+
75+ // Embouchure
76+ translate([0, 0, 40]) {
77+ scale([1, 1, 1.2])
78+ rotate([90, 0, 0])
79+ cylinder(d1=id_top, d2=7, h=id_top);
80+ }
81+ }
82+
83+
84+ intersection() {
85+ cylinder(h=83, d=id_top+1);
86+ translate([0, 0, 25]) rotate([-45, 30, 0]) cube([200, 200, 0.8], center=true);
87+ }
88+
89+ translate([0, 0, 8.5]) torus((od_top+3)/2, (od_top-3)/2);
90+ translate([0, 0, 83-3/2]) torus((od_top+3)/2, (od_top-3)/2);
91+ }
92+}
93+