whistles

3d printable Irish whistles
git clone https://git.woozle.org/neale/whistles.git

commit
47e1bcb
parent
21ce81b
author
Neale Pickett
date
2026-03-22 09:00:50 -0600 MDT
Created a portable stand
2 files changed,  +38, -0
M Makefile
+4, -0
 1@@ -9,6 +9,10 @@ wall-mount.3mf: wall-mount.scad
 2 thumbrest.3mf: thumbrest.scad
 3 	openscad -o $@ $<
 4 
 5+stand: stand-0.3mf stand-1.3mf
 6+stand-%.3mf: stand.scad
 7+	openscad -D part=$* -o $@ $<
 8+
 9 %.3mf: whistle.scad whistle.json tonehole.scad ruby.svg
10 	openscad -o $@ -p whistle.json -P $(VARIANT) -D Section=$(SECTION) $<
11 
A stand.scad
+34, -0
 1@@ -0,0 +1,34 @@
 2+include <BOSL2/std.scad>
 3+
 4+$fa = 1;
 5+$fs = $preview ? 2 : 0.5;
 6+$slop = 0.1;
 7+
 8+// Which part to make: you need both.
 9+part = 0; // [0, 1]
10+
11+// Inside diameter of your instrument
12+id = 20; // [10:50]
13+
14+thickness=id/5;
15+
16+difference() {
17+  union() {
18+    up(10) conv_hull() cuboid([id, thickness, 90], rounding=1, anchor=BOTTOM) {
19+      attach(TOP) up(id/2) ycyl(h=thickness, d=id/2, rounding=1, anchor=BOTTOM);
20+    }
21+    up(25) difference() {
22+      yrot(45) cuboid([50, thickness, 50], rounding=1);
23+      cuboid(100, anchor=TOP);
24+      up(15) cuboid(100, anchor=BOTTOM);
25+    }
26+    intersection() {
27+      up(30) xrot(90) tube(h=thickness, ir=400, wall=20, rounding=1, anchor=BACK);
28+      cuboid(275, anchor=BOTTOM);
29+    }
30+  }
31+  up(part?30:29) xrot(part?180:0) {
32+    cuboid([thickness+($slop*2), thickness+($slop*2), 100], anchor=BOTTOM);
33+  }
34+}
35+