$fn=120; BORDER=1.2; difference() { intersection() { linear_extrude(28) union() { translate([4.5,0]) import("/tmp/reddot-cover.svg"); square([5,5]); } translate([0,13,14]) rotate([0,90,0]) linear_extrude(55) union() { resize([38,26]) circle(14); translate([-19, -13]) square([38, 13]); } } // Stretched diff model translate([4.5,0, BORDER]) { intersection() { linear_extrude(28-BORDER*2) union() { offset(-BORDER) import("/tmp/reddot-cover.svg"); translate([BORDER, -10]) square([47.5-BORDER*2, 10+BORDER]); translate([46, -2]) square([3, 10]); } translate([0,13,14]) rotate([0,90,0]) linear_extrude(55) union() { offset(-BORDER) resize([38,26]) circle(14); translate([-19, -18]) square([38, 18]); } } } //Front wire holder translate([2, -0.5, 2]) cube([2.5, 6, 11]); translate([2, -0.5, 2+11+2]) cube([2.5, 6, 11]); } // Lateral holders translate([30,4.5,0.1]) translate([0,0,-5+BORDER+1.3]) difference() { sphere(5); translate([-5, -5, -10+BORDER+1.3]) cube(10); } translate([30,4.5,28-0.1]) mirror([0,0,1]) translate([0,0,-5+BORDER+1.3]) difference() { sphere(5); translate([-5, -5, -10+BORDER+1.3]) cube(10); }