git.haldean.org h1a / master
new base design for concrete insert haldean 2 years ago
1 changed file(s) with 37 addition(s) and 29 deletion(s). Raw diff Collapse all Expand all
00 include <dims.scad>
11
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;
611 otod_pad = 1.8;
7 neg_h = sleeve_h + 10;
8 base_r = 200;
9 base_thick = 30;
10 tongue_w = otod + 50;
1112
12 module negative() {
13 module shell() {
1314 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);
3117 }
3218 }
3319
3420 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