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