Neale Pickett
·
2025-11-28
chanter.scad
1// stops is an array of [diameter, distance]
2module rod(stops) {
3 end_d = stops[len(stops)-1][1];
4 p = concat([[0, 0]], stops, [[0, end_d]]);
5 rotate_extrude(convexity=4) {
6 polygon(p);
7 }
8}
9
10module cylinders_stacked(stops, y=0, i=0) {
11 if (i < len(stops)) {
12 cur = stops[i];
13 translate([0, 0, y]) cylinder(h=cur[1], d=cur[0]);
14 cylinders_stacked(stops, y+cur[1], i+1);
15 }
16}
17
18rod([
19 [10.7, 0], // Bottom
20 [10.4, 53.5],
21 [10, 66],
22 [9.5, 91],
23 [9, 116],
24 [8.5, 151.5],
25 [8, 192],
26 [7.5, 224],
27 [7.2, 242.5],
28 [7, 251],
29 [6.7, 271],
30 [6.5, 282],
31 [6.3, 291],
32 [6, 308],
33 [5.8, 321],
34 [5.5, 347],
35 [5.2, 367],
36 [5, 374],
37 [4.7, 393],
38 [4.5, 400],
39 [4.2, 412],
40 [4, 420],
41 [3.8, 431],
42 [7.1, 447.5],
43 ]);
44