piccolo

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

commit
1bf3902
parent
de97cac
author
Neale Pickett
date
2025-10-22 16:38:20 -0600 MDT
ready to print first prototype
5 files changed,  +14, -59
A Makefile
+8, -0
1@@ -0,0 +1,8 @@
2+all: head.3mf body.3mf
3+
4+%.3mf: %.scad piccolo.scad common.scad
5+	openscad -o $@ $<
6+
7+.PHONY: clean
8+clean:
9+	rm -f *.3mf
M body.scad
+2, -49
 1@@ -1,50 +1,3 @@
 2-include <common.scad>
 3+use <piccolo.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-difference() {
19-  cylinder(h=height, d1=17.0, d2=21.6);
20-  translate([0, 0, -1]) cylinder(h=height+2, d1=id_bot, d2=id_top);
21-  for (hole = toneholes) {
22-    translate([0, 0, hole[0]]) tonehole(d=hole[1]);
23-  }
24-}
25-
26-od_top = 20.4;
27-translate([50, 0, 0])
28-union() {
29-  difference() {
30-    cylinder(h=83, d=od_top);
31-    // Inner bore
32-    translate([0, 0, 17]) cylinder(h=200, d=id_top);
33-
34-    // Resonance chamber
35-    translate([0, 0, -1]) cylinder(h=18+1, d=6.5);
36-    translate([0, 0, -0.1]) cylinder(h=10+.2, d1=15.5, d2=6.5);
37-    translate([0, 0, 20]) rotate([45, 0, -30]) cylinder(d=6, h=200);
38-
39-    // Embouchure
40-    translate([0, 0, 40]) {
41-      scale([1, 1, 1.2])
42-        rotate([90, 0, 0])
43-      cylinder(d1=id_top, d2=7, h=id_top);
44-    }
45-  }
46-  intersection() {
47-    cylinder(h=83, d=od_top);
48-    translate([-id_top/2, -100, 18]) rotate([0, -45, 0]) cube([200, 200, 1]);
49-  }
50-  translate([0, 0, 8.5]) donut(h=3, d=od_top);
51-  translate([0, 0, 83-3/2]) donut(h=3, d=od_top);
52-}
53+body();
M common.scad
+1, -10
 1@@ -1,5 +1,5 @@
 2 // Make circles circular in final renders.
 3-$fn = $preview ? 0 : 180;
 4+$fn = $preview ? 30 : 180;
 5 
 6 // clearance in a permanent tenon/mortise joint
 7 clearance = 0.2;
 8@@ -27,15 +27,6 @@ module tube(h=10, id=5, od=10) {
 9   }
10 }
11 
12-// donut creates a torus
13-module donut(h=1, d=10) {
14-  rotate_extrude(angle=360) {
15-    translate([d/2, 0]) {
16-      circle(d=h, $fn=120);
17-    }
18-  }
19-}
20-
21 // default height of rings
22 rings_height = 1.8;
23 
A head.3mf
+0, -0
A head.scad
+3, -0
1@@ -0,0 +1,3 @@
2+use <piccolo.scad>
3+
4+head();