// Clips for holding foamboard cover panels to solidoodle. // foamboard is the thickness of the foamboard plus whatever slop seems // advisable for ease of sliding the panels (all dimensions are millimeters). // foamboard = 6; // middlebar is the thickness of the middle bar which determines how far off // the steel frame the foamboard will be held. This should be large enough // to clear the end of any rods, bolt heads, rivets, etc which stick out of // the frame. // middlebar = 4; // bars is the thickness of the other bars making up the clip. // bars = 2.25; // leadingtooth is the gap between the middle bar and the leading tooth // that sticks down from the top bar. // leadingtooth = 0.2; // trailingtooth is the gap between the middle bar and the innermost // tooth that sticks down from the top bar. // trailingtooth = 0.35; // clipheight is the height of the clip (too big and there are places it won't // fit on the frame). I made the bottom, left, and right clips 20mm high // and the short clips 10mm high. // clipheight = 20; // shortedge is the shortest bar that holds the edge of the foamboard. // shortedge = 15; // longedge is the longest edge that clips to the side of the frame. // longedge = 20; // cornerprong is the length of the prong that sticks out the other side of the // clip to hold a small strip of foamboard at the corner of the case to help seal // cracks a bit. // cornerprong = 6; // exactfoam is the exact thickness of the foamboard which determine the space // allowed to make a press fit for small strips of foamboard to fit under on the // corners. // exactfoam = 5.2; // propsize is the size of the additional prop piece you can rest the foam // against after pulling it all the way up to expose the inside of the printer. // I use same size of foamboard for left and right clips and zero (to disable // this) for the bottom clips. // propsize = foamboard; // righthand is set to non-zero to print a righthanded version, defaults to // lefthanded // righthand = 0; toothyinc = (trailingtooth - leadingtooth) / 6.0; toothxinc = (bars + 0.25); firstoothy = (bars+foamboard+middlebar+bars+(bars/2.0))-(bars-trailingtooth); firstoothx = (bars/2.0); module clip() { difference() { union() { cube([shortedge,bars,clipheight]); cube([bars,bars+foamboard+middlebar,clipheight]); translate([0,foamboard+bars,0]) cube([longedge,middlebar,clipheight]); translate([0,bars+foamboard+middlebar+bars,0]) cube([longedge,bars,clipheight]); translate([shortedge,bars+foamboard,0]) cube([longedge-shortedge,middlebar+bars+bars,clipheight]); translate([firstoothx,firstoothy,0]) cylinder(h=clipheight,r=(bars/2.0)); translate([firstoothx+toothxinc,firstoothy+toothyinc,0]) cylinder(h=clipheight,r=(bars/2.0)); translate([firstoothx+2*toothxinc,firstoothy+2*toothyinc,0]) cylinder(h=clipheight,r=(bars/2.0)); translate([firstoothx+3*toothxinc,firstoothy+3*toothyinc,0]) cylinder(h=clipheight,r=(bars/2.0)); translate([firstoothx+4*toothxinc,firstoothy+4*toothyinc,0]) cylinder(h=clipheight,r=(bars/2.0)); translate([firstoothx+5*toothxinc,firstoothy+5*toothyinc,0]) cylinder(h=clipheight,r=(bars/2.0)); if (cornerprong > 0) { translate([-cornerprong,(foamboard+middlebar)-exactfoam,0]) cube([cornerprong+bars,bars,clipheight]); } if (propsize > 0) { translate([0,-propsize,clipheight-bars]) cube([shortedge,propsize+bars,bars]); translate([0,-propsize,clipheight-bars]) cube([shortedge,bars,propsize+bars]); translate([0,-propsize,clipheight-bars]) rotate(a=[0,90,0]) linear_extrude(height=shortedge) polygon(points=[[0,0],[0,propsize],[propsize,propsize]]); translate([0,-propsize,clipheight-bars]) cube([bars,propsize+bars,propsize+bars]); } } translate([shortedge+0.5,bars+foamboard+middlebar+(bars/2.0),0]) cylinder(h=clipheight,r=(bars+0.75)/2.0); } } // A brim generated by slic3r is irritating and makes it hard to clear the // teeth, so manufacture my own "brim" that just sticks out in a few places // (because this does come lose when I print without a brim :-). // module clipbrim() { union() { translate([0,-5,0]) cube([shortedge,5+bars,0.3]); translate([0,bars+foamboard+middlebar+bars,0]) cube([longedge,5+bars,0.3]); translate([-5,-5,0]) cube([5+bars,5+bars+foamboard+middlebar,0.3]); translate([longedge,bars+foamboard,0]) cube([5+bars,middlebar+bars+bars+5,0.3]); } } // To print right hand versions, use mirror([0,1,0]) on each element in union. union() { if (righthand == 0) { clip(); clipbrim(); } else { mirror([0,1,0]) clip(); mirror([0,1,0]) clipbrim(); } }