// PRUSA iteration4 // Z axis bottom holder // GNU GPL v3 // Josef Průša and contributors // http://www.reprap.org/wiki/Prusa_Mendel // http://prusamendel.org module z_bottom_base() { translate([0, -1.5, 0]) cube([7.5, 49, 16 + 20]); // plate touching the base translate([0, -5, 0]) cube([30, 3.7, 22]); // plate touching the base translate([0, 42, 0]) cube([30, 5.5, 22]); // plate touching the base translate([0, -5, 0]) cube([50, 52.5, 7]); // plate touching the base } module z_bottom_fancy() { // corner cutouts translate([0.5, -2.5, -2]) rotate([0, 0, -45 - 180]) translate([-15, 0, -1]) cube([30, 30, 51]); translate([0.5, 40 - 0.5 + 5, -2]) rotate([0, 0, -45 + 90]) translate([-15, 0, -1]) cube([30, 30, 51]); translate([8, 0, 12 + 20 + 6]) rotate([0, -90, 0]) translate([0, -5, 0]) cube([30, 50, 30]); translate([21, -2, 12 + 8]) rotate([45, 0, 0]) rotate([0, -90, 0]) translate([0, -5, 0]) cube([30, 50, 30]); translate([25, 20, 12 + 30]) rotate([-45, 0, 0]) rotate([0, -90, 0]) translate([0, -5, 0]) cube([30, 50, 30]); translate([50 - 2.5, -5 + 2.5 + 67, -2]) rotate([0, 0, -45 - 90]) translate([-15, 0, -1]) cube([30, 30, 51]); translate([50 - 2.5, -5 + 2.5, -2]) rotate([0, 0, -45 - 90]) translate([-15, 0, -1]) cube([30, 30, 51]); translate([-38, -10, -2]) rotate([0, 45, 0]) cube([30, 60, 30]); // Stiffner cut out translate([30, 0, 7.5]) rotate([0, -45, 0]) translate([0, -5, 0]) cube([30, 60, 30]); translate([-5, -10, -8.0]) rotate([45, 0, 0]) cube([60, 10, 10]); translate([-5, 52.0, -8.5]) rotate([45, 0, 0]) cube([60, 10, 10]); translate([47, -10, -2]) rotate([0, 45, 0]) cube([30, 60, 30]); translate([49, 37.5, -2]) rotate([0, 45, 45]) cube([30, 30, 30]); translate([29, -16.7, -2]) rotate([0, 45, -45]) cube([30, 30, 30]); } module z_bottom_holes() { // Frame mounting screw holes translate([-1, 10, 12]) rotate([0, 90, 0]) cylinder(h = 20, r = 1.6, $fn = 50); translate([-1, 10 + 20, 12]) rotate([0, 90, 0]) cylinder(h = 20, r = 1.6, $fn = 50); translate([-1, 10 + 10, 32]) rotate([0, 90, 0]) cylinder(h = 20, r = 1.6, $fn = 50); // Frame mounting screw head holes translate([4, 10, 12]) rotate([0, 90, 0]) cylinder(h = 20, r = 3.1, $fn = 30); translate([4, 10 + 20, 12]) rotate([0, 90, 0]) cylinder(h = 20, r = 3.1, $fn = 30); translate([4, 10 + 10, 32]) rotate([0, 90, 0]) cylinder(h = 20, r = 3.1, $fn = 30); translate([4, 10 + 10 - 3.1, 10 + 20 + 2]) cube([10, 6.2, 10]); translate([4, 10, 38]) rotate([0, 45, 0]) cube([10, 20, 10]); // Z rod holder difference() { translate([25 + 4.3, 3, -0.1]) rotate([0, 0, 0]) cylinder(h = 5.6, r = 4.05, $fn = 50); translate([23.3, -5, 5.45 - 0.222]) cube([5, 20, 5]); translate([23.3 + 7, -5, 5.45 - 0.22]) cube([5, 20, 5]); } translate([25 + 4.3 - 1, 2, 4.5]) rotate([0, 0, 0]) cube([2, 10, 3]); translate([25 + 4.3, 3, -2.1]) rotate([0, 0, 0]) cylinder(h = 2.6, r1 = 6, r2 = 4, $fn = 50); translate([25 + 4.3 - 1, 3, 0.5]) cube([2, 10, 8]); // it's bit up because it helps with printing // motor mounting translate([25 + 4.3, 20, -1]) { translate([15.5, 15.5, -1]) cylinder(h = 20, r = 1.65, $fn = 50); translate([15.5, -15.5, -1]) cylinder(h = 20, r = 1.65, $fn = 50); translate([-15.5, 15.5, -1]) cylinder(h = 20, r = 1.65, $fn = 50); translate([-15.5, -15.5, -1]) cylinder(h = 20, r = 1.65, $fn = 50); translate([15.5, 15.5, -0.5]) cylinder(h = 2, r1 = 4.5, r2 = 3.2, $fn = 50); translate([15.5, -15.5, -0.5]) cylinder(h = 2, r1 = 4.5, r2 = 3.2, $fn = 50); translate([-15.5, 15.5, -0.5]) cylinder(h = 2, r1 = 4.5, r2 = 3.2, $fn = 50); translate([-15.5, -15.5, -0.5]) cylinder(h = 2, r1 = 4.5, r2 = 3.26, $fn = 50); // motor opening translate([0, 0, -1]) cylinder(h = 20, r = 11.2, $fn = 30); translate([0, 0, -0]) cylinder(h = 2, r2 = 11.2, r1 = 12, $fn = 30); difference() { union() { translate([15.5, 15.5, 0.9]) cylinder(h = 2.9, r = 3.2, $fn = 50); translate([15.5, -15.5, 0.9]) cylinder(h = 2.9, r = 3.2, $fn = 50); translate([-15.5, 15.5, 0.9]) cylinder(h = 2.9, r = 3.2, $fn = 50); translate([-15.5, -15.5, 0.9]) cylinder(h = 2.9, r = 3.2, $fn = 50); } translate([-25, 3.85, 3.2]) cube([55, 10, 2]); translate([-25, -27.15, 3.2]) cube([55, 10, 2]); translate([-25, -13.85, 3.2]) cube([55, 10, 2]); translate([-25, 17.15, 3.2]) cube([55, 10, 2]); translate([17.15, -20, 3.5]) cube([10, 60, 2]); translate([3.85, -20, 3.5]) cube([10, 60, 2]); translate([-27.15, -20, 3.5]) cube([10, 60, 2]); translate([-13.85, -20, 3.5]) cube([10, 60, 2]); } } } module z_bottom_right() { difference() { difference() { z_bottom_base(); z_bottom_fancy(); z_bottom_holes(); } translate([7.3, 25, 14]) rotate([90, 180, 90]) linear_extrude(height = 0.6) { text("R3", font = "helvetica:style = Bold", size = 5, center = true); } } } module z_bottom_left() { difference() { translate([0, -13, 0]) mirror([0, 1, 0]) difference() { z_bottom_base(); z_bottom_fancy(); z_bottom_holes(); } translate([7.3, -28.5, 14]) rotate([90, 180, 90]) linear_extrude(height = 0.6) { text("R3", font = "helvetica:style = Bold", size = 5, center = true); } } } z_bottom_right(); z_bottom_left();