// holder for receiver // shame the diamond tabs arent mathematically aligned, using magic numbers instead... width=34; // receiver box width length=43; // " length height=16; // " height standoff=9; // height of base thickness=1.6; // thickness of walls tabwidth=length/4; // width of cutout/tab slot slotwidth=6; // anten width keydia=4; // diamond shape diameter, that keys into lid lidlen=18; // important that we avoid the servo leads... // so this is same as length, but for the lid toler=0.98; // scale lid slightly // lid translate([lidlen/2+thickness*2,0,0]) scale([toler,1/toler,1/toler]) translate([0,0,thickness]) { translate([-lidlen/2,-(width+thickness*4)/2,-thickness]) cube([lidlen,width+thickness*4,thickness]); for(m=[0,180]) rotate([0,0,m]) { translate([-tabwidth/2,width/2,0]) // smaller inner tab cube([tabwidth,thickness,height/2]); // dont use all the height, we want it to flex translate([-lidlen/2,width/2+thickness,0]) // larger outer tab cube([lidlen,thickness,height+standoff+thickness*0]); rotate([0,0,180]) translate([0,width/2+thickness,height+standoff/2]) rotate([90,0,0]) rotate([0,0,45]) hull(){ translate([-keydia/2,-keydia/2,0]) cube([keydia,keydia,thickness/10]); translate([-(keydia-thickness*2)/2, -(keydia-thickness*2)/2,thickness]) cube([keydia-thickness*2,keydia-thickness*2,thickness/10]); } } } // base translate([-length/2-thickness*2,0,standoff]) difference() { translate([-length/2-thickness,-width/2-thickness,-standoff]) // main cube object cube([length+thickness*2,width+thickness*2,height+standoff+thickness]); translate([-length/2,-width/2,thickness]) // hollow block for receiver cube([length,width,height+1]); translate([-length/2,-width/2,-standoff-1]) // hollow block for base cube([length,width,standoff]); translate([-tabwidth/2,-width/2-thickness-1,thickness]) // two tab holes on long sides cube([tabwidth,width+thickness*2+2,height+1]); translate([-length/2-thickness*2,-slotwidth/2,thickness]) // slot cube([thickness+2,slotwidth,height+1]); translate([0,0,-thickness*2-0.8]) // diamond cut out.. beware of magic number rotate([90,45,0]) translate([-keydia/2,-keydia/2,-width/2-thickness-1]) cube([keydia,keydia,width+thickness*2+2]); translate([-length/2+standoff,-width/2+standoff,-thickness]) // hole in center of base cube([length-standoff*2,width-standoff*2,thickness+2]); }