]> www.fi.muni.cz Git - things.git/blob - ft-scout-landing-gear-support.scad
FT Scout Landing Gear - alternative layout
[things.git] / ft-scout-landing-gear-support.scad
1 infty = 100;
2 eps = 0.01;
3
4 fuse_w = 40;
5 gear_w = fuse_w - 16;
6 gear_l = 25;
7 spring_l = 6;
8
9 base_w = fuse_w - 10;
10 base_l = gear_l + 3.5;
11 base_h = 0.5;
12 base_beam_w = spring_l + 2;
13 base_reinf_h = 1;
14 base_reinf_w = 1;
15
16 rear_spring_l = 3;
17 rear_beam_w = rear_spring_l + 3;
18 rear_spring_w = 3;
19 rear_spring_bot_w = 7;
20 rear_slot_w = 0.8;
21
22 side_spring_bot_w = 3.5;
23 side_spring_w = 1.5;
24
25 hook_wall = 1;
26 hook_in = 1.5;
27 hook_h = base_h + base_reinf_h/2;
28
29 module body() {
30         // wide beam
31         hull() {
32                 translate([0, -base_w/2, 0])
33                         cube([base_beam_w, base_w, base_h]);
34                 translate([base_beam_w/2-base_reinf_w/2, -base_w/2, base_h-eps])
35                         cube([base_reinf_w, base_w, base_reinf_h + eps]);
36         }
37
38         // long center beam
39         hull() {
40                 translate([base_beam_w/2, -rear_beam_w/2, 0])
41                         cube([base_l - base_beam_w/2, rear_beam_w, base_h]);
42                 translate([base_beam_w/2, -base_reinf_w/2, base_h-eps])
43                         cube([base_l - base_beam_w/2, base_reinf_w, base_reinf_h + eps]);
44         }
45
46         // rear hook
47         hull() {
48                 translate([gear_l-rear_spring_bot_w/2, -rear_spring_l/2, base_h])
49                         cube([rear_spring_bot_w, rear_spring_l, eps]);
50                 translate([gear_l-rear_spring_w/2, -rear_spring_l/2, hook_h+hook_in+hook_wall-eps])
51                         cube([rear_spring_w, rear_spring_l, eps]);
52         }
53                 
54         // side hooks
55         for (y = [-1, 1]) scale([1, y, 1]) intersection() {
56                 translate([0, gear_w/2, eps]) rotate([0, 0, -20])
57                         translate([-10, 0, 0]) hull() {
58                         cube([20, side_spring_bot_w, base_h-eps]);
59                         cube([20, side_spring_w, hook_h + hook_in + hook_wall-eps]);
60                 }
61                 // above the beam
62                 translate([0, -base_w/2, base_h/2])
63                         cube([base_beam_w, base_w, infty]);
64                 // cut the front sides
65                 translate([0, gear_w/2 + 0.8, eps])
66                 rotate([0, 0, -30])
67                         translate([-5, 0, 0])
68                         cube(20);
69                         
70         }
71 }
72
73 difference() {
74         body();
75         // rear hole
76         translate([gear_l, 0, hook_h+hook_in/2])
77         rotate([90, 90, 0])
78         translate([0, 0, -rear_beam_w/2-eps])
79                 cylinder(h = rear_beam_w+2*eps, r = hook_in/2, $fn = 6);
80         // rear slot above the hole
81         translate([gear_l-rear_slot_w/2, -rear_beam_w/2+eps, hook_h+hook_in/2])
82                 cube([rear_slot_w, rear_beam_w+2*eps, infty]);
83         // side slots
84         for (y = [-1, 1]) scale([1, y, 1]) {
85                 translate([0, gear_w/2, hook_h+hook_in/2]) {
86                         rotate([0, 90, -20])
87                         translate([0, 0, -10])
88                         cylinder(r = hook_in/2, h = 20, $fn = 6);
89                 }
90         }
91 }