]> www.fi.muni.cz Git - things.git/blob - rc-landing-gear.scad
rc landing gear: another approach
[things.git] / rc-landing-gear.scad
1 eps = 0.01;
2 infty = 300;
3
4 /*
5 sirka trupu u nabezne hrany 80mm
6 max sirka trupu 90 mm
7 sirka trupu 50mm pred nabeznou hranou 84mm
8 rozchod klidne 150mm
9 vyska osy se spodni hranou trupu az cca 30mm pod trupem
10 kolma cast asi vpredu
11 */
12
13 base_d = 80;
14 base_w = base_d;
15 base_wall = 2;
16 base_l = 50;
17
18 wheel_h = 40 + base_d/2; // under the base_d/2
19 wheel_base = 160;
20
21 axle_cube = 10;
22 axle_hole = 3;
23
24 leg_wall = 2;
25 top_l = axle_cube;
26
27         // bottom arc
28         difference() {
29                 $fn = 128;
30                 cylinder(r = base_d/2, h = base_l);
31                 translate([0, 0, -eps])
32                         cylinder(r = base_d/2 - base_wall, h = base_l + 2*eps);
33                 // cut the top half
34                 translate([-infty/2, 0, -infty/2]) cube(infty);
35                 // angled cut to top_l
36                 translate([0, 0, top_l])
37                 rotate([atan((base_d/2-base_wall)/(base_l - top_l)), 0, 0])
38                 translate([-infty/2, 0, -infty/2]) cube(infty);
39         }
40
41         // wheel cubes
42         difference() {
43                 for (x = [-1, 1]) scale([x, 1, 1])
44                         translate([wheel_base/2-axle_cube, 
45                                 -wheel_h-axle_cube/2, 0])
46                                 cube(axle_cube);
47                 translate([-infty/2, -wheel_h, axle_cube/2])
48                         rotate([0, 90, 0])
49                         cylinder(r = axle_hole/2, h = infty);
50         }
51
52         // bottom struts
53         for (x = [-1, 1]) scale([x, 1, 1]) hull() {
54                 // center
55                 translate([0, -base_d/2 + base_wall/2, 0])
56                         cylinder(r = leg_wall/2, h = base_l, $fn = 16);
57                 // side
58                 translate([wheel_base/2-axle_cube+leg_wall/2,
59                         -wheel_h+axle_cube/2-leg_wall/2 , 0])
60                         cylinder(r = leg_wall/2, h = axle_cube, $fn = 16);
61         }
62
63         // top struts
64         for (x = [-1, 1]) scale([x, 1, 1]) hull() {
65                 // top
66                 translate([base_d/2 - base_wall/2, -leg_wall/2, 0])
67                         cylinder(r = leg_wall/2, h = top_l+1, $fn = 16);
68                 // bottom
69                 translate([wheel_base/2-leg_wall/2,
70                         -wheel_h+axle_cube/2-leg_wall/2 , 0])
71                         cylinder(r = leg_wall/2, h = axle_cube, $fn = 16);
72         }
73
74
75 /*
76 module body() {
77         // bottom arc
78         difference() {
79                 cylinder(r = base_d/2, h = base_l);
80                 translate([0, 0, -eps])
81                         cylinder(r = base_d/2 - base_wall, h = base_l + 2*eps);
82                 translate([-infty/2, 0, -infty/2]) cube(infty);
83         }
84
85         // side top arcs
86         for (x = [-1, 1]) scale([x, 1, 1])
87         translate([base_d/2+side_d/2-base_wall, 0, 0])
88         difference() {
89                 cylinder(r = side_d/2, h = base_l);
90                 translate([0, 0, -eps])
91                         cylinder(r = side_d/2 - base_wall, h = base_l + 2*eps);
92                 translate([-infty/2, -infty, -infty/2]) cube(infty);
93         }
94
95         // side beams
96         for (x = [-1, 1]) scale([x, 1, 1])
97         translate([base_d/2 + side_d-2*base_wall, -base_d/2-wheel_h, 0])
98                 cube([base_wall, base_d/2+wheel_h, base_l]);
99
100         // bottom springs
101         for (x = [-1, 1]) scale([x, 1, 1])
102         hull() {
103                 translate([0, -base_d/2, 0]) cube([base_wall, base_wall, base_l]);
104                 translate([base_d/2+side_d-2*base_wall, -base_d/2-wheel_h, 0]) cube([base_wall, base_wall, base_l]);
105         }
106         // wheel cubes
107         for (x = [-1, 1]) scale([x, 1, 1])
108                 translate([base_d/2+side_d-2*base_wall, -base_d/2-wheel_h-axle_cube/2, 0])
109                         cube(axle_cube);
110 }
111
112 difference() {
113         body();
114         for (x = [-1, 1]) scale([x, 1, 1])
115         translate([base_d/2+wheel_h, -base_d/2-wheel_h, axle_cube])
116         translate([-infty/2, -base_d/2-wheel_h, axle_cube/2])
117         % rotate([0, 90, 0])
118                 cylinder(r = axle_hole/2, h = infty);
119
120 }
121
122 */