infty = 200; eps = 0.01; wall = 1; led_d = 10 + 0.5; int_d = 19/cos(30); barrier_h = 8; body_l = 70 + barrier_h; clip_l = 2; clip_w = 1.2; clip_dist = 3; /* // main cylinder difference() { cylinder(r = int_d/2 + wall/cos(30), $fn = 6, h = body_l); translate([0, 0, wall]) cylinder(r = int_d/2, $fn = 6, h = body_l); // hole for LED translate([0, 0, -eps]) cylinder(r = led_d/2, h = infty); } // battery front end stop translate([0, 0, barrier_h-wall]) intersection() { cylinder(r = int_d/2 + wall/(2*cos(30)), $fn = 6, h = wall); for (angle = [0:360/3:360]) rotate ([0, 0, angle]) translate([led_d/2+wall, -infty/2, -eps]) cube(infty); } // rear end clip for (angle = [0:60:360]) rotate([0, 0, angle]) translate([-clip_l/2, int_d*cos(30)/2+wall, body_l - clip_dist]) { scale([1, 1, 3]) rotate([0, 90, 0]) cylinder(r = clip_w, h = clip_l, $fn = 4); } */ // lid switch_w = 14; switch_h = 9; // tady je jen 1.5* misto 2x, at je to tesnejsi lid_d = int_d + 2*wall/cos(30) + 1.5*clip_w/cos(30); lid_h = clip_dist + 3*wall+3*clip_w + switch_h; support_w = 4; support_off = 3; translate([0, int_d + 5, 0]) difference() { cylinder(r = lid_d/2 + wall/cos(30), $fn = 6, h = lid_h); translate([-switch_w/2, 0, wall+eps]) cube([switch_w, infty, switch_h]); difference() { union() { translate([0, 0, wall+switch_h]) cylinder(r = lid_d/2, $fn = 6, h = lid_h); translate([0, 0, wall]) cylinder(r = lid_d/2-2*wall/cos(30), $fn = 6, h = lid_h); intersection() { // switch side w/o support translate([0, 0, wall]) cylinder(r = lid_d/2, $fn = 6, h = lid_h); translate([-infty/2, 0, 0]) cube(infty); } } for (angle = [60:180:360]) rotate([0, 0, angle]) translate([-clip_l/2, lid_d*cos(30)/2, switch_h+clip_dist + 2*wall]) { scale([1, 1, 3]) rotate([0, 90, 0]) cylinder(r = clip_w, h = clip_l, $fn = 4); } translate([-infty/2, -support_w-support_off, switch_h-eps]) cube([infty, support_w, wall]); } }