uilleann

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

Neale Pickett  ·  2026-04-05

chanter-cap.scad

 1include <BOSL2/std.scad>
 2
 3$fn = $preview ? 0 : 180;
 4
 5module rings(id) {
 6  for (z = [-1, 1]) {
 7    up(z) tube(id=id, wall=20, h=1);
 8  }
 9}
10
11// Angle off perpendicular of the bag into your cap.
12// If you want it to go exactly perpendicular, set this to 0°.
13// My David Daye cap is at about 20°,
14// but I seem to play at about 45°.
15// Calculating this involves measuring pitch and yaw against the floor,
16// but it always winds up with a single angle against the body of the cap.
17angle = 45;
18
19// Inside diameter of the cap
20id = 17.8;
21
22od = id + 4.8;
23
24lowpoly = 12;
25
26diff() cyl(h=150, d=od, anchor=BOTTOM) {
27
28  // Décor
29  ring_d = od+1;
30  position(TOP) down(8) cyl(d=ring_d, h=2, $fn=lowpoly);
31  position(CENTER)  cyl(d=ring_d, h=2, $fn=lowpoly);
32  position(BOTTOM) up(8) cyl(d=ring_d, h=2, $fn=lowpoly);
33
34  // Hat
35  // We cut the hat off at a angle, to minimize supports
36  position(TOP) color("black") diff() cyl(h=50, d=od+4, anchor=BOTTOM, $fn=lowpoly);
37  tag("remove") up(10) position(TOP+RIGHT) xrot(angle-45)  cuboid(100, anchor=BOTTOM);
38
39  // Schnozz
40  position(TOP) down(15) xrot(90+angle) {
41    cyl(h=60, d=10, anchor=BOTTOM);
42    tag("remove") up(0.001) cyl(h=61, d=8, anchor=BOTTOM);
43  }
44
45  // Inner bore
46  tag("remove") down(0.001) cyl(h=150, d=id, rounding=-1);
47}