uilleann

3d printable Uilleann bagpipes
git clone https://git.woozle.org/neale/uilleann.git

commit
640c22c
parent
a846c7a
author
Neale Pickett
date
2026-03-28 18:42:43 -0600 MDT
fancy looking chanter stock that is awful
1 files changed,  +43, -11
M stock-chanter.scad
+43, -11
 1@@ -1,22 +1,54 @@
 2 include <BOSL2/std.scad>
 3 
 4-$fn = $preview ? 0 : 180;
 5+$fn = $preview ? 40 : 180;
 6 
 7 h = 50;
 8 id = 12.5;
 9-od = 33;
10-head_h = 30;
11-head_d = od+5;
12+od = 30;
13 
14-diff()
15-cyl(h=h-head_h, d=od, rounding=1/2, anchor=BOTTOM) {
16-  for (z = [5, 10, 15]) {
17-    tag("remove") up(z) attach(BOTTOM) tube(h=2, id=od-1, od=od+1, chamfer=0.2);
18+difference() {
19+  base_h = h - (od/2) + 2; // fudge up by 2mm so we can lop off the top of the sphere
20+
21+  union() {
22+    hull() {
23+      up(base_h) {
24+        sphere(d=od);
25+        back(25) up(od/4) sphere(d=3);
26+      }
27+      cyl(h=base_h, d=od, rounding=1, anchor=BOTTOM);
28+      back(25) cyl(h=base_h, d=3, rounding=1, anchor=BOTTOM);
29+    }
30   }
31-  attach(TOP) cyl(d=head_d, h=10, anchor=BOTTOM) {
32-    attach(TOP) cyl(h=head_h-10, d1=head_d, d2=id+10, anchor=BOTTOM);
33+
34+  // Binding rings
35+  for (z = [5, 10, 15]) {
36+    up(z) difference() {
37+      hull() {
38+        cyl(h=2, d=od+1);
39+        back(25) cyl(h=2, d=3+1);
40+      }
41+      hull() {
42+        cyl(h=2, d=od-1);
43+        back(25) cyl(h=2, d=3-1);
44+      }
45+    }
46   }
47-  tag("remove") attach(BOTTOM) cyl(h=h, d=id, chamfer=-1, anchor=TOP);
48+
49+  // Chop the top off the sphere
50+  up(h) cuboid(100, anchor=BOTTOM);
51+  // Inner bore
52+  down(0.001) cyl(h=h+0.002, d=id, rounding=-3, anchor=BOTTOM);
53 }
54 
55+/* diff() */
56+/* cyl(h=h-head_h, d=od, rounding=1/2, anchor=BOTTOM) { */
57+/*   for (z = [5, 10, 15]) { */
58+/*     tag("remove") up(z) attach(BOTTOM) tube(h=2, id=od-1, od=od+1, chamfer=0.2); */
59+/*   } */
60+/*   attach(TOP) cyl(d=head_d, h=10, anchor=BOTTOM) { */
61+/*     attach(TOP) cyl(h=head_h-10, d1=head_d, d2=id+10, anchor=BOTTOM); */
62+/*   } */
63+/*   tag("remove") attach(BOTTOM) cyl(h=h, d=id, chamfer=-1, anchor=TOP); */
64+/* } */
65+
66