// PRUSA iteration4 // Einsy base // GNU GPL v3 // Josef Průša and contributors // http://www.reprap.org/wiki/Prusa_Mendel // http://prusamendel.org module CubicPattern(Xdim, Ydim) { for (x =[0:12:Xdim-10]) { for (y =[0:12:Ydim-10]) { translate([x,y,-0.2])cube([10,10,0.4]); } } } module BottomCubic() { difference() { translate([5,5,0]) CubicPattern(110,90); translate([11,0,-1]) cube( [ 11, 40 , 4 ] ); translate([0,0,-1]) cube( [ 11, 28 , 4 ] ); translate([0,64,-1]) cube( [ 16, 28 , 4 ] ); translate([95,64,-1]) cube( [ 20, 28 , 4 ] ); translate([95,0,-1]) cube( [ 20, 28 , 4 ] ); translate([76,-10,-1]) cube( [ 20, 20 , 4 ] ); translate([52,76,-1]) cube( [ 12, 20 , 4 ] ); } } // main body module main_body() { // side panel cube( [ 118.5 , 92 , 2 ] ); // upper panel cube( [ 1.5 , 92 , 35 ] ); // rear panel translate( [ 0 , 90 , 0 ] ) cube( [ 105.5 , 2 , 35 ] ); // heatbed ziptie reinforcement translate( [ 63 , 88.5 , 0.5 ] ) cube( [ 6.5 , 2 , 34.5 ] ); // upper panel frame reinforcement translate( [ 0 , 0 , 1 ] ) cube( [ 5.5 , 7 , 34 ] ); // side panel reinforcement translate( [ 0 , 0 , 1 ] ) cube( [ 9 , 92 , 3 ] ); translate( [ 98 , 0 , 0 ] ) cube( [ 9 , 92 , 4 ] ); // translate([21,81,0]) cylinder( h = 4.5, r = 2.5, $fn=30); translate([21+58,81,0]) cylinder( h = 4.5, r = 2.5, $fn=30); difference() { // bottom side reinforcement translate( [ 98 , 86 , 0 ] ) cube( [ 7.5 , 6 , 35 ] ); translate( [ 96 , 79 , 0 ] ) rotate([0,0,45]) cube( [ 7.5 , 6 , 36 ] ); } translate( [ 0 , 85 , 0 ] ) cube( [ 5.5 , 7 , 35 ] ); // screw mounting block translate( [ 54 , 84 , 0 ] ) cube( [ 9.5 , 7 , 35 ] ); // frame side panel translate( [ 20 , 0 , 0 ] ) cube( [ 80 , 3 , 5 ] ); // Einsy mounting holes translate( [ 102.5 , 14 , 1 ] ) rotate([0,0,90]) cylinder( h = 7, r = 5.5, $fn=6); translate( [ 102.5 , 75 , 1 ] ) rotate([0,0,90]) cylinder( h = 7, r = 5.5, $fn=6); translate( [ 7.5 , 14 , 1 ] ) cylinder( h = 7, r = 5.5, $fn=6); translate( [ 7.5 , 75 , 1 ] ) cylinder( h = 7, r = 5.5, $fn=6); // corners reinforcement translate( [ 0 , 75 , 1 ] ) cube( [ 13 , 16 , 6 ] ); translate( [ 0 , 70.25 , 1 ] ) cube( [ 7.5 , 11 , 6 ] ); translate( [ 0 , 7.75 , 1 ] ) cube( [ 7.5 , 11 , 6 ] ); translate( [ 0 , 0 , 1 ] ) cube( [ 13 , 14 , 6 ] ); // frame mounting screw blocks //upper translate( [ 1 , 0 , 0 ] ) cube( [ 28 , 4 , 10 ] ); translate( [ 18.45 , 0 , 0 ] ) cube( [ 3 , 4 , 5.5] ); //lower translate( [ 98 , 0 , 0 ] ) cube( [ 20.5 , 4 , 10 ] ); // heatbed filament holder body translate( [ 81.6 , 90.35 , 24 ] ) rotate([0,90,0]) cylinder( h = 18, r = 5, $fn=6); // door closing corner translate( [ 102 , 88.5 , 35 ] ) cylinder( h = 3, r1=2.5, r2=1, $fn=30); // doors pin upper translate( [ 2 , 85 , 31 ] ) cube( [ 6 , 7 , 4] ); translate( [ 4 , 88.5 , 35 ] ) cylinder( h = 3, r1=2.5, r2=1, $fn=30); // x-axis cables entry hole body translate( [ 89 , 2 , 0 ] ) cylinder( h = 5, r = 6, $fn=6); } module ventilation_holes() { for ( i = [-5 : 8] ){ translate([46 + (i*5.5),10.5,-1]) cube([3.65,19+49.0,1.2]); translate([46 + (i*5.5),10.5,-1]) cube([3.65,18,10]); translate([46 + (i*5.5),10.5+25,-1]) cube([3.65,18,10]); translate([46 + (i*5.5),10.5+50,-1]) cube([3.65,18,10]); } } module cutouts(){ // side translate( [ 12 , 19 , 1 ] ) cube( [ 85.5 , 51 , 3 ] ); // Einsy M3 screws translate( [ 7.5 , 14 , -1 ] ) cylinder( h = 10, r = 1.9, $fn=30); translate( [ 102.5 , 14 , -1 ] ) cylinder( h = 10, r = 1.9, $fn=30); translate( [ 102.5 , 75 , -1 ] ) cylinder( h = 10, r = 1.9, $fn=30); translate( [ 7.5 , 75 , -1 ] ) cylinder( h = 10, r = 1.9, $fn=30); translate( [ 7.5 , 14 , 6 ] ) cylinder( h = 3, r1 = 1.9, r2=2.4, $fn=30); translate( [ 102.5 , 14 , 6 ] ) cylinder( h = 3, r1 = 1.9, r2=2.4, $fn=30); translate( [ 102.5 , 75 , 6 ] ) cylinder( h = 3, r1 = 1.9, r2=2.4, $fn=30); translate( [ 7.5 , 75 , 6 ] ) cylinder( h = 3, r1 = 1.9, r2=2.4, $fn=30); translate( [ 2 , 0 , 0 ] )ventilation_holes(); // frame mounting screws //upper translate( [ 18.5, -2 , 15.6 ] ) rotate([0,45,0]) cube( [ 15 , 10 , 10] ); translate( [ 16.5 , 8 , 5 ] ) rotate([90,0,0]) cylinder( h = 10, r = 1.6, $fn=30); translate( [ 16.5 , 9 , 5 ] ) rotate([90,0,0]) cylinder( h = 5, r = 3, $fn=30); translate( [ 15.15 , -2 , 5 ] ) cube( [ 2.7 , 15 , 10] ); translate( [ 15.1 , -2 , 7 ] ) rotate([0,5,0]) cube( [ 2.8 , 15 , 10] ); translate( [ 15.1 , -2 , 7 ] ) rotate([0,-5,0]) cube( [ 2.8 , 15 , 10] ); //lower translate( [ 110.5 , 9 , 5 ] ) rotate([90,0,0]) cylinder( h = 10, r = 1.6, $fn=30); translate( [ 110.5 , 9 , 5 ] ) rotate([90,0,0]) cylinder( h = 5, r = 3, $fn=30); translate( [ 118.5 , -2 , 6 ] ) rotate([0,-45,0]) cube( [ 5 , 15 , 15] ); translate( [ 94.5 , -2 , 8.5 ] ) rotate([0,45,0]) cube( [ 5 , 8 , 15] ); translate( [ 0 , -2 , -5 ] ) cube( [ 120 , 15 , 5] ); translate( [ 109.15 , -2 , 5 ] ) cube( [ 2.7 , 15 , 10] ); translate( [ 109.3 , -2 , 6.5 ] ) rotate([0,5,0]) cube( [ 2.5 , 15 , 10] ); translate( [ 109.2 , -2 , 6.5 ] ) rotate([0,-5,0]) cube( [ 2.5 , 15 , 10] ); // USB connector hole translate( [ -1 , 41.5 , 11 ] ) cube( [ 5.5 , 13 , 11 ] ); // reset button translate( [ -2 , 65 , 14 ] ) rotate([0,90,0]) cylinder( h = 10, r = 2, $fn=30); // door closing screw translate( [ 58.5 , 88 , -1 ] ) cylinder( h = 43, r = 1.9, $fn=30); // heatbed cable opening hole difference() { translate( [ 75.5 , 94 , 24 ] ) rotate([90,90,0]) cylinder( h = 5, r = 7, $fn=6); translate( [ 71 , 80 , 13.5 ] ) cube( [ 8 , 15 , 5] ); } translate( [ 73 , 80 , 20.5 ] ) cube( [ 5 , 15 , 15] ); // heatbed cable ziptie holes translate( [ 64 , 87 , 30 ] ) cube( [ 4 , 10 , 2 ] ); translate( [ 64 , 87 , 16 ] ) cube( [ 4 , 10 , 2 ] ); // heatbed filament holder hole translate( [ 81 , 89 , 24 ] ) rotate([0,90,0]) cylinder( h = 17, r = 1.8, $fn=30); translate( [ 81 , 89 , 24 ] ) rotate([0,90,0]) cylinder( h = 2, r = 2, r2=1.8, $fn=30); translate( [ 70 , 92 , 15 ] ) cube( [ 30 , 10 , 15] ); // nut traps HEX translate( [ 7.5 , 14 , -1 ] ){ cylinder( h = 4, r = 3.2, $fn=6); rotate([0,0,0]) resize([0,2,0]) cylinder( h = 4, r = 3.5, $fn=6); rotate([0,0,60]) resize([0,2,0]) cylinder( h = 4, r = 3.5, $fn=6); rotate([0,0,120]) resize([0,2,0]) cylinder( h = 4, r = 3.5, $fn=6); } translate( [ 102.5 , 14 , -1 ] ){ cylinder( h = 4, r = 3.2, $fn=6); rotate([0,0,0]) resize([0,2,0]) cylinder( h = 4, r = 3.5, $fn=6); rotate([0,0,60]) resize([0,2,0]) cylinder( h = 4, r = 3.5, $fn=6); rotate([0,0,120]) resize([0,2,0]) cylinder( h = 4, r = 3.5, $fn=6); } translate( [ 102.5 , 75 , -1 ] ){ cylinder( h = 4, r = 3.2, $fn=6); rotate([0,0,0]) resize([0,2,0]) cylinder( h = 4, r = 3.5, $fn=6); rotate([0,0,60]) resize([0,2,0]) cylinder( h = 4, r = 3.5, $fn=6); rotate([0,0,120]) resize([0,2,0]) cylinder( h = 4, r = 3.5, $fn=6); } translate( [ 7.5 , 75 , -1 ] ){ cylinder( h = 4, r = 3.2, $fn=6); rotate([0,0,0]) resize([0,2,0]) cylinder( h = 4, r = 3.5, $fn=6); rotate([0,0,60]) resize([0,2,0]) cylinder( h = 4, r = 3.5, $fn=6); rotate([0,0,120]) resize([0,2,0]) cylinder( h = 4, r = 3.5, $fn=6); } translate( [ 7.5 , 14 , -1 ] ) cylinder( h = 1.5, r1 = 6, r2=3.2, $fn=6); translate( [ 102.5 , 14 , -1 ] ) cylinder( h = 1.5, r1 = 6, r2=3.2, $fn=6); translate( [ 102.5 , 75 , -1 ] ) cylinder( h = 1.5, r1 = 6, r2=3.2, $fn=6); translate( [ 7.5 , 75 , -1 ] ) cylinder( h = 1.5, r1 = 6, r2=3.2, $fn=6); translate( [ 58.5 , 88 , -1 ] ) cylinder( h = 4, r = 3.2, $fn=30); // door closing corners translate( [ 8 , 80 , 28 ] ) rotate([0,0,45]) cube( [ 5 , 5 , 10] ); translate( [ 106 , 81 , 4 ] ) rotate([0,0,45]) cube( [ 5 , 5 , 40] ); // inner edges cutout translate( [ 54 , 79.5 , 2 ] ) rotate([0,0,45]) cube( [ 5 , 5 , 50] ); translate( [ 70 , 82.5 , 2 ] ) rotate([0,0,45]) cube( [ 5 , 5 , 50] ); translate( [ 6 , 80 , 7 ] ) rotate([0,0,45]) cube( [ 5 , 5 , 24] ); translate( [ 5.5 , 4 , 7 ] ) rotate([0,0,45]) cube( [ 3 , 5 , 29] ); // x axis cable hole translate( [ 89 , 2 , -1 ] ) cylinder( h = 10, r = 4, $fn=6); translate( [ 80 , -5 , -1 ] ) cube( [ 15, 5, 10] ); // large corner coutout translate( [ -27 , 80 , -54 ] ) rotate([50,0,45]) cube( [ 50, 50, 50] ); translate( [ 137.5 , 60 , -10 ] ) rotate([0,0,45]) cube( [ 50, 50, 50] ); } // extruder cable holder module ext_cable_holder() { difference() { // body union(){ rotate([90,0,0]) translate([-8, 26, -28]) rotate([0,90,0]) cylinder( h = 4, r1 = 8, r2=11, $fn=6); rotate([90,0,0]) translate([-4, 26, -28]) rotate([0,90,0]) cylinder( h = 4, r1 = 11, r2=11, $fn=6); rotate([90,0,0]) translate( [ 1.5 , 26 , -28 ] ) rotate([0,90,0]) cylinder( h = 10, r1 = 13, r2=7.5, $fn=6); translate( [-4, 28, 16.5 ] ) rotate([0,45,0]) cube( [ 6 , 5.5 , 7 ] ); } // upper cut translate( [ -15 , 13 , 15] ) cube( [ 15 , 15 , 25 ] ); // lower cut translate( [ 1.5 , 26 , 10] ) cube( [ 15 , 15 , 26 ] ); // ziptie holder difference(){ rotate([90,0,0]) translate([-4, 26, -28]) rotate([0,90,0]) cylinder( h = 3.5, r = 8.5, $fn=30); rotate([90,0,0]) translate([-5, 26, -28]) rotate([0,90,0]) cylinder( h = 5.5, r = 6.2, $fn=30); } } } module rambo_cover() { //ext_cable_holder(); difference(){ main_body(); cutouts(); // main hole translate( [ -10 , 28 , 26 ] ) rotate([0,90,0]) cylinder( h = 24, r = 6.8, $fn=30); // cable opening slot translate( [ -15 , 25 , 30 ] ) cube( [ 30 , 6 , 10 ] ); } } difference() { union() { rambo_cover(); // inner extruder cable holder difference() { rotate([90,0,0]) translate( [ 1.5 , 26 , -28 ] ) rotate([0,90,0]) cylinder( h = 10, r1 = 13, r2=8, $fn=6); translate( [ 0 , 13 , 14] ) cube( [ 15 , 15 , 25 ] ); translate( [ 0 , 25 , 35] ) cube( [ 15 , 15 , 10 ] ); translate( [ -5 , 28 , 26 ] ) rotate([0,90,0]) cylinder( h = 20, r1 = 7, r2=6, $fn=30); translate( [ -15 , 26 , 30 ] ) cube( [ 30 , 5 , 6 ] ); } difference() { union() { translate( [ 4.5 , 31.2 , 26 ] ) rotate([0,90,0]) cylinder( h = 7, r1 = 4.2, r2=4,$fn=6); translate( [ 4.5 , 31 , 22.5] ) cube( [ 7 , 3 , 7 ] ); translate( [ 4.5 , 31.1 , 20] ) cube( [ 7 , 2 , 7 ] ); } translate( [ -5 , 31.2 , 26 ] ) rotate([0,90,0]) cylinder( h = 20, r = 1.75, $fn=30); translate( [ 4, 31.2 , 26 ] ) rotate([0,90,0]) cylinder( h =3, r1 = 1.9, r2=1.75, $fn=30); translate( [ 2.8 , 26 , 22.5] ) rotate([0,0,-20]) cube( [ 9 , 3 , 7 ] ); } difference() { union() { rotate([90,0,0]) translate([-9, 26, -28]) rotate([0,90,0]) cylinder( h = 4, r1 = 10, r2=13, $fn=6); rotate([90,0,0]) translate([-5, 26, -28]) rotate([0,90,0]) cylinder( h = 5, r=13, $fn=6); } translate( [ -10 , 28 , 26 ] ) rotate([0,90,0]) cylinder( h = 24, r = 6.8, $fn=30); translate( [ -15 , 26 , 30 ] ) cube( [ 30 , 5 , 10 ] ); translate( [ -15 , 15, 30 ] ) cube( [ 15 , 30 , 10 ] ); // ziptie holder difference() { rotate([90,0,0]) translate([-4, 26, -28]) rotate([0,90,0]) cylinder( h = 3.5, r = 10, $fn=30); rotate([90,0,0]) translate([-5, 26, -28]) rotate([0,90,0]) cylinder( h = 5.5, r = 7.7, $fn=30); } } difference() { translate( [ -5 , 22, 15.6 ] ) rotate([0,45,0]) cube( [ 10 , 12 , 10 ] ); translate( [ 0 , 21, 8 ] ) cube( [ 10 , 14 , 15 ] ); translate( [ -5 , 21, 16 ] ) cube( [ 10 , 14 , 15 ] ); } } translate( [ -16.2 , 18, 34 ] ) rotate([0,45,0]) cube( [ 10 , 20 , 10 ] ); translate( [ -16.2 , 28, 31 ] ) rotate([45,0,0]) cube( [ 40 , 10 , 10 ] ); //BottomCubic(); translate( [ 14.5, 10, -2 ] ) cube( [ 4 , 24 , 10 ] ); translate( [ 16.5, 10, -2 ] ) cylinder( h = 20, r = 2, $fn=30); translate( [ 16.5, 34, -2 ] ) cylinder( h = 20, r = 2, $fn=30); // screw body edge translate( [ 65 ,74.2 , 2] ) rotate([0,0,45]) cube( [ 10 , 10 , 50 ] ); // lightening slots translate( [ 100 ,21 , 2] ) cube( [ 5 , 48 , 5 ] ); translate( [ 3 ,21 , 2] ) cube( [ 4.5, 48 , 5 ] ); // bottom holes print supports translate( [ 7.5 , 14 ,0] ){ translate( [ 0 , 0 , 2.5 ] ) cube([3.2,5.6,2], center=true); translate( [ 0 , 0 , 3 ] ) cube([3.2,3.8,2], center=true); } translate( [ 102.5 , 14 ,0] ){ translate( [ 0 , 0 , 2.5 ] ) cube([3.2,5.6,2], center=true); translate( [ 0 , 0 , 3 ] ) cube([3.2,3.8,2], center=true); } translate( [ 102.5 , 75 ,0] ){ translate( [ 0 , 0 , 2.5 ] ) cube([3.2,5.6,2], center=true); translate( [ 0 , 0 , 3 ] ) cube([3.2,3.8,2], center=true); } translate( [ 7.5 , 75 ,0] ){ translate( [ 0 , 0 , 2.5 ] ) cube([3.2,5.6,2], center=true); translate( [ 0 , 0 , 3 ] ) cube([3.2,3.8,2], center=true); } translate( [ 58.5 , 88 ,0] ){ intersection(){cylinder(r=3.2, h=10, $fn=30); translate( [ 0 , 0 , 2.5 ] ) cube([3.8,8,2], center=true);} translate( [ 0 , 0 , 3 ] ) cube([3.8,3.8,2], center=true); } translate([21,81,-5]) cylinder( h = 24, r = 0.8, $fn=30); translate([21+58,81,-5]) cylinder( h = 24, r = 0.8, $fn=30); translate([115,68,1.5]) rotate([0,0,90]) linear_extrude(height = 0.8) { text("R1",font = "helvetica:style=Bold", size=6, center=true); } }