273 lines
11 KiB
OpenSCAD
273 lines
11 KiB
OpenSCAD
// PRUSA iteration3
|
|
// PSU Cover MK3
|
|
// GNU GPL v3
|
|
// Josef Průša <iam@josefprusa.cz> 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();
|