- commit
- 0a07a03
- parent
- 857b914
- author
- Neale Pickett
- date
- 2026-03-15 20:23:35 -0600 MDT
Stocks
8 files changed,
+105,
-0
+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
+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
+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+
+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+}
+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);
+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+}
+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>