improvements on rocket ship design
haldean
3 years ago
4 | 4 | base_wall = 10; |
5 | 5 | standoff_height = 50; |
6 | 6 | otod_pad = 1.8; |
7 | fin_h = 50; | |
8 | fin_w = 80; | |
7 | neg_h = sleeve_h + 10; | |
8 | base_r = 200; | |
9 | base_thick = 30; | |
10 | tongue_w = otod + 50; | |
9 | 11 | |
10 | module ring(height) { | |
12 | module negative() { | |
11 | 13 | difference() { |
12 | cylinder(h=height, r=otod / 2 + base_wall); | |
13 | translate([0, 0, -eps]) | |
14 | cylinder(h=height + 2 * eps, r=(otod + otod_pad) / 2); | |
14 | translate([-250 - eps, -250 - eps, -10]) | |
15 | cube([500 + 2 * eps, 500 + 2 * eps, neg_h + 10]); | |
16 | cylinder(h=neg_h + eps, r=base_r); | |
17 | } | |
18 | difference() { | |
19 | cylinder(h=neg_h, r=(otod + otod_pad) / 2); | |
20 | for (i = [0 : 1]) { | |
21 | rotate([0, 0, 90 + 180 * i]) { | |
22 | translate([-(otod + otod_pad) / 2, -base_wall/2, -eps]) union() { | |
23 | cube([base_wall, base_wall, standoff_height]); | |
24 | } | |
25 | } | |
26 | } | |
27 | } | |
28 | difference() { | |
29 | cylinder(h=sleeve_h - base_thick, r=base_r - base_thick); | |
30 | translate([-tongue_w / 2, -otod, -eps]) cube([tongue_w, base_r + otod, base_thick]); | |
15 | 31 | } |
16 | 32 | } |
17 | 33 | |
18 | module base() { | |
19 | union() { | |
20 | difference() { | |
21 | ring(sleeve_h); | |
22 | translate([-channel_w/2, 0, -eps]) | |
23 | cube([channel_w, otod/2+base_wall+eps, channel_h]); | |
24 | } | |
25 | for (i = [0 : 3]) { | |
26 | rotate([0, 0, 45 + 90 * i]) { | |
27 | translate([-(otod + otod_pad) / 2, -base_wall/2, 0]) union() { | |
28 | cube([base_wall, base_wall, standoff_height]); | |
29 | } | |
30 | translate([-otod/2 - base_wall, -base_wall/2, 0]) | |
31 | rotate([-90, 180, 0]) linear_extrude(base_wall) | |
32 | polygon([[0, 0], [fin_w, 0], [0, fin_h]]); | |
33 | } | |
34 | } | |
35 | } | |
36 | } | |
37 | %color("gray", 0.2) | |
38 | translate([-330/2, -240/2, 0]) | |
39 | cube([330, 240, 300]); | |
40 | ||
41 | base(); | |
42 | // ring(20);⏎ | |
34 | difference() { | |
35 | translate([-250, -250, eps]) cube([500, 500, sleeve_h]); | |
36 | negative(); | |
37 | }⏎ |