]> www.fi.muni.cz Git - things.git/blob - ft-scout-landing-gear-support.scad
switch holder.scad
[things.git] / ft-scout-landing-gear-support.scad
1 infty = 100;
2 eps = 0.01;
3
4 fuse_w = 40;
5 fuse_l = 50;
6
7 gear_w = fuse_w - 6;
8 gear_l = fuse_l - 5; // 26
9 spring_l = 6;
10
11 base_w = fuse_w;
12 base_l = gear_l + 5;
13 base_h = 1.2;
14 base_beam_w = spring_l + 2;
15 base_reinf_h = 1.5;
16 base_reinf_w = 2;
17
18 rear_spring_l = 2.5;
19 rear_spring_rear_l = 6;
20 rear_beam_w = rear_spring_l + 4;
21 rear_spring_w = 3;
22 rear_spring_front_bot_w = 15;
23 rear_spring_bot_w = 10;
24 rear_slot_w = 1.4;
25
26 side_spring_bot_w = 3.5;
27 side_spring_w = 1.5;
28
29 hook_wall = 1;
30 hook_in = 1.7;
31 hook_h = base_h + base_reinf_h/2;
32 side_hook_angle = 4;
33 side_hook_angle_cut = 10;
34
35 base_h = 0.6;
36
37 module body() {
38         // base plate
39         translate([0, -fuse_w/2, 0]) cube([fuse_l, fuse_w, base_h]);
40
41         // wide beam
42         hull() {
43                 translate([0, -base_w/2, 0])
44                         cube([base_beam_w, base_w, base_h]);
45                 translate([base_beam_w/2-base_reinf_w/2, -base_w/2, base_h-eps])
46                         cube([base_reinf_w, base_w, base_reinf_h + eps]);
47         }
48
49         // long center beam
50         hull() {
51                 translate([base_beam_w/2, -rear_beam_w/2, 0])
52                         cube([base_l - base_beam_w/2, rear_beam_w, base_h]);
53                 translate([base_beam_w/2, -base_reinf_w/2, base_h-eps])
54                         cube([base_l - base_beam_w/2, base_reinf_w, base_reinf_h + eps]);
55         }
56
57         // rear hook - front part
58         hull() {
59                 translate([gear_l-rear_spring_front_bot_w/2, -rear_spring_l/2, base_h])
60                         cube([rear_spring_front_bot_w/2-rear_slot_w/2, rear_spring_l, eps]);
61                 translate([gear_l-rear_spring_w/2, -rear_spring_l/2, hook_h+hook_in+hook_wall-eps])
62                         cube([rear_spring_w/2-rear_slot_w, rear_spring_l, eps]);
63         }
64         // rear hook - rear part
65         hull() {
66                 translate([gear_l, -rear_spring_rear_l/2, base_h])
67                         cube([rear_spring_bot_w/2, rear_spring_rear_l, eps]);
68                 translate([gear_l, -rear_spring_rear_l/2, hook_h+hook_in+hook_wall-eps])
69                         cube([rear_spring_w/2, rear_spring_rear_l, eps]);
70         }
71                 
72         // side hooks
73         for (y = [-1, 1]) scale([1, y, 1]) intersection() {
74                 translate([0, gear_w/2, eps]) rotate([0, 0, -side_hook_angle])
75                         translate([-10, 0, 0]) hull() {
76                         translate([0, -side_spring_bot_w, 0])
77                         cube([20, 2*side_spring_bot_w, base_h-eps]);
78                         translate([0, -side_spring_w, 0])
79                         cube([20, 2*side_spring_w, hook_h + hook_in + hook_wall-eps]);
80                 }
81                 // above the beam
82                 translate([0, -base_w/2, base_h/2])
83                         cube([base_beam_w, base_w, infty]);
84                 // cut the front sides
85 /*
86                 translate([0, gear_w/2 + 1.25, eps])
87                 rotate([0, 0, -side_hook_angle_cut])
88                         translate([-5, 0, 0])
89                         cube(20);
90 */
91                         
92         }
93 }
94
95 difference() {
96         body();
97         // rear hole
98         translate([gear_l, 0, hook_h+hook_in/2])
99         rotate([90, 90, 0])
100         translate([0, 0, -rear_beam_w/2-eps])
101                 cylinder(h = rear_beam_w+2*eps, r = hook_in/2, $fn = 6);
102         // rear slot above the hole
103         // translate([gear_l-rear_slot_w/2, -rear_beam_w/2+eps, hook_h+hook_in/2])
104         //      cube([rear_slot_w, rear_beam_w+2*eps, infty]);
105         // side slots
106         for (y = [-1, 1]) scale([1, y, 1]) {
107                 translate([0, gear_w/2, hook_h+hook_in/2]) {
108                         rotate([0, 90, -side_hook_angle])
109                         translate([0, 0, -10])
110                         cylinder(r1 = hook_in, r2 = hook_in/2, h = 20, $fn = 6);
111
112                         rotate([0, 0, -side_hook_angle])
113                         rotate([25, 0, 0])
114                         hull() {        
115                                 translate([-10, -rear_slot_w, 0])
116                                         cube([eps, 2*rear_slot_w, 20]);
117                                 translate([10, -rear_slot_w/2, 0])
118                                         cube([eps, rear_slot_w, 20]);
119                         }
120                 }
121         }
122 }