// PRUSA iteration4 // Z axis top holder // GNU GPL v3 // Josef Průša and contributors // http://www.reprap.org/wiki/Prusa_Mendel // http://prusamendel.org module z_top_base() { translate([0, -5, 0]) cube([8, 45, 16]); // plate touching the base translate([0, -5, 0]) cube([33, 3.6, 12]); // plate touching the base translate([0, -5, 0]) cube([38, 45, 5]); // plate touching the base translate([25 + 4.3, 3.2, 5]) rotate([0, 0, 0]) cylinder(h = 2.5, r = 7, $fn = 60); } module z_top_fancy() { // Corner cutouts translate([0.5, 0.5, 0]) rotate([0, 0, -45 - 180]) translate([-15, 0, -1]) cube([30, 30, 51]); // frame side angle translate([-13, 40 + 5 + 10.2, -3]) rotate([0, 0, -45 - 0]) translate([0, 0, -1]) cube([30, 30, 51]); translate([8, 28, -3]) translate([0, 0, -1]) cube([50, 50, 51]); // cut to shape translate([4, -1, 12]) rotate([0, 0, 0]) translate([0, -5, 0]) cube([30, 50, 30]); translate([6, 0, 12]) rotate([0, -45, 0]) translate([0, -5, 0]) cube([30, 50, 30]); translate([8, 3.9, 10]) rotate([0, -45, 0]) translate([0, -5, 0]) cube([30, 50, 30]); // nice edges translate([38 - 2.5, -5 + 2.5, -3]) rotate([0, 0, -45 - 90]) translate([-15, 0, -1]) cube([30, 30, 51]); translate([-10, 49, 3.2]) rotate([45, 0, 0]) translate([-15, 0, -1]) cube([50, 20, 20]); // outer corner translate([35, 26, -3]) rotate([0, 0, -45]) translate([-15, 0, -1]) cube([30, 30, 51]); translate([0, 0, 5]) rotate([45 + 180, 0, 0]) rotate([0, 0, -45 + 90]) translate([0, 0, -15]) cube([30, 30, 30]); // Stiffner cut out translate([33, -1, 7.5]) rotate([0, -45, 0]) translate([0, -5, 0]) cube([30, 50, 30]); // side cut out translate([-6, -5, -5.55]) rotate([45, 0, 0]) cube([50, 5, 5]); translate([-6, -5, -0.8]) rotate([0, 45, 0]) cube([5, 50, 5]); } module z_top_holes() { // Screw holes frame translate([-1, 10, 10]) rotate([0, 90, 0]) cylinder(h = 20, r = 1.6, $fn = 30); translate([-1, 10 + 20, 10]) rotate([0, 90, 0]) cylinder(h = 20, r = 1.6, $fn = 30); // Screw heads translate([4, 10, 10]) rotate([0, 90, 0]) cylinder(h = 20, r = 3.1, $fn = 30); translate([4, 10 - 3.1, 10]) cube([10, 6.2, 10]); translate([4, 10 + 20, 10]) rotate([0, 90, 0]) cylinder(h = 20, r = 3.1, $fn = 30); translate([4, 10 + 20 - 3.1, 10]) cube([10, 6.2, 10]); // Z rod holder translate([25 + 4.3, 3, 0.6]) rotate([0, 0, 0]) cylinder(h = 50, r = 4.05, $fn = 50); translate([25 + 4.3, 3, 3.4]) rotate([0, 0, 0]) cylinder(h = 4.2, r2 = 4.3, r1 = 4.05, $fn = 50); // material saving cut translate([16, 10, -4]) rotate([0, 0, 0]) cylinder(h = 50, r = 8, $fn = 6); translate([16, 28, -4]) rotate([0, 0, 0]) cylinder(h = 50, r = 8, $fn = 6); // z screw hole translate([25 + 4.3, 3 + 17, 3]) rotate([0, 0, 0]) cylinder(h = 50, r = 5.8, $fn = 15); // screw hole translate([25 + 4.3, 3 + 17, 0.6]) rotate([0, 0, 0]) cylinder(h = 50, r = 5.8, $fn = 15); // screw hole translate([25 + 4.3 - 1, 3, 0.6]) cube([2, 15, 8]); // it's bit up because it helps with printing //selective infill translate([36.5, 1.5, 0.5]) cube([0.1, 20, 3.5]); translate([10, -3, 0.5]) cube([22, 0.1, 3.5]); translate([3, 1, 0.5]) cube([18, 0.1, 3.5]); translate([1.5, 19, 0.5]) cube([21, 0.1, 3.5]); } module z_top_right() { difference() { z_top_base(); z_top_fancy(); z_top_holes(); //version translate([12, -1.5, 10]) rotate([90, 180, 180]) linear_extrude(height = 0.6) { text("R2", font = "helvetica:style = Bold", size = 4, center = true); } } } module z_top_left() { translate([0, -12, 0]) mirror([0, 1, 0]) difference() { z_top_base(); z_top_fancy(); z_top_holes(); //version translate([19, -1, 10]) rotate([90, 180, 0]) linear_extrude(height = 0.6) { text("R2", font = "helvetica:style = Bold", size = 4, center = true); } } } // Final parts z_top_left(); z_top_right();