]> www.fi.muni.cz Git - things.git/blob - servo-tube-holder.scad
switch holder.scad
[things.git] / servo-tube-holder.scad
1 eps = 0.01;
2 infty = 200;
3
4 wall = 1.5;
5 thin_wall = 0.6;
6
7 fuse_tube_d = 8.0 + 0.5;
8 tube_xoff = wall - 0.5;
9
10 clip_w = 6;
11
12 slot_w = 3;
13
14 // 9g servo
15 servo_l = 23.0;
16 servo_w = 12.5;
17
18
19 beam_w = fuse_tube_d/2 + wall - tube_xoff;
20 beam_h = fuse_tube_d/2 + wall;
21
22 cable_w = 2.0;
23 cable_l = 5.0;
24
25
26 difference() {
27         union() {
28                 // servo frame
29                 translate([-wall, -servo_l/2-clip_w, 0])
30                         cube([servo_w + 2*wall, servo_l + 2*clip_w, thin_wall]);
31                 // servo frame supports
32                 for (y = [-1, 1])
33                 scale([1, y, 1])
34                 translate([0, servo_l/2 + clip_w - wall, 0])
35                 hull() {
36                         cube([servo_w/2 + cable_l/2, wall, thin_wall]);
37                         cube([eps, wall, beam_h]);
38                 }
39                 // main beam
40                 translate([-beam_w, -servo_l/2-clip_w, 0])
41                         cube([beam_w, servo_l + 2*clip_w, fuse_tube_d/2+wall]);
42                 // clips
43                 for (y = [-1, 1])
44                 scale([1, y, 1])
45                 translate([0, servo_l/2, 0]) 
46                 hull() {
47                         // bottom cube
48                         translate([-0.75*fuse_tube_d - 2*wall + tube_xoff, 0, 0])
49                                 cube([0.75*fuse_tube_d + 2*wall, clip_w, fuse_tube_d/2 + wall + eps]);
50                         // cylinder
51                         translate([-fuse_tube_d/2 - wall + tube_xoff, 0, fuse_tube_d/2 + wall])
52                         rotate([-90, 0, 0])
53                                 cylinder(r = fuse_tube_d/2 + wall, h = clip_w);
54                 }
55                         
56                         
57         }
58         // hole for servo
59         translate([0, -servo_l/2, -eps])
60                 cube([servo_w, servo_l, wall + 2*eps]);
61         // fuse tube
62         translate([-fuse_tube_d/2-wall + tube_xoff, servo_l/2+clip_w+eps, fuse_tube_d/2+wall])
63                         rotate([90, 0, 0])
64                         cylinder(r = fuse_tube_d/2, h = servo_l +2*clip_w + 2*eps);
65         // fuse tube slot
66         translate([-fuse_tube_d/2-wall-slot_w/2 + tube_xoff, -servo_l/2-clip_w-eps, fuse_tube_d/2+wall])
67                 cube([slot_w, servo_l + 2*clip_w + 2*eps, fuse_tube_d/2+wall+eps]);
68         // cable hole
69         for (y = [-1, 1]) scale ([1, y, 1])
70                 translate([servo_w/2-cable_l/2, servo_l/2-eps, -eps])
71                         cube([cable_l, cable_w + eps, wall + 2*eps]);
72 }
73