diff --git a/base.scad b/base.scad index 03add45..36ccb92 100644 --- a/base.scad +++ b/base.scad @@ -1,38 +1,46 @@ include -sleeve_h = 150; -channel_h = cap_depth; -base_wall = 10; -standoff_height = 50; +bid = 149; +bod = 7.75 * 25.4; +bh = 200; +taper = 20; +top_thick = 25.4 * 2; +armw = 50; +armh = 15; +armnotch = 5; +arms = 3; otod_pad = 1.8; -neg_h = sleeve_h + 10; -base_r = 200; -base_thick = 30; -tongue_w = otod + 50; -module negative() { +module shell() { difference() { - translate([-250 - eps, -250 - eps, -10]) - cube([500 + 2 * eps, 500 + 2 * eps, neg_h + 10]); - cylinder(h=neg_h + eps, r=base_r); - } - difference() { - cylinder(h=neg_h, r=(otod + otod_pad) / 2); - for (i = [0 : 1]) { - rotate([0, 0, 90 + 180 * i]) { - translate([-(otod + otod_pad) / 2, -base_wall/2, -eps]) union() { - cube([base_wall, base_wall, standoff_height]); - } - } - } - } - difference() { - cylinder(h=sleeve_h - base_thick, r=base_r - base_thick); - translate([-tongue_w / 2, -otod, -eps]) cube([tongue_w, base_r + otod, base_thick]); + cylinder(h=bh, r1=bod/2, r2=bod/2-taper); + translate([0, 0, -2*eps]) cylinder(h=bh - top_thick, r=bid/2); } } difference() { - translate([-250, -250, eps]) cube([500, 500, sleeve_h]); - negative(); -} \ No newline at end of file + union() { + intersection() { + for (i = [0 : arms-1]) { + rotate([0, 0, i * 360/arms]) { + difference() { + translate([-armw/2, 0, -armh + armnotch]) cube([armw, bod/2, armh]); + for (i = [2 : 5]) + translate([i % 2 == 0 ? 6 : -6, (i+4.5) * (bid/22), -armh]) + cylinder(h=2*armh, r=3.5); + } + } + } + translate([0, 0, -2 * armh + armnotch]) cylinder(h=armh * 2, r=bod/2-1); + } + translate([0, 0, -armh + armnotch]) { + difference() { + cylinder(h=armh*2, r=otod/2+wall_thickness + otod_pad); + translate([0, 0, armh + 2*eps]) cylinder(h=armh + 2*eps, r=(otod + otod_pad)/2); + translate([-channel_w/2, 0, armh+2*eps]) cube([channel_w, otod+eps, armh]); + } + } + } + shell(); +} +