summaryrefslogtreecommitdiff
path: root/src/lib/whorl.scad
blob: 007cbd284fe2b3bf9b5a58f042e69ce5c55f3e70 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
module whorl(
        r_out,
        r_stick,
        t_hub=4,
        t_rim=10,
        h=4,
        h_hub=15,
        h_rim=8,
        r_screw=1.6,
        h_screw=11,
        screw_holes=[90, 270],
        r_latch=2,
        latches=[0, 60, 120, 180, 240, 300],
        ) {
    difference() {
        union() {
            cylinder(r=r_out, h=h);
            cylinder(r=r_stick + t_hub, h=h_hub);
            difference() {
                cylinder(r=r_out, h=h_rim);
                translate([0, 0, -1]) cylinder(r=r_out - t_rim, h=h_rim + 2);
            }
        }
        translate([0, 0, -1]) cylinder(r=r_stick, h=h_hub + 2);
        for(i=screw_holes) {
            rotate([0, 0, i]) translate([0, 0, h_screw]) rotate([0, -90, 0])
                cylinder(r=r_screw, h=r_stick + t_hub + 2, $fn=16);
        }
        for(i=latches) {
            rotate([0, 0, i]) translate([r_out, 0, -1])
                cylinder(r=r_latch, h=h_rim + 2);
        }
    }
}