// PRUSA MM upgrade // extruder-adaptor-MM // GNU GPL v3 // Josef Průša and contributors // http://www.reprap.org/wiki/Prusa_Mendel // http://prusamendel.org use module ext_body() { difference() { extruder_body(); extruder_mount_holes(); } translate( [40 , -9.5 , 0] ) cube( [ 2 , 2 , 30 ] ); } module m3nut() { difference() { cube([2,6,8]); translate([-0.5,3,3]) rotate([0,90,0]) cylinder(r=1.25, h=3, $fn=20); } } module ext_body_CP() { difference() { union(){ difference() { ext_body(); translate( [-5 , -49.5 , -26] ) cube( [ 50 , 40 , 80 ] ); translate([-20,26,-2]) cube([20,30,30]); // screw end larger hole translate([-20,40,12])rotate([0,90,0])cylinder(r=1.6, h=24, $fn=20); translate([2,40,11.5])rotate([0,90,0])cylinder(r=1.6, h=3, $fn=20); translate([2,40,12])rotate([0,90,0])cylinder(r=1.6, h=3, $fn=20); translate([2,40,12.5])rotate([0,90,0])cylinder(r=1.6, h=3, $fn=20); // M3 nuts translate([0,46,9]) m3nut(); translate([0,37,9]) m3nut(); } translate( [27 , -42 , 0] ) cube( [ 15, 33 , 8 ] ); translate( [0 , -42 , 0] ) cube( [ 30, 34 , 8 ] ); translate( [0 , -9.5 , 0] ) cube( [ 13, 9.5 , 22.5 ] ); translate( [29 , -9.5 , 0] ) cube( [ 13, 9.5 , 30 ] ); translate( [0 , -42 , 0] ) rotate([0,0,0]) cube( [ 6.3, 33 , 15 ] ); translate( [28.7 , -35 , 0] ) rotate([0,0,0]) cube( [ 6.3, 26 , 15 ] ); } translate([36.5, -36.5, -1]) cylinder( h = 60, r = 1.6, $fn=30); translate( [23 , -10 , 22.5] ) cube( [ 25, 11 , 30 ] ); translate( [35 , -20 , 22.5] ) rotate([0,45,0]) cube( [ 10, 30 , 10 ] ); translate( [-7 , -20 , 22.5] ) rotate([0,45,0]) cube( [ 10, 30 , 10 ] ); translate( [33.7 , -50.7 , 2.5] ) cube( [ 5.6, 17.5 , 2 ] ); translate( [-8 , -30 , 20] ) rotate([0,45,0]) cube( [ 10, 30 , 10 ] ); translate( [32.5 , -60 , 16] ) rotate([0,45,0]) cube( [ 20, 60 , 10 ] ); translate( [28 , -48.5 , 0] ) rotate([45,0,0]) cube( [ 20, 20 , 10 ] ); translate( [-5 , -10 , 15] ) rotate([0,0,0]) cube( [ 50, 15 , 20 ] ); translate([17.5, -0, 15]) rotate([90,0,0]) cylinder( h = 25, r = 6, $fn=30); translate([17.5, -2, 15]) rotate([90,0,0]) cylinder( h = 10, r = 10, $fn=30); translate( [6.3 , -50 , 3.8] ) rotate([0,0,0]) cube( [ 22.4, 30 , 30 ] ); translate( [-6 , -57.5 , -2] ) rotate([0,0,45]) cube( [ 20, 20 , 30 ] ); translate( [54 , -56.5 , -2] ) rotate([0,0,45]) cube( [ 20, 20 , 30 ] ); translate([-5,-24,9]) rotate([0,90,0]) cylinder( h=44, r=1.6, $fn=30 ); translate([25,-24,9]) rotate([0,90,0]) cylinder( h=5, r2=1.6, r1=3, $fn=30 ); translate([-3,-24,9]) rotate([0,90,0]) cylinder( h=6, r=3, $fn=30 ); translate( [-10 , -35 , 8] ) rotate([45,0,0]) cube( [ 60, 10 , 10 ] ); translate( [-10 , -42 , 1] ) rotate([45,0,0]) cube( [ 16.5, 20 , 10 ] ); translate( [42 , -16.8 , 8] ) rotate([0,0,45]) cube( [ 10, 10 , 10 ] ); translate( [31 , -27 , 4] ) rotate([0,0,0]) cube( [ 2, 6 , 12 ] ); } } ext_body_CP(); module Y_part_holes() { translate([17.5, -36.5, -1]) cylinder( h = 60, r = 1.6, $fn=30); translate([11, -14, -1]) cylinder( h = 60, r = 1.6, $fn=30); translate([24, -14, -1]) cylinder( h = 60, r = 1.6, $fn=30); translate([11, -27, -1]) cylinder( h = 60, r = 1.6, $fn=30); translate([24, -27, -1]) cylinder( h = 60, r = 1.6, $fn=30); } module Y_teflon_tubes() { translate([17.5, -7, 15]) rotate([90,0,0]) cylinder( h = 15, r = 2, $fn=30); translate([17.5, -20, 15]) rotate([90,0,13]) cylinder( h = 40, r = 2, $fn=30); translate([17.5, -20, 15]) rotate([90,0,-13]) cylinder( h = 40, r = 2, $fn=30); } module Y_part_back() { difference() { translate( [7 , -42 , 8] ) cube( [ 21, 32.5 , 7 ] ); Y_teflon_tubes(); Y_part_holes(); translate( [4 , -29.7 , 11] ) cube( [ 10, 5.6 , 2 ] ); translate( [21 , -29.7 , 11] ) cube( [ 10, 5.6 , 2 ] ); translate( [3 , -50 , 7] ) rotate([0,0,45]) cube([ 10, 10 , 20 ]); translate( [32 , -50 , 7] ) rotate([0,0,45]) cube([ 10, 10 , 20 ]); } } module Y_part_forward() { difference() { translate( [7 , -42 , 15] ) cube( [ 21, 32.5 , 7.5] ); Y_teflon_tubes(); Y_part_holes(); translate([17.5, -36.5, 19]) cylinder( h = 4, r = 2.8, $fn=30); translate([11, -14, 19]) cylinder( h = 4, r = 2.8, $fn=30); translate([24, -14, 19]) cylinder( h = 4, r = 2.8, $fn=30); translate([11, -27, 19]) cylinder( h = 4, r = 2.8, $fn=30); translate([24, -27, 19]) cylinder( h = 4, r = 2.8, $fn=30); translate( [3 , -50 , 7] ) rotate([0,0,45]) cube([ 10, 10 , 20 ]); translate( [32 , -50 , 7] ) rotate([0,0,45]) cube([ 10, 10 , 20 ]); } } module ex_body() { difference() { union() { // body // round body translate([-5.5,36.5,6])rotate([-90,0,0])cylinder(r=8.5, h=19, $fn=20); // body block translate([-13,36.5,5]) cube([17,19,10]); translate([-13,36.5,15]) cube([5,19,1]); // extruder body joint translate([-0,33.5,0]) cube([3,2,15]); translate([0,34,0]) cube([4,3,15]); translate([0,35.5,0]) rotate([0,0,45]) cube([2,2,15]); } // M3 screws translate([-20,49,12])rotate([0,90,0])cylinder(r=1.7, h=24, $fn=20); translate([-20,40,12])rotate([0,90,0])cylinder(r=1.7, h=24, $fn=20); translate([-14,49,12])rotate([0,90,0])cylinder(r=3, h=5, $fn=20); translate([-14,40,12])rotate([0,90,0])cylinder(r=3, h=5, $fn=20); // lower M3 screw end opening translate([2,49,11.5])rotate([0,90,0])cylinder(r=1.6, h=3, $fn=20); translate([2,49,12])rotate([0,90,0])cylinder(r=1.6, h=3, $fn=20); translate([2,49,12.5])rotate([0,90,0])cylinder(r=1.6, h=3, $fn=20); // upper M3 screw end opening translate([2,40,11.5])rotate([0,90,0])cylinder(r=1.6, h=3, $fn=20); translate([2,40,12])rotate([0,90,0])cylinder(r=1.6, h=3, $fn=20); translate([2,40,12.5])rotate([0,90,0])cylinder(r=1.6, h=3, $fn=20); // M3 nuts opening translate([0,46,9]) m3nut(); translate([0,37,9]) m3nut(); // flat bottom side translate([-20,33,-10]) cube([30,35,10]); // slot translate([-6,33,8]) cube([1.5,25,10]); // 45 / 30 deg edges translate([-15,32,12]) rotate([45,0,0]) cube([15,10,10]); translate([-20,55,13]) rotate([45,0,0]) cube([25,3,5]); translate([-2,45,-1]) rotate([0,30,0]) cube([15,15,15]); translate([7,46,-1]) rotate([0,0,30]) cube([15,11,25]); //PINDA mounting hole translate([-5.5,60,6])rotate([90,0,0])cylinder(r=4.1, h=30, $fn=50); // bottom cut translate([-15,54.5,-1]) cube([20 , 8,20]); } } ex_body();