]> www.fi.muni.cz Git - things.git/blob - bear-spool-holder.scad
switch holder.scad
[things.git] / bear-spool-holder.scad
1 eps = 0.01;
2
3 wall = 2;
4 top_ins_w = 5;
5 top_ins_h = 4;
6 x_width = 7;
7 y_height = 27;
8 y_clip_l = 4;
9 y_clip_end_r = 0.75;
10 clip_h = 21;
11
12 spool_r = 100;
13 spool_angle = 15;
14 spool_yoff = -(spool_r + wall + 8)*cos(spool_angle);
15 spool_xoff = -(spool_r + wall + 8)*sin(spool_angle);
16
17 beam_h = 10;
18 bearing_zoff = beam_h + wall;
19
20 bearing_d = 15 + 0.1;
21 bearing_h = 9;
22 bearing_r1 = bearing_d/2+wall - bearing_zoff/3;
23
24 module extrusion_clip(body_h) {
25 translate([-wall, -wall, 0]) cube([wall + x_width+eps, wall, body_h]);
26 translate([-wall, -wall, 0]) cube([wall, wall + y_height + eps, body_h]);
27 translate([x_width, -wall, 0]) cube([top_ins_w, top_ins_h + wall, body_h]);
28 translate([-wall, y_height, 0]) cube([wall+y_clip_l, wall, body_h]);
29
30 translate([0, 10, 0]) hull() {
31         translate([-eps, -4, 0]) cube([eps, 8, body_h]);
32         translate([1.5-eps, -3, 0]) cube([eps, 6, body_h]);
33 }
34
35 translate([y_clip_l-y_clip_end_r, y_height, 0])
36         cylinder(r = y_clip_end_r, h = body_h, $fn = 4);
37 }
38
39 module bearing_insert() {
40         rotate([0, 0, 30])
41         cylinder(r1 = bearing_r1, r2 = bearing_d/2 + wall, h = bearing_zoff, $fn = 128);
42         for (a = [0:120:360]) rotate([0, 0, a])
43         translate([-wall/2, 0, bearing_zoff]) cube([wall, bearing_d/2, bearing_h]);
44 }
45
46 module beam() {
47         difference() {
48                 hull() {
49                         translate([-wall, -wall, 0])
50                                 cube([wall + x_width + top_ins_w, wall, beam_h]);
51                         translate([-wall, -wall, 0])
52                                 cube([wall, 2*y_height/3 + wall, beam_h]);
53                         translate([spool_xoff, spool_yoff, 0])
54                                 rotate([0, 0, 30])
55                                         cylinder(r = bearing_r1, h = beam_h, $fn = 6);
56                 }
57                 translate([0, 0, -eps])
58                         cube([x_width+top_ins_w+eps, y_height+eps, beam_h + 2*eps]);
59         }
60 }
61
62 module holder() {
63         extrusion_clip(body_h = clip_h);
64         translate([spool_xoff, spool_yoff, 0])
65                 bearing_insert();
66         beam();
67 }
68
69 // holder();
70 for (x = [-1, 1]) scale([x, 1, 1])
71 translate([12, 0, 0])
72 rotate([0, 0, spool_angle]) holder();
73