- cylinder(r = batt_diam/2-lid_sep, h = wall+cable_sep-lid_sep);
- translate([-clip_pretension, batt_diam/2 - pcb_width+lid_sep,
- batt_diam/2+pcb_comp_h+pcb_thick-lid_sep])
- cube([wall+cable_sep-lid_sep, pcb_width-2*lid_sep, eps]);
- translate([cable_sep+wall/2-clip_pretension, batt_diam/2 - pcb_width + 1.5*wall +lid_sep,
- batt_diam/2+pcb_comp_h+pcb_thick+wall/2-lid_sep])
- cube([wall/2-lid_sep, pcb_width-2*wall-2*lid_sep, eps]);
- // rear cone
- translate([cable_sep+wall-lid_sep, 0, -batt_diam/2-wall]) difference() {
- scale([0.5, 1, 1])
- cylinder(r = batt_diam/2 - lid_sep, h = eps);
- translate([-infty, -infty/2, -infty/2]) cube(infty);
- };
+ cylinder(r = batt_diam/2-lid_sep, h = wall-lid_sep);
+ translate([-clip_pretension, batt_diam/2 - pcb_width + 0.5*wall + lid_sep,
+ batt_diam/2+2*pcb_comp_h+pcb_thick-lid_sep])
+ cube([wall+clip_pretension, pcb_width-0.5*wall-1.5*lid_sep, eps]);
+ };
+ // outer part of the clip behind the battery contacts
+ for (x=[1, -1]) scale([x, 1, 1]) translate([batt_len/2+2*wall+cable_sep+lid_sep, 0, 0]) hull() {
+ translate([0, -batt_diam/2 - wall, -body_top_h-wall/2-lid_sep])
+ cube([wall-lid_sep, batt_diam + 2*wall, wall/2]);
+ difference() {
+ scale([0.3, 1, 1])
+ sphere(batt_diam/2+wall);
+ translate([-infty/2, -infty/2, -infty-body_top_h-lid_sep+2*wall])
+ cube(infty);
+ translate([-infty-clip_pretension, -infty/2, -infty/2])
+ cube(infty);