// PRUSA iteration3 // PSU Cover MK3 // GNU GPL v3 // Josef Průša and contributors // http://www.reprap.org/wiki/Prusa_Mendel // http://prusamendel.org module CubeAdjust(Xdim, Zdim) { for (x = [6 : 11.2 : Xdim - 12]) { for (z = [6 : 11.2 : Zdim - 12]) { translate([x, -0.2, z]) cube([10, 0.4, 10]); } } } module nuttrap() { rotate([0, 180, 0]) difference() { union() { translate([-4.25, -7.5, 0]) difference() { translate([0, 0, 0]) cube([8.5, 9.2, 3]); translate([-1, 10.6, 0]) rotate([45, 0, 0]) cube([11.5, 5.7, 5.7]); } } translate([0, 0, -0.2]) rotate([0, 0, 30]) cylinder(r = 3.5, h = 15 - 1.5, $fn = 6); } } module m3_screw() { translate([0, 0, -0]) cylinder(r = 1.5, h = 12, $fn = 30); translate([0, 0, 12]) cylinder(r2 = 2.8, r1 = 1.5, h = 2, $fn = 30); translate([0, 0, 14]) cylinder(r = 2.8, h = 5, $fn = 30); } module PSU_COVER() { difference() { union() { translate([0, 0, -0.46]) cube([95, 50 + 15, 54.25]); // Base translate([0, 0, -3.5]) cube([14 - 0.5, 50 + 15, 5]); // Back pillar 1 translate([-1.6, 1, 51.5]) cube([5, 64, 3]); // Back pillar 1 translate([60 - 0.5, 0, -3.5]) cube([14, 50 + 15, 5]); // Back pillar 2 translate([91 + 4, 0, -0.46]) cube([6, 50 + 15, 54.25]); // Base for bracket translate([-2, 45.4 - 4.6, 19]) cube([2, 3, 15]); // nipple on the right translate([-1.6, 0, 0]) cube([1.65, 65, 2]); // Frame skirt 1 translate([-1.6, 0, 0]) cube([1.65, 30, 53.78]); // Frame skirt 2 translate([-1.6, 0, 51.32]) cube([1.65, 65, 2.46]); // Frame skirt 3 } //pretty corners translate([-11, -2, -2]) rotate([0, 0, -45]) cube([10, 10, 58]); translate([95 - 3 + 5 + 1, -2, -2]) rotate([0, 0, -45]) cube([10, 10, 58]); translate([-3, -9, -4.46]) rotate([-45, 0, 0]) cube([130, 10, 10]); translate([-3, -12, 54.78]) rotate([-45, 0, 0]) cube([130, 10, 10]); translate([-3, 45 + 15, -4.46]) rotate([-45, 0, 0]) cube([130, 10, 10]); translate([-3, 48 + 15, 54.78]) rotate([-45, 0, 0]) cube([130, 10, 10]); translate([95 - 3 + 3, 70, -2]) rotate([0, 0, -45]) cube([10, 10, 58]); translate([95, 0 - 10, -20]) rotate([0, -45, -45]) cube([20, 20, 20]); translate([95, 0 - 10, 45]) rotate([0, -45, -45]) cube([20, 20, 20]); translate([95, 60, -10]) rotate([-35, -45, -45]) cube([20, 20, 20]); translate([95, 60, 65]) rotate([-55, 48, -48]) cube([20, 20, 20]); translate([79, -5, 67.28]) rotate([0, 45, 0]) cube([20, 90, 20]); translate([79, -5, -13.96]) rotate([0, 45, 0]) cube([20, 90, 20]); translate([3, 3, 2]) cube([89.02, 50.02 + 15, 50.02 - 0.7]); // main cutout translate([-3, 50 - 16.4 + 15, 2]) cube([100, 16.5, 50 - 0.7]); // insert cutout translate([-3, 50 - 16.4 - 15.6 + 15, 2]) cube([10, 100, 17]); // right bottom cutout translate([85 + 2, 50 - 16.4 - 17.6 + 15 + 0.9, 2]) cube([10, 100, 50 - 0.7]); // left bottom cutout translate([85 + 2, 10, 2]) rotate([0, 0, 45]) cube([10 * sqrt(2), 10 * sqrt(2), 50 - 0.7]); translate([85 + 2, 3, 2]) cube([10, 17, 50 - 0.7]); translate([-3, 50 - 16.4 - 17.6 + 15 + 0.9, 2]) cube([100, 100, 10]); // bottom cutout translate([5.5, 0.5, 0]) { translate([48, 1.5, 40]) cube([27.5, 32.9, 30]); // socket cutout translate([48 - 4.5, 3 + 15.6 + 0.5, 40]) cylinder(r = 2, h = 50, $fn = 8); // socket right hole cutout translate([48 - 4.5 + 37 - 0.5, 3 + 15.6 + 0.5, 40]) cylinder(r = 2, h = 50, $fn = 8); // socket left hole cutout translate([1, 6, 44]) cube([12.5, 20, 30]); // switch cutout } translate([7 - 0.5 - 0.5, 40 - 1 + 15 + 0.7, -10]) cylinder(r = 2, h = 50, $fn = 15); // left back mounthole cutout translate([7 - 0.5 - 0.5, 40 - 1 + 15 + 0.7, -3.7]) cylinder(r2 = 2, r1 = 3.5, h = 1.5, $fn = 15); translate([67.5 - 0.7 - 0.5, 43.5 - 1 + 15 + 0.5, -10]) cylinder(r = 2, h = 50, $fn = 15); // right back mounthole cutout translate([67.5 - 0.7 - 0.5, 43.5 - 1 + 15 + 0.5, -3.7]) cylinder(r2 = 2, r1 = 3.5, h = 1.5, $fn = 15); translate([130, 32 + 26, 55 - 4 - 25]) rotate([0, -90, 0]) cylinder(r = 2.5, h = 50, $fn = 35); // Left side bracket screw hole translate([101.1, 32 + 26, 55 - 4 - 25]) rotate([0, -90, 0]) cylinder(r2 = 2.5, r1 = 4.1, h = 3, $fn = 15); translate([-0.3, 1, -1.2]) CubeAdjust(102, 54.25); for (i = [0 : 9]) { translate([20 + i, 6.8, -10]) cylinder(r = 3.5, h = 50); // left back mounthole cutout } } } module PSU_Y_REINFORCEMENT() { difference() { union() // base shape { translate([59.5, 0, -18]) cube([33, 6, 19]); // reinforcement plate translate([73.5, 5, -18]) cube([5, 16, 19]); // vertical_reinforcement } union() // cutouts { translate([87.5, -8, -20]) rotate([0, 45, 0]) cube([10, 20, 10]); //corner cut translate([52.5, -8, -20]) rotate([0, 45, 0]) cube([10, 20, 10]); //corner cut translate([68.5, 20, -34]) rotate([45, 0, 0]) cube([15, 23, 20]); //vertical reinf cutout translate([66.2, -0.2, -5]) cube([23.6, 0.4, 5.6]); translate([68 + 1.8 + 2.6, -0.2, -7.7 - 5.6]) cube([11.2, 0.4, 5.6]); translate([88, 8, -11.5]) rotate([90, 0, 0]) cylinder(h = 10, r = 1.8, $fn = 30); //hole A translate([68, 8, -11.5]) rotate([90, 0, 0]) cylinder(h = 10, r = 1.8, $fn = 30); //hole B translate([88, 8, -9.5]) rotate([90, 0, 0]) cylinder(h = 10, r = 1.8, $fn = 30); //hole A translate([68, 8, -9.5]) rotate([90, 0, 0]) cylinder(h = 10, r = 1.8, $fn = 30); //hole B translate([86.2, -10, -11.5]) cube([3.6, 20, 2]); // hole cut extension translate([66.2, -10, -11.5]) cube([3.6, 20, 2]); // hole cut extension } } } module psu_main() { difference() { union() { PSU_COVER(); PSU_Y_REINFORCEMENT(); translate([85.5, 4 + 15.6 + 0.5, 39.1 + 13.5]) rotate([0, 0, 180]) nuttrap(); translate([49, 4 + 15.6 + 0.5, 39 + 13.5]) rotate([0, 0, 180]) nuttrap(); } translate([-5, -9, -30]) cube([150, 10, 100]); } } module upper_part() { difference() { union() { psu_main(); translate([30, 3.5, 49.5]) cube([15, 11, 2.5]); translate([45, 3.5, 1]) cube([15, 11, 2.5]); } translate([-5, 0, -20]) cube([120, 3.5, 120]); translate([37, 9, 39]) rotate([0, 0, 0]) m3_screw(); translate([14.5, 8, 25]) rotate([0, -90, 0]) m3_screw(); translate([85.5, 8, 25]) rotate([0, 90, 0]) m3_screw(); translate([52, 9, 14.5]) rotate([0, 180, 0]) m3_screw(); //version translate([73, 7.5, 1.5]) rotate([0, 0, 0]) linear_extrude(height = 0.6) { text("R1", font = "helvetica:style = Bold", size = 6, center = true); } } } module lower_part() { difference() { union() { difference() { union() { psu_main(); // base cover translate([50, 0.5, 40]) cube([40, 3, 13.8]); translate([5, 0.5, 4]) cube([90, 4, 45]); } translate([-5, 3.5, -20]) cube([120, 100, 120]); // cut } // frame side wall translate([3.1, 3, 5]) cube([3, 10, 40]); translate([5.1, 3, 20]) cube([3, 10, 10]); // rear wall translate([93.9, 3, 5]) cube([3, 10, 40]); translate([91.1, 3, 20]) cube([3, 10, 10]); // switch side wall translate([30, 3, 44.5]) cube([15, 11, 5]); // nut inserts translate([32, 1, 44]) cube([10, 1, 5]); translate([3, 1, 20]) cube([5, 11, 10]); translate([92, 1, 20]) cube([5, 11, 10]); translate([45, 2, 3.5]) cube([15, 11, 5]); translate([46.5, 1, 3.5]) cube([10, 2, 5]); // floor reinforcement difference() { translate([5, 0.5, 4]) cube([90, 3.5, 45]); translate([53.5, -1, 34]) cube([27.5, 8, 20]); } } // rear side nut translate([4.5, -3.4, 22.2]) cube([2.3, 15, 5.6]); translate([-4, 8, 25]) rotate([0, 90, 0]) cylinder(h = 15, r = 1.6, $fn = 30); translate([-2, 8, 25]) rotate([0, 90, 0]) cylinder(h = 4, r = 3.1, $fn = 30); // frame side nut translate([93, -3.4, 22.2]) cube([2.3, 15, 5.6]); translate([88, 8, 25]) rotate([0, 90, 0]) cylinder(h = 15, r = 1.6, $fn = 30); translate([98, 8, 25]) rotate([0, 90, 0]) cylinder(h = 4, r = 3.1, $fn = 30); // edges translate([0, 15, 38]) rotate([45, 0, 0]) cube([15, 15, 15]); translate([90, 15, 38]) rotate([45, 0, 0]) cube([15, 15, 15]); translate([0, 15, -9]) rotate([45, 0, 0]) cube([15, 15, 15]); translate([90, 15, -9]) rotate([45, 0, 0]) cube([15, 15, 15]); translate([25, 6, 38]) rotate([0, 0, 45]) cube([15, 15, 15]); translate([49.5, 6, 38]) rotate([0, 0, 45]) cube([15, 15, 15]); translate([41, 6, 3]) rotate([0, 0, 45]) cube([15, 15, 15]); translate([64, 6, 3]) rotate([0, 0, 45]) cube([15, 15, 15]); // switch side nut translate([31.5 + 2.8, 0, 47.5 - 2]) cube([5.6, 9 + 2.8, 2.3]); translate([37, 9, 43]) rotate([0, 0, 90]) cylinder(h = 15, r = 1.6, $fn = 30); // reinforcement side nut translate([52, 9, -5]) rotate([0, 0, 90]) cylinder(h = 15, r = 1.6, $fn = 30); translate([46 + 2.8, 0, 5]) cube([5.6, 9 + 2.8, 2.3]); // cleanup translate([-5, -8, -20]) cube([120, 10, 120]); // nut edges translate([46 + 2.8, 1.5, 4]) rotate([45, 0, 0]) cube([5.6, 3, 3]); translate([31.5 + 2.8, 1.5, 44.5]) rotate([45, 0, 0]) cube([5.6, 3, 3]); translate([5.5, -0.5, 22.2]) rotate([0, 0, 45]) cube([3, 3, 5.6]); translate([94, -0.5, 22.2]) rotate([0, 0, 45]) cube([3, 3, 5.6]); //version translate([10, 3.6, 20]) rotate([90, -90, 180]) linear_extrude(height = 0.8) { text("R1", font = "helvetica:style = Bold", size = 6, center = true); } } } translate([0, 0, -3.5]) rotate([90, 0, 0]) upper_part(); translate([100, 23, -2]) rotate([90, 0, 180]) lower_part();