]> www.fi.muni.cz Git - things.git/blob - rc-plane-ski.scad
rc plane ski: alternative version
[things.git] / rc-plane-ski.scad
1 infty = 300;
2 eps = 0.01;
3
4 base_w = 30;
5 base_l = 150;
6
7 center_w = 5;
8 center_l = base_l - base_w;
9 center_h = 1.5;
10
11 tip_r = 25;
12 tip_rv = 25;
13 tip_rv_off = base_l/2-2;
14 wall = 1.2;
15
16 axle_hole = 1.2 + 0.5;
17 axle_slot = 1.2;
18 axle_top_l = 15;
19 axle_bot_l = 20;
20 axle_top_w = 3;
21 axle_bot_w = 10;
22 axle_h = 3;
23
24 module body() {
25         // base
26         translate([-base_l/2, 0 ])
27                 cube([base_l, wall, base_w]);
28
29         // center reinforcement
30         intersection() {
31                 translate([-center_l/2, wall, base_w/2])
32                 rotate([0, 90, 0])
33                 scale([1, center_h/center_w, 1])
34                         cylinder(r = center_w, h = center_l, $fn = 4);
35                 translate([-infty/2, eps, 0])
36                         cube(infty);
37         }
38
39         hull() {
40                 translate([-axle_bot_w/2, wall, base_w/2-axle_bot_l/2])
41                         cube([axle_bot_w, eps, axle_bot_l]);
42                 translate([-axle_top_w/2, wall+axle_h, base_w/2-axle_top_l/2])
43                         cube([axle_top_w, eps, axle_top_l]);
44         }
45
46         // tip
47         intersection() {
48                 // the main tube
49                 difference() {
50                         translate([base_l/2, tip_r, 0]) 
51                                 cylinder(r = tip_r, h = base_w, $fn = 128);
52                         translate([base_l/2, tip_r, -eps]) 
53                                 cylinder(r = tip_r - wall, h = base_w+2*eps, $fn = 128);
54                 }
55                 // the appropriate quarter of the tube only
56                 translate([base_l/2, -eps, -eps])
57                         cube([tip_r + eps, tip_r + eps, base_w+2*eps]);
58                 // make the tip round
59                 translate([tip_rv_off, -eps, base_w/2-eps])
60                         rotate([-90, 0, 0])
61                         cylinder(r = tip_rv, h = base_w + 2*eps);
62         }
63
64 }
65
66 module ski() {
67         difference() {
68                 body();
69                 // slot
70                 translate([-axle_slot/2, wall+axle_h/2, 0])
71                         cube([axle_slot, infty, base_w]);
72                 // hole
73                 translate([0, wall+axle_h/2, 0])
74                         cylinder(r = axle_hole/2, h = base_w, $fn = 6);
75         }
76 }
77
78 // ski();
79
80 // left and right part
81 for (i = [-1, 1]) scale([1, i, 1])
82         translate([0, 8, 0])
83                 ski();
84