piccolo

3d Printable Piccolo
git clone https://git.woozle.org/neale/piccolo.git

Neale Pickett  ·  2025-10-24

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=83, d=id_top+1);
57      translate([0, 0, 25]) rotate([-60, 30, 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();