]> www.fi.muni.cz Git - things.git/blob - i3-spool-holder.scad
switch holder.scad
[things.git] / i3-spool-holder.scad
1 eps = 0.01;
2 infty = 300;
3
4 spool_r = 100 + 30;
5 frame_w = 6.5 + 0.5;
6 frame_h = 40 + 0.5;
7
8 bearing_d = 15.5;
9 bearing_h = 9 + 1;
10 bearing_side_off = 3;
11
12 holder_w = 8;
13 wall = 2;
14
15 stem_w = 10;
16 fork_w1 = frame_w/2 + 6;
17 fork_w2 = frame_w/2 + 3;
18 fork_w = fork_w1 + fork_w2;
19 fork_h = frame_h/3;
20 fork_top = 5;
21 fork_bottom = 3;
22 fork_raised = holder_w + 10;
23
24 fork_angle = 5;
25
26 module holder() {
27         cylinder(r2 = bearing_d/2 + wall, r1 = bearing_d/2, h = holder_w + bearing_side_off);
28         for (angle = [0:360/5:360])
29                 rotate([0, 0, angle]) hull() {
30                         cylinder(r = wall, h = holder_w + bearing_h);
31                         translate([bearing_d/2 - wall/2, 0, 0])
32                                 cylinder(r = wall/2, h = holder_w + bearing_side_off+ bearing_h);
33                 }
34
35         difference() {
36                 union() {
37                         hull() {
38                                 // stem
39                                 translate([0, -stem_w/2, 0])
40                                         cube([spool_r, stem_w, holder_w]);
41
42                                 // fork
43                                 translate([spool_r, 0, 0])
44                                 rotate([0, 0, fork_angle])
45                                 translate([-fork_top, -fork_w2, 0])
46                                         cube([fork_top + fork_h, fork_w, holder_w]);
47                         }
48                         // fork side
49                         translate([spool_r, 0, 0])
50                         rotate([0, 0, fork_angle])
51                         translate([0, frame_w/2, 0])
52                                 cube([frame_h + wall, fork_w1-frame_w/2, holder_w]);
53                         // raised clip
54                         translate([spool_r, 0, 0])
55                         rotate([0, 0, fork_angle])
56                         translate([-wall, -frame_w/2-wall, 0])
57                                 cube([frame_h + 2*wall, frame_w+2*wall, fork_raised]);
58                 }
59                 translate([spool_r, 0, 0])
60                 rotate([0, 0, fork_angle]) {
61                         // frame
62                         translate([0, -frame_w/2, -infty/2])
63                                 cube([frame_h, frame_w, infty]);
64                         // frame hole
65                         translate([fork_h, -frame_w/2-wall-eps, -infty/2])
66                                 cube([frame_h, frame_w+wall+2*eps-fork_bottom, infty]);
67                 }
68         }
69 }
70
71 for (y = [-1, 1]) {
72         scale([1, y, 1])
73         translate([0, 12, 0])
74         holder();
75 }
76