uilleann

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

commit
0a07a03
parent
857b914
author
Neale Pickett
date
2026-03-15 20:23:35 -0600 MDT
Stocks
8 files changed,  +105, -0
A daye/misc/Makefile
+12, -0
 1@@ -0,0 +1,12 @@
 2+all: main-stock.3mf
 3+all: chanter-stock.3mf
 4+all: blowpipe-stock.3mf
 5+all: blowpipe.3mf
 6+
 7+*-stock.3mf: stock.scad
 8+
 9+%.3mf: %.scad
10+	openscad -o $@ $<
11+
12+clean:
13+	rm -f *.3mf
M daye/misc/adapter-bellows-tube.scad
+2, -0
1@@ -1,5 +1,7 @@
2 include <../common.scad>
3 
4+$fn = 180;
5+
6 difference() {
7   union() {
8     translate([0, 0,  0.0]) cylinder(h=50, d=15); // Interface to bellows
A daye/misc/blowpipe-stock.scad
+6, -0
1@@ -0,0 +1,6 @@
2+use <stock.scad>
3+
4+$fn = $preview ? 0 : 180;
5+
6+stock(h=60, id=17.6);
7+
A daye/misc/blowpipe.scad
+12, -0
 1@@ -0,0 +1,12 @@
 2+include <BOSL2/std.scad>
 3+
 4+$fn = 180;
 5+
 6+difference() {
 7+  union() {
 8+    tube(h=90, od=16.5, id=12.5, rounding2=0.5, anchor=BOTTOM);
 9+    translate([0, 0, 38]) tube(h=25, od=22, id=12.5, rounding=0.5, anchor=BOTTOM);
10+    tube(h=7, od=16.5, id=9.5, chamfer2=1.5, anchor=BOTTOM);
11+  }
12+  translate([0, 16.5/2, 0]) rotate([-1, 0, 0]) cuboid([20, 1, 50]);
13+}
A daye/misc/chanter-stock.scad
+5, -0
1@@ -0,0 +1,5 @@
2+use <stock.scad>
3+
4+$fn = $preview ? 0 : 180;
5+
6+stock(h=50, id=12.5);
A daye/misc/main-stock.scad
+8, -0
1@@ -0,0 +1,8 @@
2+include <BOSL2/std.scad>
3+use <stock.scad>
4+
5+// The important part of this one is the outside diameter
6+union() {
7+  stock(h=65, id=25, od=33.5);
8+  translate([0, 0, 60]) tube(h=15, id=25, od=33.5, rounding2=0.5, anchor=BOTTOM);
9+}
A daye/misc/stock.scad
+51, -0
 1@@ -0,0 +1,51 @@
 2+include <BOSL2/std.scad>
 3+
 4+module stock(h, id, od=0) {
 5+  od2 = (od > 0) ? od : (id + 4.8);
 6+  od1 = od2 + 4;
 7+  difference() {
 8+    union() {
 9+      // Main tube
10+      tube(h=h, id=id, od=od2, rounding2=0.5, anchor=BOTTOM);
11+
12+      // Base
13+      tube(h=14, id=id, od=od1, orounding2=1, anchor=BOTTOM);
14+
15+      // Flare
16+      translate([0, 0, 14+6]) tube(h=h-14-6-14, id=id, od1=od1, od2=od2, orounding1=1, anchor=BOTTOM);
17+
18+      // Ferrule at the top
19+      translate([0, 0, h-14]) torus(d_maj=od2, r_min=1.4);
20+
21+    }
22+
23+    // Those damned rings everything has
24+    for (d = [6, 8]) {
25+      translate([0, 0, h-d]) tube(h=0.5, id=od2-1);
26+    }
27+
28+    // Ruby
29+    translate([0, 0, 20]) {
30+      intersection() {
31+        rotate([90, 0, -90]) {
32+          linear_extrude(height=20, convexity=4) {
33+            translate([0, 8]) import("../../ruby.svg", center=true);
34+            // XXX: when this is in openscad prod, add center to import and remove translate
35+          }
36+        }
37+        tube(h=h-14-6-14, id1=od1-0.4, id2=od2-0.4, wall=8, anchor=BOTTOM);
38+      }
39+    }
40+  }
41+}
42+
43+module stock_daye(h, id, inset_h=0, inset_z=0) {
44+  inset_h = inset_h ? inset_h : h/3;
45+  inset_z = inset_z ? inset_z : 15;
46+  od = id + 4;
47+
48+  difference() {
49+    tube(h=h, id=id, od=od, rounding2=0.6, anchor=BOTTOM);
50+    translate([0, 0, inset_z]) tube(h=inset_h, id=od-2, wall=5, chamfer=1);
51+  }
52+}
A ruby.svg
+9, -0
 1@@ -0,0 +1,9 @@
 2+<?xml version="1.0" encoding="utf-8"?>
 3+<svg xmlns="http://www.w3.org/2000/svg" height="1cm" width="0.924cm" viewBox="0 0 500 500" xmlns:bx="https://boxy-svg.com">
 4+  <defs>
 5+    <bx:export>
 6+      <bx:file format="png" path="ruby.png"/>
 7+    </bx:export>
 8+  </defs>
 9+  <path style="stroke: rgb(0, 0, 0); fill: rgb(107, 84, 84); transform-box: fill-box; transform-origin: 50% 50%;" d="M 187.594 147.071 C 222.949 153.12 270.972 155.731 309.277 143.299 C 317.317 140.69 324.255 101.717 337.777 84.73 C 365.301 50.153 418.636 3.565 440.95 1.462 C 463.264 -0.641 461.076 -0.732 469.218 12.046 C 477.36 24.824 453.472 138.031 453.472 138.031 C 453.472 138.031 453.953 147.266 444.263 160.449 C 434.573 173.632 447.673 167.61 440.944 190.185 C 434.215 212.76 438.017 200.224 427.718 215.259 C 417.419 230.294 397.67 242.025 388.524 251.061 C 379.378 260.097 386.798 291.019 386.798 291.019 C 386.798 291.019 387.847 326.31 381.141 347.368 C 374.435 368.426 346.18 391.255 346.18 391.255 C 346.18 391.255 325.323 472.928 268.206 481.757 C 211.089 490.586 166.483 394.938 166.483 394.938 C 166.483 394.938 144.005 389.647 131.704 371.16 C 119.403 352.673 108.748 336.052 108.361 311.035 C 107.974 286.018 101.518 264.509 101.518 264.509 C 101.518 264.509 89.405 262.542 85.275 256.613 C 81.145 250.684 78.859 245.845 70.152 238.568 C 59.127 229.354 42.841 226.273 39.22 199.414 C 35.599 172.555 36.125 179.11 36.125 179.11 C 36.125 179.11 23.121 168.902 31.274 144.728 C 39.427 120.554 89.353 134.561 107.159 120.958 C 124.965 107.355 114.883 115.961 133.013 98.781 C 151.143 81.601 175.442 122.255 175.442 122.255 C 175.442 122.255 178.724 145.553 187.594 147.071 Z" id="object-1" transform="matrix(0.999073, 0.043046, -0.043046, 0.999073, 0.014376, 0.000286)"/>
10+</svg>