new base design for concrete insert
haldean
3 years ago
0 | 0 | include <dims.scad> |
1 | 1 | |
2 | sleeve_h = 150; | |
3 | channel_h = cap_depth; | |
4 | base_wall = 10; | |
5 | standoff_height = 50; | |
2 | bid = 149; | |
3 | bod = 7.75 * 25.4; | |
4 | bh = 200; | |
5 | taper = 20; | |
6 | top_thick = 25.4 * 2; | |
7 | armw = 50; | |
8 | armh = 15; | |
9 | armnotch = 5; | |
10 | arms = 3; | |
6 | 11 | otod_pad = 1.8; |
7 | neg_h = sleeve_h + 10; | |
8 | base_r = 200; | |
9 | base_thick = 30; | |
10 | tongue_w = otod + 50; | |
11 | 12 | |
12 | module negative() { | |
13 | module shell() { | |
13 | 14 | difference() { |
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 | cylinder(h=bh, r1=bod/2, r2=bod/2-taper); | |
16 | translate([0, 0, -2*eps]) cylinder(h=bh - top_thick, r=bid/2); | |
31 | 17 | } |
32 | 18 | } |
33 | 19 | |
34 | 20 | difference() { |
35 | translate([-250, -250, eps]) cube([500, 500, sleeve_h]); | |
36 | negative(); | |
37 | }⏎ | |
21 | union() { | |
22 | intersection() { | |
23 | for (i = [0 : arms-1]) { | |
24 | rotate([0, 0, i * 360/arms]) { | |
25 | difference() { | |
26 | translate([-armw/2, 0, -armh + armnotch]) cube([armw, bod/2, armh]); | |
27 | for (i = [2 : 5]) | |
28 | translate([i % 2 == 0 ? 6 : -6, (i+4.5) * (bid/22), -armh]) | |
29 | cylinder(h=2*armh, r=3.5); | |
30 | } | |
31 | } | |
32 | } | |
33 | translate([0, 0, -2 * armh + armnotch]) cylinder(h=armh * 2, r=bod/2-1); | |
34 | } | |
35 | translate([0, 0, -armh + armnotch]) { | |
36 | difference() { | |
37 | cylinder(h=armh*2, r=otod/2+wall_thickness + otod_pad); | |
38 | translate([0, 0, armh + 2*eps]) cylinder(h=armh + 2*eps, r=(otod + otod_pad)/2); | |
39 | translate([-channel_w/2, 0, armh+2*eps]) cube([channel_w, otod+eps, armh]); | |
40 | } | |
41 | } | |
42 | } | |
43 | shell(); | |
44 | } | |
45 |