parent
bf050898da
commit
f3ff62e1f5
|
|
@ -5,27 +5,30 @@
|
|||
// http://www.reprap.org/wiki/Prusa_Mendel
|
||||
// http://prusamendel.org
|
||||
|
||||
|
||||
// body
|
||||
difference(){
|
||||
union(){
|
||||
cylinder(r=7,h = 7, $fn=30);
|
||||
translate([2,-8,0]) cube([9.5,18,3]);
|
||||
translate([2,-9,0]) cube([5.5,5,3]);
|
||||
}
|
||||
|
||||
// rod cutout
|
||||
translate([0,0,-1]) cylinder(r=5,h = 10, $fn=30);
|
||||
translate([-4.5,0,-5]) cube([9,15,15]);
|
||||
|
||||
// LCD cable cut
|
||||
translate([8,-12,-1]) cube([2,19,5]);
|
||||
translate([9,7,-1]) cylinder(r=1,h = 5, $fn=30);
|
||||
|
||||
//corners
|
||||
translate([2,-13.75,-1]) rotate([0,0,45]) cube([5,5,5]);
|
||||
|
||||
translate([4,6,-1]) rotate([0,0,45]) cube([10,10,5]);
|
||||
translate([14,6,-1]) rotate([0,0,45]) cube([10,10,5]);
|
||||
translate([-3,3,-1]) rotate([0,0,45]) cube([5,5,10]);
|
||||
translate([3,3,3]) rotate([0,0,45]) cube([5,5,10]);
|
||||
}
|
||||
|
||||
|
||||
// LCD cable cut ends
|
||||
translate([7.5,-8,0]) cylinder(r=1,h = 3, $fn=30);
|
||||
translate([10.5,-8,0]) cylinder(r=1,h = 3, $fn=30);
|
||||
|
|
@ -0,0 +1,189 @@
|
|||
// PRUSA iteration3
|
||||
// LCD cover
|
||||
// GNU GPL v3
|
||||
// Josef Průša <iam@josefprusa.cz> and contributors
|
||||
// http://www.reprap.org/wiki/Prusa_Mendel
|
||||
// http://prusamendel.org
|
||||
|
||||
|
||||
module main_body(){
|
||||
difference() {
|
||||
union() {
|
||||
// main body
|
||||
translate( [ -77 , -4.5 , 0 ] ) cube( [ 155 , 59.8 , 2 ] );
|
||||
translate( [ -77 , -4.5 , 0 ] ) rotate([35,0,0]) cube( [ 155 , 2 , 20.08 ] );
|
||||
translate( [ -77 , -14.7 , 14.2 ] ) cube( [ 155 , 2 , 11.8 ] );
|
||||
translate( [ -77 , 54 , 0 ] ) cube( [ 155 , 2 , 17 ] );
|
||||
|
||||
// M3 hole body
|
||||
translate( [ 73.5 , 43.3 , 0.5 ] ) rotate([0,0,90]) cylinder( h = 14, r = 4, $fn=6);
|
||||
translate( [ -72.5 , 43.5 , 0.5 ] ) rotate([0,0,90]) cylinder( h = 14, r = 4, $fn=6);
|
||||
|
||||
}
|
||||
translate( [ -61.5 , 1 , 1.2 ] ) cube( [ 98.5 , 42 , 10 ] ); // LCD window
|
||||
translate( [ -54.5 , 8 , -1 ] ) cube( [ 85 , 30.5 , 10 ] ); // LCD window
|
||||
|
||||
|
||||
// buzzer holes
|
||||
translate( [ 55 , 1.5 , -1 ] ) cube( [ 1.3 , 4 , 10 ] );
|
||||
translate( [ 57 , 1.5 , -1 ] ) cube( [ 1.3 , 4 , 10 ] );
|
||||
translate( [ 59 , 1.5 , -1 ] ) cube( [ 1.3 , 4 , 10 ] );
|
||||
translate( [ 61 , 1.5 , -1 ] ) cube( [ 1.3 , 4 , 10 ] );
|
||||
translate( [ 63 , 1.5 , -1 ] ) cube( [ 1.3 , 4 , 10 ] );
|
||||
translate( [ 65 , 1.5 , -1 ] ) cube( [ 1.3 , 4 , 10 ] );
|
||||
translate( [ 67 , 1.5 , -1 ] ) cube( [ 1.3 , 4 , 10 ] );
|
||||
|
||||
// buzzer holes corners
|
||||
translate( [ 66.25 , 1.5 , -0.5 ] ) rotate([0,45,0]) cube( [ 2 , 4 , 2 ] );
|
||||
translate( [ 64.25 , 1.5 , -0.5 ] ) rotate([0,45,0]) cube( [ 2 , 4 , 2 ] );
|
||||
translate( [ 62.25 , 1.5 , -0.5 ] ) rotate([0,45,0]) cube( [ 2 , 4 , 2 ] );
|
||||
translate( [ 60.25 , 1.5 , -0.5 ] ) rotate([0,45,0]) cube( [ 2 , 4 , 2 ] );
|
||||
translate( [ 58.25 , 1.5 , -0.5 ] ) rotate([0,45,0]) cube( [ 2 , 4 , 2 ] );
|
||||
translate( [ 56.25 , 1.5 , -0.5 ] ) rotate([0,45,0]) cube( [ 2 , 4 , 2 ] );
|
||||
translate( [ 54.25 , 1.5 , -0.5 ] ) rotate([0,45,0]) cube( [ 2 , 4 , 2 ] );
|
||||
|
||||
// knob hole
|
||||
translate( [ 62.5 , 21 , -1 ] ) cylinder( h = 10, r = 6, $fn=30);
|
||||
translate( [ 62.5 , 21 , -1.2 ] ) cylinder( h = 2, r1 = 7, r2 = 6, $fn=30);
|
||||
|
||||
// reset button cutout
|
||||
translate( [ 44 , 26 , -1 ] ) cube( [ 1 , 6 , 9 ] );
|
||||
translate( [ 48 , 26 , -1 ] ) cube( [ 1 , 2.5 , 9 ] );
|
||||
translate( [ 68.5 , 36 , -1 ] ) cube( [ 1 , 8 , 9 ] );
|
||||
translate( [ 56 , 43 , -1 ] ) cube( [ 13.5 , 1 , 9 ] );
|
||||
translate( [ 50.5 , 30 , -1 ] ) cube( [ 13 , 1 , 9 ] );
|
||||
translate( [ 44.7 , 31.28 , -1 ] ) rotate([0,0,45]) cube( [ 17 , 1 , 9 ] );
|
||||
translate( [ 63.5 , 30 , -1 ] ) rotate([0,0,45]) cube( [ 8.5 , 1 , 9 ] );
|
||||
translate( [ 48.7 , 27.8 , -1 ] ) rotate([0,0,45]) cube( [ 3.55 , 1 , 9 ] );
|
||||
|
||||
// rear support cutout
|
||||
translate( [ -64.5 , -12.7 , 14 ] ) cube( [ 10 , 3 , 16 ] );
|
||||
translate( [ 55.5 , -12.7 , 14 ] ) cube( [ 10 , 3 , 16 ] );
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
module pcb_clip(){
|
||||
difference(){
|
||||
union(){
|
||||
translate( [ -3 , -12 , 17.5 ] ) cube( [ 7 , 4 , 5 ] );
|
||||
translate( [ -3 , -10.6 , 12.5 ] ) cube( [ 1 , 2.6 , 7 ] );
|
||||
translate( [ 3 , -10.6 , 12.5 ] ) cube( [ 1 , 2.6 , 7 ] );
|
||||
}
|
||||
translate( [ -4 , -8 , 18.5 ] ) rotate([30,0,0]) cube( [ 10 , 6 , 6 ] );
|
||||
|
||||
translate( [ 2.5 , -12 , 14.5 ] ) cube( [ 1 , 4 , 0.2 ] );
|
||||
translate( [ -2.5 , -12 , 14.5 ] ) cube( [ 1 , 4 , 0.2 ] );
|
||||
translate( [ 2.5 , -12 , 17.3 ] ) cube( [ 1 , 4 , 0.2 ] );
|
||||
translate( [ -2.5 , -12 , 17.3 ] ) cube( [ 1 , 4 , 0.2 ] );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
difference()
|
||||
{
|
||||
union()
|
||||
{
|
||||
|
||||
pcb_clip();
|
||||
|
||||
main_body();
|
||||
// reset button
|
||||
translate( [ 62.5 , 37.3 , 0 ] ) cylinder( h = 7.2, r = 3.5, $fn=30);
|
||||
|
||||
//left side
|
||||
translate( [ -77 , -14.7 , 0 ] ) cube( [ 1.5 , 70.7 , 26 ] );
|
||||
translate( [ -76.5 , -15 , 0 ] ) cube( [ 4 , 70 , 14.6 ] );
|
||||
|
||||
//right side
|
||||
translate( [ 76.5 , -14.7 , 0 ] ) cube( [ 1.5 , 70.7 , 26 ] );
|
||||
translate( [ 73.5 , -14 , 0 ] ) cube( [ 4 , 70 , 14.5 ] );
|
||||
|
||||
//rear side reinforcement
|
||||
translate( [ -54.5 , -11.7 , 8 ] ) cube( [ 110 , 4 , 6.5 ] );
|
||||
translate( [ 65.5 , -11.7 , 8 ] ) cube( [ 12 , 4 , 6.5 ] );
|
||||
translate( [ 65.5 , -13 , 14 ] ) cube( [ 12 , 2 , 12 ] );
|
||||
translate( [ -76.5 , -11.7 , 8 ] ) cube( [ 12 , 4 , 6.5 ] );
|
||||
translate( [ -76.5 , -14.7 , 14.5 ] ) cube( [ 12 , 4 , 11.5 ] );
|
||||
translate( [ -44 , -14.7 , 14.5 ] ) cube( [ 89 , 4 , 11.5 ] );
|
||||
translate( [ -43.5 , -10.7 , 15 ] ) rotate([90,0,0]) cylinder( h = 2, r = 11, $fn=60);
|
||||
translate( [ 44.5 , -10.7 , 15 ] ) rotate([90,0,0]) cylinder( h = 2, r = 11, $fn=60);
|
||||
|
||||
|
||||
//front left side reinforcement
|
||||
difference()
|
||||
{
|
||||
union(){
|
||||
translate( [ -77 , 41.3 , 0 ] ) cube( [ 15 , 14 , 25 ] );
|
||||
translate( [ -77 , 46.3 , 14 ] ) cube( [ 15 , 9 , 3 ] );
|
||||
}
|
||||
translate( [ -64.5 , 40 , -3 ] ) cube( [ 4 , 8 , 40 ] );
|
||||
translate( [ -75.5 , 40.3 , 14.5 ] ) cube( [15 , 6.5 , 25 ] );
|
||||
}
|
||||
|
||||
|
||||
//front right side reinforcement
|
||||
difference(){
|
||||
translate( [ 38 , 41.2 , 0 ] ) cube( [ 40 , 14 , 26 ] );
|
||||
translate( [ 55 , 44.5 , 0 ] ) cube( [ 10.5 , 3.7 , 30 ] );
|
||||
translate( [ 44 , 39.5 , 0 ] ) cube( [ 25.5 , 5 , 30 ] );
|
||||
translate( [ 35 , 39.3 , 14.5 ] ) cube( [ 42.5 , 7 , 15 ] );
|
||||
|
||||
translate( [ 49 , 43.2 , 25 ] ) rotate([0,60,0]) cube( [ 12 , 5 , 10 ] );
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// SD card opening
|
||||
translate( [ -80 , 9 , 14.5 ] ) cube( [ 10 , 28 , 6 ] );
|
||||
|
||||
// front and rear angle
|
||||
translate( [ -81 , -9.3 , -17 ] ) rotate([35,0,0]) cube( [ 164 , 14 , 54.08 ] );
|
||||
translate( [ -78 , 72.7 , -3 ] ) rotate([45,0,0]) cube( [ 160 , 14 , 54.08 ] );
|
||||
|
||||
// M3 screw thread
|
||||
translate( [ 72.7 , 43.2 , 3 ] ) cylinder( h = 20, r = 1.4, $fn=30);
|
||||
translate( [ -72.5 , 42.7 , 3 ] ) cylinder( h = 20, r = 1.4, $fn=30);
|
||||
translate( [ 72.7 , 43.2 , 14 ] ) cylinder( h = 1, r1 = 1.4, r2=2, $fn=30);
|
||||
translate( [ -72.5 , 42.7 , 14 ] ) cylinder( h = 1, r = 1.4, r2=2, $fn=30);
|
||||
|
||||
|
||||
// ORIGINAL PRUSA text
|
||||
translate([-67,52,0.6]) rotate([180,0,0]) linear_extrude(height = 2)
|
||||
{ text("ORIGINAL",font = "helvetica:style=Bold", size=7, center=true); }
|
||||
|
||||
translate([-18,52,0.6]) rotate([180,0,0]) linear_extrude(height = 2)
|
||||
{ text("PRUSA",font = "helvetica:style=Bold", size=11, center=true); }
|
||||
|
||||
translate( [ -66 , 41.5 , -0.4 ] ) cube( [ 45 , 1.6 , 1 ] );
|
||||
translate( [ -66 , 42.3 , -0.4 ] ) cylinder( h = 1, r = 0.8, $fn=30);
|
||||
translate( [ -21 , 42.3 , -0.4 ] ) cylinder( h = 1, r = 0.8, $fn=30);
|
||||
|
||||
// front cleanup
|
||||
translate( [ -100 , -64 , 0 ] ) cube( [ 200 , 50 , 50 ] );
|
||||
|
||||
// X sign on reset button
|
||||
translate( [ 63 , 34 , -1 ] ) rotate([0,0,45]) cube( [ 2, 8, 2 ] );
|
||||
translate( [ 57.5 , 35.5 , -1 ] ) rotate([0,0,-45]) cube( [ 2, 8, 2 ] );
|
||||
|
||||
|
||||
// corners
|
||||
translate( [ 76 , -5 , -1 ] ) rotate([0,45,0]) cube( [ 5, 80, 5 ] );
|
||||
translate( [ -82 , -5 , -1 ] ) rotate([0,45,0]) cube( [ 5, 80, 5 ] );
|
||||
translate( [ -82 , 58 , -4 ] ) rotate([45,0,0]) cube( [ 200, 5, 5 ] );
|
||||
translate( [ -77 , 54 , -4 ] ) rotate([0,0,45]) cube( [ 5, 5, 50 ] );
|
||||
translate( [ 78 , 54 , -4 ] ) rotate([0,0,45]) cube( [ 5, 5, 50 ] );
|
||||
translate( [ 78 , -19 , -4 ] ) rotate([0,0,45]) cube( [ 5, 5, 50 ] );
|
||||
translate( [ -77 , -19 , -4 ] ) rotate([0,0,45]) cube( [ 5, 5, 50 ] );
|
||||
|
||||
// LCD corners
|
||||
translate( [ -54.5 , 9.5 , -5.2 ] ) rotate([45,0,0]) cube( [ 85 , 5 , 5 ] ); // LCD window
|
||||
translate( [ -54.5 , 37 , -5.2 ] ) rotate([45,0,0]) cube( [ 85 , 5 , 5 ] ); // LCD window
|
||||
|
||||
rotate([35,0,0]) translate( [ -78 , -7 , -4 ] ) rotate([0,0,45]) cube( [ 5, 5, 50 ] );
|
||||
rotate([35,0,0]) translate( [ 79 , -7 , -4 ] ) rotate([0,0,45]) cube( [ 5, 5, 50 ] );
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -25,6 +25,7 @@ union(){
|
|||
|
||||
module cutout()
|
||||
{
|
||||
|
||||
translate([ 22, 4 , -2 ]) cylinder( h = 20, r = 1.6, $fn=30); // M3 hole A
|
||||
translate([ 22, 4 , -1 ]) cylinder( h = 10, r = 3.2, $fn=6); // M3 nut body A
|
||||
translate([ 22, 4 , -1 ]) cylinder( h = 14, r1 = 3.2, r1 = 5, $fn=6); // M3 nut hole fillet A
|
||||
|
|
|
|||
|
|
@ -1,166 +1,176 @@
|
|||
// PRUSA iteration3
|
||||
// PSU Cover
|
||||
// GNU GPL v3
|
||||
// Josef Průša <iam@josefprusa.cz> and contributors
|
||||
// http://www.reprap.org/wiki/Prusa_Mendel
|
||||
// http://prusamendel.org
|
||||
|
||||
module PSU_COVER()
|
||||
{
|
||||
difference(){
|
||||
union(){
|
||||
|
||||
translate([0,0,-1])cube([95,50+15,56]); // Base
|
||||
|
||||
translate([0,0,-3.5])cube([14-0.5,50+15,5]); // Back pillar 1
|
||||
|
||||
translate([60-0.5,0,-3.5])cube([14,50+15,5]); // Back pillar 2
|
||||
|
||||
translate([91+4,0,-1])cube([6,50+15,56]); // Base for bracket
|
||||
|
||||
translate([-2,45.4-4.6,19])cube([2,3,15]); // nipple on the right
|
||||
|
||||
|
||||
translate([0,35,46.5])scale([1.2,1,0.2])rotate([-28,-50,-58])cube([45,45,30]);
|
||||
|
||||
|
||||
//translate([94,20,13])scale([0.2,1.2,1])rotate([-29,-51,-48])cube([30,35,30]);
|
||||
//translate([10,25,45])scale([1,1,0.3])rotate([-40,-50,-58])cube([40,30,30]);
|
||||
|
||||
translate([-1.6,0,0])cube([1.65,65,2]); // Frame skirt 1
|
||||
translate([-1.6,0,0])cube([1.65,30,55]); // Frame skirt 2
|
||||
translate([-1.6,0,51])cube([1.65,65,4]); // 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,-5])rotate([-45,0,0])cube([130,10,10]);
|
||||
translate([-3,-12,56])rotate([-45,0,0])cube([130,10,10]);
|
||||
|
||||
translate([-3,45+15,-5])rotate([-45,0,0])cube([130,10,10]);
|
||||
translate([-3,48+15,56])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,68.5])rotate([0,45,0])cube([20,90,20]);
|
||||
|
||||
translate([79,4,-14.5])rotate([0,45,0])cube([20,90,20]);
|
||||
|
||||
|
||||
translate([-14,-5,68.5])rotate([0,45,0])cube([20,90,20]);
|
||||
|
||||
translate([3,2,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([-3,50-16.4-17.6+15+0.9,2])cube([100,100,10]); // bottom cutout
|
||||
|
||||
translate([5.5,0,0]){
|
||||
translate([45,2,40])cube([27.5,31.9,30]); // socket cutout
|
||||
translate([45-4.5,2+15.6,40])cylinder(r=2,h=50, $fn=8); // socket right hole cutout
|
||||
translate([45-4.5+37-0.5,2+15.6,40])cylinder(r=2,h=50, $fn=8); // socket left hole cutout
|
||||
|
||||
translate([1,2,44])cube([20,14,30]); // switch cutout
|
||||
|
||||
translate([45-4.5+37-0.5,2+15.6,40])cylinder(r=3.25,h=15-1.5, $fn=6); // socket left hole cutout nuttrap
|
||||
translate([45-4.5,2+15.6,40])cylinder(r=3.25,h=15-1.5, $fn=6); // socket left hole cutout nuttrap
|
||||
}
|
||||
translate([20,50,54.5])linear_extrude(height = 1) {
|
||||
text("Prusa3D", center=true);
|
||||
}
|
||||
|
||||
/*
|
||||
translate([8,40-1+15,40])cylinder(r=2,h=50,$fn=15); // left front mounthole cutout
|
||||
translate([8,40-1+15,53.6])cylinder(r1=2, r2=3.5,h=1.5,$fn=15);
|
||||
|
||||
translate([87,40-1+15,40])cylinder(r=2,h=50,$fn=15); // right front mounthole cutout
|
||||
translate([87,40-1+15,53.6])cylinder(r1=2, r2=3.5,h=1.5,$fn=15);
|
||||
*/
|
||||
|
||||
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);
|
||||
|
||||
for(i=[0:10]){
|
||||
translate([20+i,6,-10])cylinder(r=3,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([ 88-0.5, 8, -10.5 ]) rotate([ 90, 0, 0]) cylinder( h = 10, r = 1.6, $fn=30 ); //hole A1
|
||||
//translate([ 88, 8, -10.5 ]) rotate([ 90, 0, 0]) cylinder( h = 10, r = 1.6, $fn=30 ); //hole A
|
||||
//translate([ 88+0.5, 8, -10.5 ]) rotate([ 90, 0, 0]) cylinder( h = 10, r = 1.6, $fn=30 ); //hole A2
|
||||
|
||||
//translate([ 68-0.5, 8, -10.5 ]) rotate([ 90, 0, 0 ]) cylinder( h = 10, r = 1.6, $fn=30 ); //hole B1
|
||||
//translate([ 68, 8, -10.5 ]) rotate([ 90, 0, 0 ]) cylinder( h = 10, r = 1.6, $fn=30 ); //hole B
|
||||
//translate([ 68+0.5, 8, -10.5 ]) rotate([ 90, 0, 0 ]) cylinder( h = 10, r = 1.6, $fn=30 ); //hole B2
|
||||
|
||||
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([ 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 FINAL_PART(){
|
||||
union()
|
||||
{
|
||||
PSU_COVER();
|
||||
PSU_Y_REINFORCEMENT();
|
||||
}
|
||||
}
|
||||
|
||||
FINAL_PART();
|
||||
|
||||
|
||||
// PRUSA iteration3
|
||||
// PSU Cover
|
||||
// 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, 3]);
|
||||
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 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([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([-14,-5,67.28])rotate([0,45,0])cube([20,90,20]);
|
||||
|
||||
translate([3,2,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,2,2]) cube([10,18,50-0.7]);
|
||||
|
||||
translate([-3,50-16.4-17.6+15+0.9,2])cube([100,100,10]); // bottom cutout
|
||||
|
||||
translate([5.5,0,0]){
|
||||
translate([45,2,40])cube([27.5,31.9,30]); // socket cutout
|
||||
translate([45-4.5,2+15.6,40])cylinder(r=2,h=50, $fn=8); // socket right hole cutout
|
||||
translate([45-4.5+37-0.5,2+15.6,40])cylinder(r=2,h=50, $fn=8); // socket left hole cutout
|
||||
|
||||
translate([1,2,44])cube([20,14,30]); // switch cutout
|
||||
|
||||
translate([45-4.5+37-0.5,2+15.6,39.1]) rotate([0,0,30]) cylinder(r=3.25,h=15-2.8, $fn=6); // socket left hole cutout nuttrap
|
||||
translate([45-4.5,2+15.6,39.1]) rotate([0,0,30]) cylinder(r=3.25,h=15-2.8, $fn=6); // socket left hole cutout nuttrap
|
||||
}
|
||||
|
||||
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,0,-1.2])CubeAdjust(102,54.25);
|
||||
|
||||
for(i=[0:9]){
|
||||
translate([20+i,6.5,-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
|
||||
{
|
||||
|
||||
|
||||
// corner cuts
|
||||
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
|
||||
|
||||
// angled vertical support
|
||||
translate([ 68.5, 20, -34 ]) rotate([ 45, 0, 0 ]) cube([ 15, 23, 20 ]); //vertical reinf cutout
|
||||
|
||||
// bottom surface cuts
|
||||
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 FINAL_PART(){
|
||||
union()
|
||||
{
|
||||
PSU_COVER();
|
||||
PSU_Y_REINFORCEMENT();
|
||||
translate([82.5,2+15.6,39.1+13.5]) nuttrap();
|
||||
translate([46,2+15.6,39+13.5]) nuttrap();
|
||||
}
|
||||
}
|
||||
|
||||
FINAL_PART();
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,323 @@
|
|||
// PRUSA iteration3
|
||||
// RAMBo base
|
||||
// GNU GPL v3
|
||||
// Josef Průša <iam@josefprusa.cz> and contributors
|
||||
// http://www.reprap.org/wiki/Prusa_Mendel
|
||||
// http://prusamendel.org
|
||||
|
||||
|
||||
|
||||
// main body
|
||||
module main_body(){
|
||||
// side panel
|
||||
cube( [ 118.5 , 92 , 2 ] );
|
||||
|
||||
// upper panel
|
||||
cube( [ 1.5 , 92 , 35 ] );
|
||||
// rear panel
|
||||
translate( [ 0 , 90 , 0 ] ) cube( [ 105.5 , 2 , 35 ] );
|
||||
// heatbed ziptie reinforcement
|
||||
translate( [ 63 , 88.5 , 0.5 ] ) cube( [ 6.5 , 2 , 34.5 ] );
|
||||
|
||||
// upper panel frame reinforcement
|
||||
translate( [ 0 , 0 , 1 ] ) cube( [ 5.5 , 7 , 34 ] );
|
||||
|
||||
// side panel reinforcement
|
||||
translate( [ 0 , 0 , 1 ] ) cube( [ 9 , 92 , 3 ] );
|
||||
translate( [ 98 , 0 , 0 ] ) cube( [ 9 , 92 , 4 ] );
|
||||
|
||||
difference()
|
||||
{
|
||||
// bottom side reinforcement
|
||||
translate( [ 98 , 86 , 0 ] ) cube( [ 7.5 , 6 , 35 ] );
|
||||
translate( [ 96 , 79 , 0 ] ) rotate([0,0,45]) cube( [ 7.5 , 6 , 36 ] );
|
||||
}
|
||||
translate( [ 0 , 85 , 0 ] ) cube( [ 5.5 , 7 , 35 ] );
|
||||
|
||||
// screw mounting block
|
||||
translate( [ 54 , 84 , 0 ] ) cube( [ 9.5 , 7 , 35 ] );
|
||||
|
||||
// frame side panel
|
||||
translate( [ 20 , 0 , 0 ] ) cube( [ 80 , 3 , 5 ] );
|
||||
|
||||
// RAMBo mounting holes
|
||||
translate( [ 102.5 , 14 , 1 ] ) rotate([0,0,90]) cylinder( h = 7, r = 5.5, $fn=6);
|
||||
translate( [ 102.5 , 75 , 1 ] ) rotate([0,0,90]) cylinder( h = 7, r = 5.5, $fn=6);
|
||||
translate( [ 7.5 , 14 , 1 ] ) cylinder( h = 7, r = 5.5, $fn=6);
|
||||
translate( [ 7.5 , 75 , 1 ] ) cylinder( h = 7, r = 5.5, $fn=6);
|
||||
|
||||
// corners reinforcement
|
||||
translate( [ 0 , 75 , 1 ] ) cube( [ 13 , 16 , 6 ] );
|
||||
translate( [ 0 , 70.25 , 1 ] ) cube( [ 7.5 , 11 , 6 ] );
|
||||
translate( [ 0 , 7.75 , 1 ] ) cube( [ 7.5 , 11 , 6 ] );
|
||||
translate( [ 0 , 0 , 1 ] ) cube( [ 13 , 14 , 6 ] );
|
||||
|
||||
// frame mounting screw blocks
|
||||
//upper
|
||||
translate( [ 1 , 0 , 0 ] ) cube( [ 28 , 4 , 10 ] );
|
||||
translate( [ 18.45 , 0 , 0 ] ) cube( [ 3 , 4 , 5.5] );
|
||||
|
||||
//lower
|
||||
translate( [ 98 , 0 , 0 ] ) cube( [ 20.5 , 4 , 10 ] );
|
||||
|
||||
// heatbed filament holder body
|
||||
translate( [ 81.6 , 90.35 , 24 ] ) rotate([0,90,0]) cylinder( h = 18, r = 5, $fn=6);
|
||||
|
||||
// door closing corner
|
||||
translate( [ 102 , 88.5 , 35 ] ) cylinder( h = 3, r1=2.5, r2=1, $fn=30);
|
||||
|
||||
// doors pin upper
|
||||
translate( [ 2 , 85 , 31 ] ) cube( [ 6 , 7 , 4] );
|
||||
translate( [ 4 , 88.5 , 35 ] ) cylinder( h = 3, r1=2.5, r2=1, $fn=30);
|
||||
|
||||
// x-axis cables entry hole body
|
||||
translate( [ 89 , 2 , 0 ] ) cylinder( h = 5, r = 6, $fn=6);
|
||||
}
|
||||
|
||||
|
||||
module ventilation_holes()
|
||||
{
|
||||
for ( i = [-6 : 8] ){
|
||||
translate([46 + (i*5.5),10.5,-1]) cube([3.65,19+50,1.2]);
|
||||
translate([46 + (i*5.5),10.5,-1]) cube([3.65,19,10]);
|
||||
translate([46 + (i*5.5),10.5+25,-1]) cube([3.65,19,10]);
|
||||
translate([46 + (i*5.5),10.5+50,-1]) cube([3.65,19,10]);
|
||||
}
|
||||
}
|
||||
|
||||
module cutouts(){
|
||||
// side
|
||||
translate( [ 12 , 19 , 1 ] ) cube( [ 85.5 , 51 , 3 ] );
|
||||
|
||||
// RAMBo M3 screws
|
||||
translate( [ 7.5 , 14 , -1 ] ) cylinder( h = 10, r = 1.9, $fn=30);
|
||||
translate( [ 102.5 , 14 , -1 ] ) cylinder( h = 10, r = 1.9, $fn=30);
|
||||
translate( [ 102.5 , 75 , -1 ] ) cylinder( h = 10, r = 1.9, $fn=30);
|
||||
translate( [ 7.5 , 75 , -1 ] ) cylinder( h = 10, r = 1.9, $fn=30);
|
||||
|
||||
translate( [ 7.5 , 14 , 6 ] ) cylinder( h = 3, r1 = 1.9, r2=2.4, $fn=30);
|
||||
translate( [ 102.5 , 14 , 6 ] ) cylinder( h = 3, r1 = 1.9, r2=2.4, $fn=30);
|
||||
translate( [ 102.5 , 75 , 6 ] ) cylinder( h = 3, r1 = 1.9, r2=2.4, $fn=30);
|
||||
translate( [ 7.5 , 75 , 6 ] ) cylinder( h = 3, r1 = 1.9, r2=2.4, $fn=30);
|
||||
|
||||
translate( [ 2 , 0 , 0 ] )ventilation_holes();
|
||||
|
||||
// frame mounting screws
|
||||
//upper
|
||||
translate( [ 18.5, -2 , 15.6 ] ) rotate([0,45,0]) cube( [ 15 , 10 , 10] );
|
||||
translate( [ 16.5 , 8 , 5 ] ) rotate([90,0,0]) cylinder( h = 10, r = 1.6, $fn=30);
|
||||
translate( [ 16.5 , 9 , 5 ] ) rotate([90,0,0]) cylinder( h = 5, r = 3, $fn=30);
|
||||
translate( [ 15.15 , -2 , 5 ] ) cube( [ 2.7 , 15 , 10] );
|
||||
translate( [ 15.1 , -2 , 7 ] ) rotate([0,5,0]) cube( [ 2.8 , 15 , 10] );
|
||||
translate( [ 15.1 , -2 , 7 ] ) rotate([0,-5,0]) cube( [ 2.8 , 15 , 10] );
|
||||
|
||||
|
||||
//lower
|
||||
translate( [ 110.5 , 9 , 5 ] ) rotate([90,0,0]) cylinder( h = 10, r = 1.6, $fn=30);
|
||||
translate( [ 110.5 , 9 , 5 ] ) rotate([90,0,0]) cylinder( h = 5, r = 3, $fn=30);
|
||||
translate( [ 118.5 , -2 , 6 ] ) rotate([0,-45,0]) cube( [ 5 , 15 , 15] );
|
||||
translate( [ 94.5 , -2 , 8.5 ] ) rotate([0,45,0]) cube( [ 5 , 8 , 15] );
|
||||
translate( [ 0 , -2 , -5 ] ) cube( [ 120 , 15 , 5] );
|
||||
translate( [ 109.15 , -2 , 5 ] ) cube( [ 2.7 , 15 , 10] );
|
||||
translate( [ 109.3 , -2 , 6.5 ] ) rotate([0,5,0]) cube( [ 2.5 , 15 , 10] );
|
||||
translate( [ 109.2 , -2 , 6.5 ] ) rotate([0,-5,0]) cube( [ 2.5 , 15 , 10] );
|
||||
|
||||
// USB connector hole
|
||||
translate( [ -1 , 41.5 , 11 ] ) cube( [ 5.5 , 13 , 11 ] );
|
||||
|
||||
// reset button
|
||||
translate( [ -2 , 65 , 14 ] ) rotate([0,90,0]) cylinder( h = 10, r = 2, $fn=30);
|
||||
|
||||
// door closing screw
|
||||
translate( [ 58.5 , 88 , -1 ] ) cylinder( h = 43, r = 1.9, $fn=30);
|
||||
|
||||
|
||||
// heatbed cable opening hole
|
||||
difference()
|
||||
{
|
||||
translate( [ 75.5 , 94 , 24 ] ) rotate([90,90,0]) cylinder( h = 5, r = 7, $fn=6);
|
||||
translate( [ 71 , 80 , 13.5 ] ) cube( [ 8 , 15 , 5] );
|
||||
}
|
||||
translate( [ 73 , 80 , 20.5 ] ) cube( [ 5 , 15 , 15] );
|
||||
|
||||
|
||||
// heatbed cable ziptie holes
|
||||
translate( [ 64 , 87 , 30 ] ) cube( [ 4 , 10 , 2 ] );
|
||||
translate( [ 64 , 87 , 16 ] ) cube( [ 4 , 10 , 2 ] );
|
||||
|
||||
|
||||
|
||||
// heatbed filament holder hole
|
||||
translate( [ 81 , 89 , 24 ] ) rotate([0,90,0]) cylinder( h = 17, r = 1.8, $fn=30);
|
||||
translate( [ 81 , 89 , 24 ] ) rotate([0,90,0]) cylinder( h = 2, r = 2, r2=1.8, $fn=30);
|
||||
translate( [ 70 , 92 , 15 ] ) cube( [ 30 , 10 , 15] );
|
||||
|
||||
|
||||
// nut traps HEX
|
||||
translate( [ 7.5 , 14 , -1 ] ){
|
||||
cylinder( h = 4, r = 3.2, $fn=6);
|
||||
rotate([0,0,0]) resize([0,2,0]) cylinder( h = 4, r = 3.5, $fn=6);
|
||||
rotate([0,0,60]) resize([0,2,0]) cylinder( h = 4, r = 3.5, $fn=6);
|
||||
rotate([0,0,120]) resize([0,2,0]) cylinder( h = 4, r = 3.5, $fn=6);
|
||||
}
|
||||
|
||||
translate( [ 102.5 , 14 , -1 ] ){
|
||||
cylinder( h = 4, r = 3.2, $fn=6);
|
||||
rotate([0,0,0]) resize([0,2,0]) cylinder( h = 4, r = 3.5, $fn=6);
|
||||
rotate([0,0,60]) resize([0,2,0]) cylinder( h = 4, r = 3.5, $fn=6);
|
||||
rotate([0,0,120]) resize([0,2,0]) cylinder( h = 4, r = 3.5, $fn=6);
|
||||
}
|
||||
|
||||
translate( [ 102.5 , 75 , -1 ] ){
|
||||
cylinder( h = 4, r = 3.2, $fn=6);
|
||||
rotate([0,0,0]) resize([0,2,0]) cylinder( h = 4, r = 3.5, $fn=6);
|
||||
rotate([0,0,60]) resize([0,2,0]) cylinder( h = 4, r = 3.5, $fn=6);
|
||||
rotate([0,0,120]) resize([0,2,0]) cylinder( h = 4, r = 3.5, $fn=6);
|
||||
}
|
||||
|
||||
translate( [ 7.5 , 75 , -1 ] ){
|
||||
cylinder( h = 4, r = 3.2, $fn=6);
|
||||
rotate([0,0,0]) resize([0,2,0]) cylinder( h = 4, r = 3.5, $fn=6);
|
||||
rotate([0,0,60]) resize([0,2,0]) cylinder( h = 4, r = 3.5, $fn=6);
|
||||
rotate([0,0,120]) resize([0,2,0]) cylinder( h = 4, r = 3.5, $fn=6);
|
||||
}
|
||||
|
||||
translate( [ 7.5 , 14 , -1 ] ) cylinder( h = 1.5, r1 = 5, r2=3.2, $fn=6);
|
||||
translate( [ 102.5 , 14 , -1 ] ) cylinder( h = 1.5, r1 = 5, r2=3.2, $fn=6);
|
||||
translate( [ 102.5 , 75 , -1 ] ) cylinder( h = 1.5, r1 = 5, r2=3.2, $fn=6);
|
||||
translate( [ 7.5 , 75 , -1 ] ) cylinder( h = 1.5, r1 = 5, r2=3.2, $fn=6);
|
||||
translate( [ 58.5 , 88 , -1 ] ) cylinder( h = 4, r = 3.2, $fn=30);
|
||||
|
||||
// door closing corners
|
||||
translate( [ 8 , 80 , 28 ] ) rotate([0,0,45]) cube( [ 5 , 5 , 10] );
|
||||
translate( [ 106 , 81 , 4 ] ) rotate([0,0,45]) cube( [ 5 , 5 , 40] );
|
||||
|
||||
// inner edges cutout
|
||||
translate( [ 54 , 79.5 , 2 ] ) rotate([0,0,45]) cube( [ 5 , 5 , 50] );
|
||||
translate( [ 70 , 82.5 , 2 ] ) rotate([0,0,45]) cube( [ 5 , 5 , 50] );
|
||||
translate( [ 6 , 80 , 7 ] ) rotate([0,0,45]) cube( [ 5 , 5 , 24] );
|
||||
translate( [ 5.5 , 4 , 7 ] ) rotate([0,0,45]) cube( [ 3 , 5 , 29] );
|
||||
|
||||
// x axis cable hole
|
||||
translate( [ 89 , 2 , -1 ] ) cylinder( h = 10, r = 4, $fn=6);
|
||||
translate( [ 80 , -5 , -1 ] ) cube( [ 15, 5, 10] );
|
||||
|
||||
// large corner coutout
|
||||
translate( [ -27 , 80 , -54 ] ) rotate([50,0,45]) cube( [ 50, 50, 50] );
|
||||
translate( [ 137.5 , 60 , -10 ] ) rotate([0,0,45]) cube( [ 50, 50, 50] );
|
||||
|
||||
|
||||
}
|
||||
|
||||
// extruder cable holder
|
||||
module ext_cable_holder()
|
||||
{
|
||||
difference()
|
||||
{
|
||||
// body
|
||||
union(){
|
||||
rotate([90,0,0]) translate([-8, 26, -28]) rotate([0,90,0]) cylinder( h = 4, r1 = 8, r2=11, $fn=6);
|
||||
rotate([90,0,0]) translate([-4, 26, -28]) rotate([0,90,0]) cylinder( h = 4, r1 = 11, r2=11, $fn=6);
|
||||
rotate([90,0,0]) translate( [ 1.5 , 26 , -28 ] ) rotate([0,90,0]) cylinder( h = 10, r1 = 13, r2=7.5, $fn=6);
|
||||
translate( [-4, 28, 16.5 ] ) rotate([0,45,0]) cube( [ 6 , 5.5 , 7 ] );
|
||||
}
|
||||
|
||||
// upper cut
|
||||
translate( [ -15 , 13 , 15] ) cube( [ 15 , 15 , 25 ] );
|
||||
// lower cut
|
||||
translate( [ 1.5 , 26 , 10] ) cube( [ 15 , 15 , 26 ] );
|
||||
|
||||
// ziptie holder
|
||||
difference(){
|
||||
rotate([90,0,0]) translate([-4, 26, -28]) rotate([0,90,0]) cylinder( h = 3.5, r = 8.5, $fn=30);
|
||||
rotate([90,0,0]) translate([-5, 26, -28]) rotate([0,90,0]) cylinder( h = 5.5, r = 6.2, $fn=30);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
module rambo_cover()
|
||||
{
|
||||
ext_cable_holder();
|
||||
difference(){
|
||||
main_body();
|
||||
cutouts();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
difference(){
|
||||
union(){
|
||||
// extruder cable filament holder body
|
||||
translate( [ 4.5 , 25.5 , 26 ] ) rotate([0,90,0]) cylinder( h = 7, r = 3.5, $fn=6);
|
||||
translate( [ 4.5 , 22.5 , 22.5] ) cube( [ 7 , 3 , 7 ] );
|
||||
translate( [ 4.5 , 23.5 , 20.8] ) cube( [ 7 , 2.5 , 7 ] );
|
||||
translate( [ 4.5 , 24.7 , 26 ] ) rotate([0,90,0]) cylinder( h = 7, r = 3, $fn=30);
|
||||
}
|
||||
// extruder filament inner hole
|
||||
translate( [ -5 , 25 , 26 ] ) rotate([0,90,0]) cylinder( h = 20, r = 1.75, $fn=30);
|
||||
translate( [ 4, 25 , 26 ] ) rotate([0,90,0]) cylinder( h =3, r1 = 1.9, r2=1.75, $fn=30);
|
||||
}
|
||||
|
||||
|
||||
difference(){
|
||||
|
||||
rambo_cover();
|
||||
|
||||
|
||||
// upper extruder cable opening
|
||||
translate( [ -5 , 28 , 26 ] ) rotate([0,90,-15]) cylinder( h = 20, r = 1.4, $fn=30);
|
||||
|
||||
// main hole
|
||||
translate( [ -10 , 28 , 26 ] ) rotate([0,90,0]) cylinder( h = 24, r = 5.5, $fn=30);
|
||||
// cable opening slot
|
||||
translate( [ -15 , 26.5 , 30 ] ) cube( [ 30 , 3 , 10 ] );
|
||||
|
||||
// flatten on door side
|
||||
translate( [ -15 , 20 , 35 ] ) cube( [ 30 , 20 , 20 ] );
|
||||
|
||||
// opening slot cuts
|
||||
translate( [ -1.5 , 26 , 33] ) rotate([45,0,45]) cube( [ 3 , 3 , 3 ] );
|
||||
translate( [ 1 , 28 , 33] ) rotate([45,0,45]) cube( [ 3 , 3 , 3 ] );
|
||||
|
||||
|
||||
// screw body edge
|
||||
translate( [ 65 ,74.2 , 2] ) rotate([0,0,45]) cube( [ 10 , 10 , 50 ] );
|
||||
|
||||
// lightening slots
|
||||
translate( [ 100 ,21 , 2] ) cube( [ 5 , 48 , 5 ] );
|
||||
translate( [ 3 ,21 , 2] ) cube( [ 4.5, 48 , 5 ] );
|
||||
|
||||
|
||||
// bottom holes print supports
|
||||
translate( [ 7.5 , 14 ,0] ){
|
||||
translate( [ 0 , 0 , 2.5 ] ) cube([3.2,5.6,2], center=true);
|
||||
translate( [ 0 , 0 , 3 ] ) cube([3.2,3.8,2], center=true);
|
||||
}
|
||||
|
||||
translate( [ 102.5 , 14 ,0] ){
|
||||
translate( [ 0 , 0 , 2.5 ] ) cube([3.2,5.6,2], center=true);
|
||||
translate( [ 0 , 0 , 3 ] ) cube([3.2,3.8,2], center=true);
|
||||
}
|
||||
|
||||
translate( [ 102.5 , 75 ,0] ){
|
||||
translate( [ 0 , 0 , 2.5 ] ) cube([3.2,5.6,2], center=true);
|
||||
translate( [ 0 , 0 , 3 ] ) cube([3.2,3.8,2], center=true);
|
||||
}
|
||||
|
||||
translate( [ 7.5 , 75 ,0] ){
|
||||
translate( [ 0 , 0 , 2.5 ] ) cube([3.2,5.6,2], center=true);
|
||||
translate( [ 0 , 0 , 3 ] ) cube([3.2,3.8,2], center=true);
|
||||
}
|
||||
|
||||
translate( [ 58.5 , 88 ,0] ){
|
||||
intersection(){cylinder(r=3.2, h=10, $fn=30);
|
||||
translate( [ 0 , 0 , 2.5 ] ) cube([3.8,8,2], center=true);}
|
||||
translate( [ 0 , 0 , 3 ] ) cube([3.8,3.8,2], center=true);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,119 @@
|
|||
// PRUSA iteration3
|
||||
// RAMBo doors
|
||||
// GNU GPL v3
|
||||
// Josef Průša <iam@josefprusa.cz> and contributors
|
||||
// http://www.reprap.org/wiki/Prusa_Mendel
|
||||
// http://prusamendel.org
|
||||
|
||||
module body()
|
||||
{
|
||||
// side panels
|
||||
cube( [ 105.5 , 87.5 , 1 ] );
|
||||
cube( [ 105.5 , 2 , 20 ] );
|
||||
cube( [ 2 , 87.5 , 20 ] );
|
||||
|
||||
// corner reinforcement
|
||||
translate( [ 98 , 1 , 0 ] ) cube( [ 7.5 , 5 , 20 ] );
|
||||
translate( [ 0.5 , 0.5 , 0 ] ) cube( [ 5 , 6.5 , 20 ] );
|
||||
translate( [ 1 , 0 , 0 ] ) cube( [ 10 , 87.5 , 6 ] );
|
||||
translate( [ 99.5 , 0 , 0 ] ) cube( [ 6 , 87.5 , 7 ] );
|
||||
translate( [ 10 , 0 , 0 ] ) cube( [ 6 , 5 , 6 ] );
|
||||
|
||||
// screw thread body
|
||||
translate( [ 54 , 2 , 0 ] ) cube( [ 9.5 , 6 , 20 ] );
|
||||
|
||||
// rounded side
|
||||
translate( [ 0 , 87.5 , 4.5 ] ) rotate([0,90,0]) cylinder( h = 105.5, r = 4.5, $fn=30);
|
||||
|
||||
// upper hinge reinforcement
|
||||
translate( [ 0.5 , 69 , -9 ] ) rotate([20,0,0]) cube( [ 26 , 20 , 10 ] );
|
||||
|
||||
// door closing
|
||||
translate( [ 4 , 3.5 , 16.8 ] ) rotate([0,0,0]) cylinder( h = 3.2, r1 = 1.8, r2= 3.5, $fn=30);
|
||||
translate( [ 102 , 3.5 , 16.8 ] ) rotate([0,0,0]) cylinder( h = 3.2, r1 = 1.8, r2= 3.5, $fn=30);
|
||||
}
|
||||
|
||||
module ventilation_holes()
|
||||
{
|
||||
for ( i = [0 : 9] ){
|
||||
translate([46 + (i*5.5),10.5,-1]) cube([3.65,19+50,1.2]);
|
||||
translate([46 + (i*5.5),10.5,-1]) cube([3.65,19,10]);
|
||||
translate([46 + (i*5.5),10.5+25,-1]) cube([3.65,19,10]);
|
||||
translate([46 + (i*5.5),10.5+50,-1]) cube([3.65,19,10]);
|
||||
}
|
||||
for ( i = [0 : -6] ){
|
||||
translate([46 + (i*5.5),10.5,-1]) cube([3.65,19+50,1.2]);
|
||||
}
|
||||
for ( i = [-6 : -7] ){
|
||||
translate([46 + (i*5.5),20.5,-1]) cube([3.65,19+40,1.2]);
|
||||
}
|
||||
}
|
||||
|
||||
module cutouts()
|
||||
{
|
||||
// door closing screw
|
||||
translate( [ 58.5 , 4 , 5 ] ) cylinder( h = 17, r = 1.8, $fn=30);
|
||||
translate( [ 58.5 , 4 , 18.5 ] ) cylinder( h = 2.6, r1 = 1.8, r2=2.2, $fn=30);
|
||||
translate( [ 58.5 , 4 ,15.5] ){
|
||||
translate( [ 0 , 0 , 2.5 ] ) cube([5.7,3.8,1], center=true);
|
||||
translate( [ 0 , 0 , 3 ] ) cube([3.8,3.8,1], center=true);}
|
||||
|
||||
ventilation_holes();
|
||||
|
||||
// rounded side cutoff
|
||||
translate( [ 26.5 , 87.5 , 4.5 ] ) rotate([0,90,0]) cylinder( h = 73, r = 3.5, $fn=30);
|
||||
translate([ 26.5 ,80,5]) cube([73,19,10]);
|
||||
translate([ 26.5 ,82.5,1]) cube([73,5,10]);
|
||||
|
||||
// upper hinge cut
|
||||
translate( [ 0 , 60 , -10 ] ) cube( [ 30 , 30 , 10 ] );
|
||||
translate( [ -1 , 87.5 , 0 ] ) cube( [ 22.5 , 10 , 10 ] );
|
||||
|
||||
// upper hinge
|
||||
translate( [2 , 80, 6] ) cube( [ 19.5, 10 , 10 ] );
|
||||
translate( [-2 , 89.7, 3] ) rotate([70,0,0]) cube( [ 19.5, 10 , 5 ] );
|
||||
translate( [ -5 , 87.5 , 4.5 ] ) rotate([0,90,0]) cylinder( h = 26.5, r = 2.5, $fn=30);
|
||||
|
||||
// hinge hole
|
||||
translate( [ -5 , 87.5 , 4.5 ] ) rotate([0,90,0]) cylinder( h = 120, r = 2.6, $fn=30);
|
||||
|
||||
// door closing
|
||||
translate( [ 4 , 3.5 , 16.9 ] ) rotate([0,0,0]) cylinder( h = 3.2, r1 = 1.2, r2= 2.8, $fn=30);
|
||||
translate( [ 102 , 3.5 , 16.9 ] ) rotate([0,0,0]) cylinder( h = 3.2, r1 = 1.2, r2= 2.8, $fn=30);
|
||||
|
||||
// M3 NUT
|
||||
translate( [55.65 , 0.5, 16] ) cube( [ 5.7, 10 , 2.2 ] );
|
||||
|
||||
// side panel lightning slot
|
||||
translate( [2 , 10, 3] ) cube( [ 7, 65 , 5 ] );
|
||||
translate( [101 , 10, 3] ) cube( [ 3, 70 , 5 ] );
|
||||
|
||||
// corners - cut
|
||||
translate( [53 , 3, 1] ) rotate([0,0,70]) cube( [ 10, 10 , 50 ] );
|
||||
translate( [61 , 12, 1] ) rotate([0,0,-70]) cube( [ 10, 10 , 50 ] );
|
||||
translate( [16 , 2, 1] ) rotate([0,0,45]) cube( [ 5, 5 , 50 ] );
|
||||
|
||||
}
|
||||
|
||||
module RAMBo_doors()
|
||||
{
|
||||
difference()
|
||||
{
|
||||
body();
|
||||
cutouts();
|
||||
// large corner cut
|
||||
translate( [0 , -20, -3] ) rotate([0,45,45]) cube( [ 30, 30 , 20 ] );
|
||||
}
|
||||
}
|
||||
|
||||
RAMBo_doors();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
// PRUSA iteration3
|
||||
// RAMBo cover hinges
|
||||
// GNU GPL v3
|
||||
// Josef Průša <iam@josefprusa.cz> and contributors
|
||||
// http://www.reprap.org/wiki/Prusa_Mendel
|
||||
// http://prusamendel.org
|
||||
|
||||
module upper_hinge()
|
||||
{
|
||||
difference()
|
||||
{
|
||||
union(){
|
||||
// body
|
||||
cylinder( h = 26, r = 2.4, $fn=30);
|
||||
translate([0,0,26]) cylinder( h = 2, r1 = 2.4, r2 = 1.8, $fn=30);
|
||||
translate( [ -5 , -11 , 0 ] ) cube( [ 7 , 11 , 21 ] );
|
||||
}
|
||||
// M3 screw hole
|
||||
translate( [ -12.5 , -2.5 , 17 ] ) rotate( [0,90,0] ) cylinder( h = 20, r = 1.75, $fn=30);
|
||||
translate( [ -1.5 , -2.5 , 17 ] ) rotate( [0,90,0] ) cylinder( h = 9, r = 3, $fn=30);
|
||||
// angle cut
|
||||
translate([-2.9,-20,-1]) rotate([0,0,60]) cube([25,5,26]);
|
||||
}
|
||||
}
|
||||
|
||||
module lower_hinge()
|
||||
{
|
||||
difference()
|
||||
{
|
||||
union(){
|
||||
// body
|
||||
translate( [ 0 , 6 , 0 ] ) cylinder( h = 15, r = 2.4, $fn=30);
|
||||
translate( [ 0 , 6 , 0 ] ) cylinder( h = 10, r = 2.8, $fn=30);
|
||||
translate( [ 0 , 6 , 15 ] ) cylinder( h = 2, r1 = 2.4, r2=1.8, $fn=30);
|
||||
translate( [ -5 , 6 , 0 ] ) cube( [ 7 , 11 , 10 ] );
|
||||
}
|
||||
// M3 screw
|
||||
translate( [ -0.5 , 8.5 , 4 ] ) rotate( [0,90,0] ) cylinder( h = 20, r = 3, $fn=30);
|
||||
translate( [ -12 , 8.5 , 4 ] ) rotate( [0,90,0] ) cylinder( h = 20, r = 1.75, $fn=30);
|
||||
// angle cut
|
||||
translate([-5,20,-1]) rotate([0,0,-60]) cube([20,5,20]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
upper_hinge();
|
||||
lower_hinge();
|
||||
|
|
@ -1,81 +1,82 @@
|
|||
// PRUSA iteration3
|
||||
// Bearing holders
|
||||
// GNU GPL v3
|
||||
// Josef Průša <iam@josefprusa.cz> and contributors
|
||||
// http://www.reprap.org/wiki/Prusa_Mendel
|
||||
// http://prusamendel.org
|
||||
|
||||
use <polyholes.scad>
|
||||
|
||||
bearing_diameter = 14.5;
|
||||
|
||||
module horizontal_bearing_base(bearings=1){
|
||||
translate(v=[0,0,6]) cube(size = [24,8+bearings*25,12], center = true);
|
||||
}
|
||||
module horizontal_bearing_holes(bearings=1){
|
||||
cutter_lenght = 10+bearings*25;
|
||||
one_holder_lenght = 8+25;
|
||||
holder_lenght = 8+bearings*25;
|
||||
|
||||
// Main bearing cut
|
||||
difference(){
|
||||
translate(v=[0,0,12]) rotate(a=[90,0,0]) translate(v=[0,0,-cutter_lenght/2]) cylinder(h = cutter_lenght, r=(bearing_diameter/2)+0.2, $fn=50);
|
||||
// Bearing retainers
|
||||
translate(v=[0,1-holder_lenght/2,3]) cube(size = [24,6,8], center = true);
|
||||
translate(v=[0,-1+holder_lenght/2,3]) cube(size = [24,6,8], center = true);
|
||||
}
|
||||
|
||||
// Ziptie cutouts
|
||||
ziptie_cut_ofset = 0;
|
||||
for ( i = [0 : bearings-1] ){
|
||||
// For easier positioning I move them by half of one
|
||||
// bearing holder then add each bearign lenght and then center again
|
||||
translate(v=[0,-holder_lenght/2,0]) translate(v=[0,one_holder_lenght/2+i*25,0]) difference(){
|
||||
union(){
|
||||
translate(v=[0,2-8.5,12]) rotate(a=[90,0,0]) translate(v=[0,0,0]) cylinder(h = 4, r=11.5, $fn=50);
|
||||
translate(v=[0,2+8.5,12]) rotate(a=[90,0,0]) translate(v=[0,0,0]) cylinder(h = 4, r=11.5, $fn=50);
|
||||
}
|
||||
translate(v=[0,12,12]) rotate(a=[90,0,0]) translate(v=[0,0,0]) cylinder(h = 24, r=9, $fn=50);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
module horizontal_bearing_test(){
|
||||
difference(){
|
||||
horizontal_bearing_base(1);
|
||||
horizontal_bearing_holes(1);
|
||||
}
|
||||
translate(v=[30,0,0]) difference(){
|
||||
horizontal_bearing_base(2);
|
||||
#horizontal_bearing_holes(2);
|
||||
}
|
||||
translate(v=[60,0,0]) difference(){
|
||||
horizontal_bearing_base(3);
|
||||
horizontal_bearing_holes(3);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
thinwall = 3;
|
||||
bearing_size = bearing_diameter + 2 * thinwall;
|
||||
|
||||
module vertical_bearing_base(){
|
||||
translate(v=[-2-bearing_size/4,0,29]) cube(size = [4+bearing_size/2,bearing_size,58], center = true);
|
||||
cylinder(h = 58, r=bearing_size/2, $fn = 90);
|
||||
}
|
||||
|
||||
module vertical_bearing_holes(){
|
||||
translate(v=[0,0,-1]) poly_cylinder(h = 62, r=(bearing_diameter/2)+0.1);
|
||||
rotate(a=[0,0,-40]) translate(v=[bearing_diameter/2-2.9,-0.5,0.5]) cube(size = [thinwall*2,1,62]);
|
||||
|
||||
}
|
||||
|
||||
//difference(){
|
||||
vertical_bearing_base();
|
||||
vertical_bearing_holes();
|
||||
//}
|
||||
//horizontal_bearing_test();
|
||||
//horizontal_bearing_base(1);
|
||||
// PRUSA iteration3
|
||||
// Bearing holders
|
||||
// GNU GPL v3
|
||||
// Josef Průša <iam@josefprusa.cz> and contributors
|
||||
// http://www.reprap.org/wiki/Prusa_Mendel
|
||||
// http://prusamendel.org
|
||||
|
||||
use <polyholes.scad>
|
||||
|
||||
bearing_diameter = 14.95;
|
||||
|
||||
module horizontal_bearing_base(bearings=1){
|
||||
translate(v=[0,0,6]) cube(size = [24,8+bearings*25,12], center = true);
|
||||
}
|
||||
module horizontal_bearing_holes(bearings=1){
|
||||
cutter_lenght = 10+bearings*25;
|
||||
one_holder_lenght = 8+25;
|
||||
holder_lenght = 8+bearings*25;
|
||||
|
||||
// Main bearing cut
|
||||
difference(){
|
||||
translate(v=[0,0,12]) rotate(a=[90,0,0]) translate(v=[0,0,-cutter_lenght/2]) cylinder(h = cutter_lenght, r=(bearing_diameter/2)+0.2, $fn=50);
|
||||
// Bearing retainers
|
||||
translate(v=[0,1-holder_lenght/2,3]) cube(size = [24,6,8], center = true);
|
||||
translate(v=[0,-1+holder_lenght/2,3]) cube(size = [24,6,8], center = true);
|
||||
}
|
||||
|
||||
// Ziptie cutouts
|
||||
ziptie_cut_ofset = 0;
|
||||
for ( i = [0 : bearings-1] ){
|
||||
// For easier positioning I move them by half of one
|
||||
// bearing holder then add each bearign lenght and then center again
|
||||
translate(v=[0,-holder_lenght/2,0]) translate(v=[0,one_holder_lenght/2+i*25,0]) difference(){
|
||||
union(){
|
||||
translate(v=[0,2-8.5,12]) rotate(a=[90,0,0]) translate(v=[0,0,0]) cylinder(h = 4, r=11.5, $fn=50);
|
||||
translate(v=[0,2+8.5,12]) rotate(a=[90,0,0]) translate(v=[0,0,0]) cylinder(h = 4, r=11.5, $fn=50);
|
||||
}
|
||||
translate(v=[0,12,12]) rotate(a=[90,0,0]) translate(v=[0,0,0]) cylinder(h = 24, r=9, $fn=50);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
module horizontal_bearing_test(){
|
||||
difference(){
|
||||
horizontal_bearing_base(1);
|
||||
horizontal_bearing_holes(1);
|
||||
}
|
||||
translate(v=[30,0,0]) difference(){
|
||||
horizontal_bearing_base(2);
|
||||
#horizontal_bearing_holes(2);
|
||||
}
|
||||
translate(v=[60,0,0]) difference(){
|
||||
horizontal_bearing_base(3);
|
||||
horizontal_bearing_holes(3);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
thinwall = 3;
|
||||
bearing_size = bearing_diameter + 2 * thinwall;
|
||||
|
||||
module vertical_bearing_base(){
|
||||
translate(v=[-2-bearing_size/4,0,29]) cube(size = [4+bearing_size/2,bearing_size,58], center = true);
|
||||
cylinder(h = 58, r=bearing_size/2, $fn = 90);
|
||||
}
|
||||
|
||||
module vertical_bearing_holes(){
|
||||
translate(v=[0,0,-1]) poly_cylinder(h = 62, r=(bearing_diameter/2));
|
||||
translate(v=[0,0,-0.1]) cylinder(r1=(bearing_diameter/2)+0.7,r2=(bearing_diameter/2), h=0.5);
|
||||
rotate(a=[0,0,-40]) translate(v=[bearing_diameter/2-2.9,-0.5,0.5]) cube(size = [thinwall*2,1,62]);
|
||||
|
||||
}
|
||||
|
||||
//difference(){
|
||||
//vertical_bearing_base();
|
||||
vertical_bearing_holes();
|
||||
//}
|
||||
//horizontal_bearing_test();
|
||||
//horizontal_bearing_base(1);
|
||||
//horizontal_bearing_holes(1);
|
||||
|
|
@ -0,0 +1,76 @@
|
|||
// PRUSA iteration3
|
||||
// Cable holder
|
||||
// GNU GPL v3
|
||||
// Josef Průša <iam@josefprusa.cz> and contributors
|
||||
// http://www.reprap.org/wiki/Prusa_Mendel
|
||||
// http://prusamendel.org
|
||||
|
||||
module cable_holder()
|
||||
{
|
||||
|
||||
difference()
|
||||
{
|
||||
|
||||
union()
|
||||
{
|
||||
// body
|
||||
translate([-21.1,3,35]) cube([2.5,13,13]);
|
||||
difference()
|
||||
{
|
||||
translate([-21.1,3,35]) rotate([-15,0,0]) cube([2.5,7,35]);
|
||||
rotate([-15,0,0]) translate([-21,0,38]) rotate([0,0,45]) cube([2.5,2.5,35]);
|
||||
}
|
||||
|
||||
//round reinforcement
|
||||
difference()
|
||||
{
|
||||
translate([-21.1,16,50]) rotate([0,90,0])cylinder(r=4, h=2.5, $fn=50);
|
||||
translate([-22,16,50]) rotate([0,90,0])cylinder(r=1.7, h=4, $fn=50);
|
||||
|
||||
translate([-21.6,16,45]) cube([4,10,10]);
|
||||
translate([-21.6,12,50]) cube([4,10,10]);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// side angle cut
|
||||
translate([-22,-1.5,38]) rotate([-11,0,0]) cube([5,7,45]);
|
||||
|
||||
// side cut
|
||||
translate([-22,-2,33]) cube([8,8,12]);
|
||||
|
||||
// angled side cut
|
||||
rotate([-15,0,0]) translate([-18,-8,39]) rotate([0,0,45]) cube([3.5,2.5,35]);
|
||||
|
||||
//zipties
|
||||
translate([-25,15,42]) rotate([0,0,-45]) cube([3,10,3]);
|
||||
translate([-20,2,42]) rotate([0,0,45]) cube([3,10,3]);
|
||||
translate([-25,15,36]) rotate([0,0,-45]) cube([3,10,3]);
|
||||
translate([-20,2,36]) rotate([0,0,45]) cube([3,10,3]);
|
||||
|
||||
// M3 screw
|
||||
translate([-18.5,11,19]) rotate([0,0,0])cylinder(r=1.52, h=23, $fn=50);
|
||||
translate([-18.5,11,42]) rotate([0,0,0])cylinder(r=3, h=3, $fn=50);
|
||||
|
||||
// bottom cut
|
||||
translate([-21.6,-9,25]) cube([4,26,10]);
|
||||
|
||||
|
||||
//selective infill
|
||||
translate([-20.8,11.5,46]) rotate([-15,0,0]) cube([2,0.4,10]);
|
||||
translate([-20.8,10,46]) rotate([-15,0,0]) cube([2,0.4,18]);
|
||||
translate([-20.8,8.5,46]) rotate([-15,0,0]) cube([2,0.4,10]);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
cable_holder();
|
||||
translate([0,40,0]) rotate([0,180,180]) mirror([0,0,1]) cable_holder();
|
||||
|
|
@ -1,14 +1,129 @@
|
|||
use <extruder-main.scad>
|
||||
|
||||
|
||||
module ext_body(){
|
||||
|
||||
difference(){
|
||||
extruder_body();
|
||||
extruder_mount_holes();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
ext_body();
|
||||
|
||||
// PRUSA iteration3
|
||||
// Extruder-body
|
||||
// GNU GPL v3
|
||||
// Josef Průša <iam@josefprusa.cz> and contributors
|
||||
// http://www.reprap.org/wiki/Prusa_Mendel
|
||||
// http://prusamendel.org
|
||||
|
||||
|
||||
use <extruder-main.scad>
|
||||
|
||||
|
||||
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(){
|
||||
|
||||
difference(){
|
||||
extruder_body();
|
||||
extruder_mount_holes();
|
||||
|
||||
// PINDA entry hole
|
||||
translate([-5.5,37,6])rotate([90,0,0])cylinder(r=4.4, h=4, $fn=20);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
difference()
|
||||
{
|
||||
ext_body();
|
||||
|
||||
// remove old pinda
|
||||
translate([-20,26,-2]) cube([20,30,30]);
|
||||
|
||||
// screw end larger hole
|
||||
translate([-20,40,12])rotate([0,90,0])cylinder(r=1.5, h=24, $fn=20);
|
||||
translate([2,40,11.5])rotate([0,90,0])cylinder(r=1.5, h=3, $fn=20);
|
||||
translate([2,40,12])rotate([0,90,0])cylinder(r=1.5, h=3, $fn=20);
|
||||
translate([2,40,12.5])rotate([0,90,0])cylinder(r=1.5, h=3, $fn=20);
|
||||
|
||||
// M3 nuts
|
||||
translate([0,46,9]) m3nut();
|
||||
translate([0,37,9]) m3nut();
|
||||
}
|
||||
|
||||
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]);
|
||||
}
|
||||
|
||||
|
||||
// PINDA lower hole
|
||||
translate([-5.5,50,6])rotate([-90,0,0])cylinder(r=4.1, h=40, $fn=20);
|
||||
|
||||
// M3 screws
|
||||
translate([-20,49,12])rotate([0,90,0])cylinder(r=1.5, h=24, $fn=20);
|
||||
translate([-20,40,12])rotate([0,90,0])cylinder(r=1.5, 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.5, h=3, $fn=20);
|
||||
translate([2,49,12])rotate([0,90,0])cylinder(r=1.5, h=3, $fn=20);
|
||||
translate([2,49,12.5])rotate([0,90,0])cylinder(r=1.5, h=3, $fn=20);
|
||||
|
||||
// upper M3 screw end opening
|
||||
translate([2,40,11.5])rotate([0,90,0])cylinder(r=1.5, h=3, $fn=20);
|
||||
translate([2,40,12])rotate([0,90,0])cylinder(r=1.5, h=3, $fn=20);
|
||||
translate([2,40,12.5])rotate([0,90,0])cylinder(r=1.5, 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,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.2, h=30, $fn=20);
|
||||
translate([-5.5,41,6])rotate([90,0,0])cylinder(r=4.4, h=5, $fn=20);
|
||||
|
||||
// bottom cut
|
||||
translate([-15,54.5,-1]) cube([20 , 8,20]);
|
||||
|
||||
|
||||
for ( i = [0 : 14] )
|
||||
{
|
||||
translate([-5.5,39+i,6])rotate([90,0,0])cylinder(r1=4.5, r2=3, h=1, $fn=20);
|
||||
translate([-5.5,40+i,6])rotate([90,0,0])cylinder(r1=3, r2=4.5, h=1, $fn=20);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
ex_body();
|
||||
|
|
@ -1,16 +1,23 @@
|
|||
use <extruder-main.scad>
|
||||
|
||||
module ext_cover(){
|
||||
difference(){
|
||||
extruder_cover();
|
||||
extruder_mount_holes();
|
||||
|
||||
// Easy assembly trim
|
||||
cube([50,50,15.2]);
|
||||
translate([-1,-10+0.2,0])cube([50,10,40]);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// PRUSA iteration3
|
||||
// Extruder cover
|
||||
// GNU GPL v3
|
||||
// Josef Průša <iam@josefprusa.cz> and contributors
|
||||
// http://www.reprap.org/wiki/Prusa_Mendel
|
||||
// http://prusamendel.org
|
||||
|
||||
use <extruder-main.scad>
|
||||
|
||||
module ext_cover(){
|
||||
difference(){
|
||||
extruder_cover();
|
||||
extruder_mount_holes();
|
||||
|
||||
|
||||
// Easy assembly trim
|
||||
translate([5,56,29.3])rotate([0,0,0])cylinder(r1=1.5, r2=1.9, h=1, $fn=20);
|
||||
cube([50,50,15.2]);
|
||||
translate([-1,-10+0.2,0])cube([50,10,40]);
|
||||
}
|
||||
}
|
||||
|
||||
ext_cover();
|
||||
|
|
@ -1,78 +1,81 @@
|
|||
|
||||
|
||||
module part_body(){
|
||||
|
||||
//bottom round edge
|
||||
translate([ -7, 4, 6 ]) rotate([0,90,0]) cylinder(r=4, h=21.5, $fn=200 );
|
||||
translate([ -7, 4, 4 ]) rotate([0,90,0]) cylinder(r=4, h=21.5, $fn=200 );
|
||||
|
||||
translate([ 11, 8, 4 ]) cube([3.5,4,6]);
|
||||
|
||||
difference()
|
||||
{
|
||||
translate([ -7, 0, 4 ]) cube([21.5,5,6]);
|
||||
translate([ -8, -1, 8 ]) rotate([45,0,0]) cube([25,5,6]);
|
||||
}
|
||||
|
||||
translate([ -7, 8, 4 ]) rotate([0,90,0]) cylinder(r=4, h=21.5, $fn=200 );
|
||||
|
||||
translate([ 11, 0, 4]) cube([3.5,12,2]);
|
||||
|
||||
translate([ 11, 4, 8]) cube([3.5,4,2]);
|
||||
translate([ 11, 4, 0]) cube([3.5,4,2]);
|
||||
|
||||
|
||||
// body
|
||||
translate([ -7, 4, 0 ]) cube([18,10,10]);
|
||||
translate([ -7, 0, 4 ]) cube([18,32,2]);
|
||||
translate([ -5, 4, 3 ]) cube([10,48,7]);
|
||||
translate([ -11, 11, 0 ]) cube([22,28,10]);
|
||||
translate([ -9, 11, 0 ]) cube([18,30,10]);
|
||||
|
||||
// upper round edges
|
||||
translate([ 9, 39, 0 ]) cylinder(r=2, h=10, $fn=25);
|
||||
translate([ -9, 39, 0 ]) cylinder(r=2, h=10, $fn=25);
|
||||
|
||||
// upper round piece
|
||||
translate([ 0, 52, 6.5 ]) rotate([0,0,0]) cylinder(r=5, h=7, $fn=200, center=true);
|
||||
}
|
||||
|
||||
module cut_away(){
|
||||
|
||||
// axis
|
||||
translate([ 0, 4, 6 ]) rotate([0,90,0]) cylinder(r=1.7, h=30, $fn=200, center=true);
|
||||
|
||||
// bolt holes
|
||||
translate([ 7.5, 35.8, -1 ]) cylinder(r=1.75, h=12, $fn=20);
|
||||
translate([ 7.5, 36.5, -1 ]) cylinder(r=1.75, h=12, $fn=20);
|
||||
translate([ 7.5, 37.2, -1 ]) cylinder(r=1.75, h=12, $fn=20);
|
||||
|
||||
translate([ -7.5, 35.8, -1 ])cylinder(r=1.75, h=12, $fn=20);
|
||||
translate([ -7.5, 36.5, -1 ])cylinder(r=1.75, h=12, $fn=20);
|
||||
translate([ -7.5, 37.2, -1 ])cylinder(r=1.75, h=12, $fn=20);
|
||||
|
||||
translate([0,52,0]) sphere(r=5, $fn=20);
|
||||
|
||||
//bearing hole
|
||||
translate([ 0, 20, 3 ]){
|
||||
rotate([0,90,0]){
|
||||
cylinder(r=8.5, h=7.5, $fn=200, center=true);
|
||||
%cylinder(r=8, h=7.5, $fn=200, center=true);
|
||||
cylinder(r=2.5, h=17, $fn=200, center=true);
|
||||
}
|
||||
translate([0,0,-5]) cube([17,5,10], center=true);
|
||||
translate([0,0,-5]) cube([7.5,17,10], center=true);
|
||||
}
|
||||
}
|
||||
|
||||
module idler(){
|
||||
|
||||
// final part
|
||||
translate([0,0,10]) mirror([0,0,1])
|
||||
difference(){
|
||||
part_body();
|
||||
cut_away();
|
||||
}
|
||||
}
|
||||
|
||||
// PRUSA iteration3
|
||||
// Extruder idler
|
||||
// GNU GPL v3
|
||||
// Josef Průša <iam@josefprusa.cz> and contributors
|
||||
// http://www.reprap.org/wiki/Prusa_Mendel
|
||||
// http://prusamendel.org
|
||||
|
||||
module part_body(){
|
||||
|
||||
//bottom round edge
|
||||
translate([ -7, 4, 6 ]) rotate([0,90,0]) cylinder(r=4, h=21.5, $fn=200 );
|
||||
translate([ -7, 4, 4 ]) rotate([0,90,0]) cylinder(r=4, h=21.5, $fn=200 );
|
||||
translate([ 11, 8, 4 ]) cube([3.5,4,6]);
|
||||
|
||||
|
||||
difference()
|
||||
{
|
||||
translate([ -7, 0, 4 ]) cube([21.5,5,6]);
|
||||
translate([ -8, -1, 8 ]) rotate([45,0,0]) cube([25,5,6]);
|
||||
}
|
||||
|
||||
translate([ -7, 8, 4 ]) rotate([0,90,0]) cylinder(r=4, h=21.5, $fn=200 );
|
||||
translate([ 11, 0, 4]) cube([3.5,12,2]);
|
||||
translate([ 11, 4, 8]) cube([3.5,4,2]);
|
||||
translate([ 11, 4, 0]) cube([3.5,4,2]);
|
||||
|
||||
|
||||
// body
|
||||
translate([ -7, 4, 0 ]) cube([18,10,10]);
|
||||
translate([ -7, 0, 4 ]) cube([18,32,2]);
|
||||
translate([ -5, 4, 3 ]) cube([10,48,7]);
|
||||
translate([ -11, 11, 0 ]) cube([22,28,10]);
|
||||
translate([ -9, 11, 0 ]) cube([18,30,10]);
|
||||
|
||||
// upper round edges
|
||||
translate([ 9, 39, 0 ]) cylinder(r=2, h=10, $fn=25);
|
||||
translate([ -9, 39, 0 ]) cylinder(r=2, h=10, $fn=25);
|
||||
|
||||
// upper round piece
|
||||
translate([ 0, 52, 6.5 ]) rotate([0,0,0]) cylinder(r=5, h=7, $fn=200, center=true);
|
||||
}
|
||||
|
||||
module cut_away(){
|
||||
|
||||
// axis
|
||||
translate([ 0, 4, 6 ]) rotate([0,90,0]) cylinder(r=1.7, h=30, $fn=200, center=true);
|
||||
|
||||
// bolt holes
|
||||
translate([ 7.5, 35.8, -1 ]) cylinder(r=1.75, h=12, $fn=20);
|
||||
translate([ 7.5, 36.5, -1 ]) cylinder(r=1.75, h=12, $fn=20);
|
||||
translate([ 7.5, 37.2, -1 ]) cylinder(r=1.75, h=12, $fn=20);
|
||||
|
||||
translate([ -7.5, 35.8, -1 ])cylinder(r=1.75, h=12, $fn=20);
|
||||
translate([ -7.5, 36.5, -1 ])cylinder(r=1.75, h=12, $fn=20);
|
||||
translate([ -7.5, 37.2, -1 ])cylinder(r=1.75, h=12, $fn=20);
|
||||
|
||||
translate([0,52,0]) sphere(r=5, $fn=20);
|
||||
|
||||
//bearing hole
|
||||
translate([ 0, 20, 3 ]){
|
||||
rotate([0,90,0]){
|
||||
cylinder(r=8.5, h=7.5, $fn=200, center=true);
|
||||
%cylinder(r=8, h=7.5, $fn=200, center=true);
|
||||
cylinder(r=2.5, h=17, $fn=200, center=true);
|
||||
}
|
||||
translate([0,0,-5]) cube([17,5,10], center=true);
|
||||
translate([0,0,-5]) cube([7.5,17,10], center=true);
|
||||
}
|
||||
}
|
||||
|
||||
module idler(){
|
||||
|
||||
// final part
|
||||
translate([0,0,10]) mirror([0,0,1])
|
||||
difference(){
|
||||
part_body();
|
||||
cut_away();
|
||||
}
|
||||
}
|
||||
|
||||
idler();
|
||||
|
|
@ -1,335 +1,404 @@
|
|||
module extruder_body(){
|
||||
union(){
|
||||
difference(){
|
||||
// Main
|
||||
union(){
|
||||
cube([35,44,15]);
|
||||
// P.I.N.D.A. Probe mount
|
||||
difference(){
|
||||
translate([-15.5,40,0])cube([21.5,5,14]);
|
||||
translate([9,41,-1]) rotate([0,0,45]) translate([0,-5,-0.1]) cube([10,12,20]);
|
||||
}
|
||||
translate([-7.5,17,0])cube([8,8.5,2]); // P.I.N.D.A. and Fan cable tray guide
|
||||
//fan nice look
|
||||
translate([35,0,0]) cube([10,12,15]);
|
||||
}
|
||||
// Fan nice look edge cut
|
||||
translate([+52.6,-3.49,0]) rotate([0,0,-45-180]) translate([0,-5,-0.1]) cube([10,10,20]);
|
||||
|
||||
// P.I.N.D.A. Probe mount edge cut
|
||||
translate([-28.5,40,5]) rotate([0,30,0]) translate([0,-5,-0.1]) cube([10,12,20]); // Top
|
||||
translate([-33,40,-5]) rotate([0,60,0]) translate([0,-5,-0.1]) cube([12,12,20]); // Bottom
|
||||
|
||||
|
||||
// P.I.N.D.A. probe mount hole
|
||||
translate([35/2,0,6]){
|
||||
translate([-23,35,0])rotate([-90,0,0])cylinder(r=14/2, h=8, $fn=6);
|
||||
translate([-23,32.99,0])rotate([-90,0,0])cylinder(r=14/2, h=7, $fn=20);
|
||||
translate([-23,0,0])rotate([-90,0,0])cylinder(r=8.5/2, h=50, $fn=20);
|
||||
}
|
||||
|
||||
// P.I.N.D.A. and Fan cable tray cut
|
||||
translate([-4.5,20,-1]) cube([4.499,3.5+5,5]);
|
||||
// P.I.N.D.A. and Fan cable tray edge cut
|
||||
translate([-10,22,-1])rotate([0,0,45]) cube([10,5,10]);
|
||||
translate([-13,16.5,-1])rotate([0,0,-45]) cube([10,5,10]);
|
||||
|
||||
extruder_nozzle_cut();
|
||||
// larger groove for easy entry
|
||||
translate([35/2,0,15]) rotate([-90,0,0]) cylinder(r=7.13, h=20, $fn=120);
|
||||
|
||||
// Extruder cables path
|
||||
translate([33+4,10,-1]) cylinder(r=2, h=17,$fn=30);
|
||||
translate([33+4,12,9]) cube([4,4,20], center=true);
|
||||
|
||||
extruder_nozzle_cooling();
|
||||
|
||||
}
|
||||
|
||||
// Cooling grill
|
||||
difference(){
|
||||
union(){
|
||||
// Fins up
|
||||
//translate([0,37,0]) rotate([0,0,25]) cube([6,1.4,15]);
|
||||
translate([0,32,0]) rotate([0,0,25]) cube([6,1.4,15]);
|
||||
//translate([0,27,0]) rotate([0,0,25]) cube([6,1.4,15]);
|
||||
translate([0,22,0]) rotate([0,0,25]) cube([6,1.4,15]);
|
||||
//translate([0,17,0]) rotate([0,0,25]) cube([6,1.4,15]);
|
||||
|
||||
// Structural support
|
||||
translate([0,13,11]) rotate([0,0,0]) cube([4,30,1]);
|
||||
//translate([0,13,14.5]) rotate([0,0,0]) cube([4,30,0.5]);
|
||||
}
|
||||
// Trim
|
||||
translate([-35,0,0])cube([35,43,15]);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
mirror([1,0,0]){
|
||||
// Filament visualisation
|
||||
%translate([-35/2,-50,15])rotate([-90,0,0])cylinder(r=1.75/2, h=100, $fn=20);
|
||||
|
||||
// Motor visualisation
|
||||
translate([-42,-42,-1]) %cube([42,42,1]);
|
||||
translate([-21,-21,0])%cylinder(r=2.5, h=20, $fn=30);
|
||||
translate([-21,-21,8])%cylinder(r=4, h=13, $fn=30);
|
||||
|
||||
// MOTOR
|
||||
difference(){
|
||||
union(){
|
||||
// base
|
||||
difference(){
|
||||
translate([-42,-42,0]) cube([42,42,30]);
|
||||
//main cut
|
||||
translate([-21,-19.5-10-3,-1]) cube([42,23,32]);
|
||||
translate([-15,-49.5,-1]) cube([42,23,32]);
|
||||
translate([-51,-33,-1]) rotate([0,65,0]) cube([10,25,10]);
|
||||
translate([-35/2+3+1.8+0.5,-41,2+3+2.5])cube([42,42,32]);
|
||||
//base round cutout
|
||||
translate([-21,-21,-2]) cylinder(r=11.5, h=33, $fn=200);
|
||||
|
||||
//filament hole
|
||||
translate([-35/2,-42,15])rotate([-90,0,0])cylinder(r=2.5/2, h=20, $fn=20);
|
||||
translate([-35/2,-42,15])rotate([-90,0,0])cylinder(r2=2.2/2,r1=3.6/2, h=1.5, $fn=20);
|
||||
}
|
||||
|
||||
//filament guide
|
||||
translate([-35/2-3,-19,15-4])cube([6,10,6.5]);
|
||||
difference(){
|
||||
union(){
|
||||
translate([-35/2-3,-8.4+2+1.2,0.4]) rotate([45,0,0]) cube([6,15,15]);
|
||||
translate([-35/2-3,-8.4+2+1.2,0.4+6.5]) rotate([45,0,0]) cube([6,15,15]);
|
||||
}
|
||||
translate([-35/2-4,-1,2]) cube([8,15,25]);
|
||||
|
||||
}
|
||||
}
|
||||
// Filament ptfe guide cutout
|
||||
|
||||
// PTFE secure ring slot
|
||||
translate([-35/2,-3.99,15])rotate([-90,0,0]) cylinder(r=7.5/2, h=5, $fn=50); // Bottom hole
|
||||
translate([-35/2,-3.99,21])rotate([-90,0,0]) cylinder(r=7.5/2, h=5, $fn=50); // Top hole
|
||||
translate([-35/2 - 7.5/2,-3.99,21])rotate([-90,0,0])cube([7.5,6,8]); // Slot cut
|
||||
|
||||
// PTFE tube slot
|
||||
translate([-35/2,-23,15])rotate([-90,0,0]) cylinder(r=4.3/2, h=25, $fn=50); // Main hole
|
||||
translate([-35/2,-9,15])rotate([-60,0,0]) rotate([0,0,10])cylinder(r=4.3/2, h=25, $fn=50); // Top hole
|
||||
// Slot cut
|
||||
difference(){
|
||||
translate([-35/2,-8,14])rotate([-60,0,0]) rotate([0,0,30])cylinder(r=4.85/2, h=25, $fn=6);
|
||||
translate([-22,-20,5])cube([10,50,10]);
|
||||
}
|
||||
|
||||
// drive pulley cutout
|
||||
translate([-21,-21,8])cylinder(r=4, h=13, $fn=80);
|
||||
// idler bearing cutout
|
||||
translate([-21+13,-21,8])cylinder(r=8.5, h=13, $fn=80);
|
||||
|
||||
translate([-21,-27,8])cube([10,10,13]); // Trim
|
||||
|
||||
|
||||
// filament clean hole
|
||||
translate([-43,-21,15])rotate([90,0,90])cylinder(r=20/2, h=20, $fn=6);
|
||||
translate([-43,-21,15])rotate([90,0,90])cylinder(r1=27/2,r2=20/2, h=5, $fn=6);
|
||||
|
||||
// round corners
|
||||
translate([-2.5,-42+2.5,0]) rotate([0,0,-45]) translate([0,-5,-0.1]) cube([10,10,10]);
|
||||
translate([-42+2.5,-42+2.5,0]) rotate([0,0,-45-90]) translate([0,-5,-0.1]) cube([10,10,33]);
|
||||
|
||||
|
||||
|
||||
// idler nut traps Bottom
|
||||
translate([-23,-53.5,7.5-(5.5/2)-0.1])cube([2.5,20,5.7]); // Nut trap
|
||||
translate([-32,-36.5-2.2,7.5-1.5])cube([40,4,3]); // Screw hole
|
||||
|
||||
// idler nut traps Top
|
||||
translate([-23,-53.5,30-7.5-(5.5/2)-0.1])cube([2.5,20,5.7]); // Nut trap
|
||||
translate([-32,-36.5-2.2,30-7.5-1.5])cube([40,4,3]); // Screw hole
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module extruder_cover(){
|
||||
union(){
|
||||
difference(){
|
||||
// Main
|
||||
union(){
|
||||
translate([0,0,15]) cube([35,44,15]);
|
||||
|
||||
translate([34,42,23]) cube([1,18,7]);
|
||||
translate([34,56,23]) cube([4,5,7]);
|
||||
//fan nice look
|
||||
translate([35,0,15]) cube([10,12,15]);
|
||||
}
|
||||
// Fan nice look edge cut
|
||||
translate([+52.6,-3.49,0]) rotate([0,0,-45-180]) translate([0,-5,-0.1]) cube([10,10,32]);
|
||||
|
||||
translate([38,58.3,20]) rotate([0,0,45]) cube([5,5,15]);
|
||||
|
||||
extruder_nozzle_cut();
|
||||
|
||||
|
||||
// Extruder cables path
|
||||
translate([33+4,10,-1]) cylinder(r=2, h=32,$fn=30);
|
||||
translate([33+4,12,22]) cube([4,4,20], center=true);
|
||||
|
||||
extruder_nozzle_cooling();
|
||||
|
||||
}
|
||||
|
||||
// 5015 print fan mount pillar
|
||||
translate([6,33,27])rotate([0,0,67]) cube([8,24,3]); // Connecting cube
|
||||
translate([35/2+12-42.75,6.5+38.5,25])cylinder(r=5.8, h=5, $fn=6); // Hexagon at the end
|
||||
|
||||
// Print fan nozzle mount - right
|
||||
translate([5,61-5,24])cylinder(r=7.5/2, h=6, $fn=6);
|
||||
|
||||
|
||||
// Print colling airway
|
||||
translate([8,44,28])rotate([0,0,0]) cube([27,9,2]);
|
||||
difference(){
|
||||
translate([8,51.6,28.5])rotate([-45,0,0]) cube([27,7,2]);
|
||||
translate([7,57,20])rotate([0,0,0]) cube([29,7,12]);
|
||||
translate([7,53,22])rotate([0,0,0]) cube([29,7,2]);
|
||||
}
|
||||
|
||||
translate([34,44,24])rotate([0,0,0]) cube([1,13,6]);
|
||||
translate([8-5,44,24])rotate([0,0,0]) cube([1+5,13,6]);
|
||||
|
||||
// Print fan nozzle mount - left
|
||||
//#difference(){
|
||||
//union(){
|
||||
// #translate([34,44,24])rotate([0,0,0]) cube([5,10,6]);
|
||||
// #translate([37,61-5,24])cylinder(r=7.5/2, h=6, $fn=6);
|
||||
//}
|
||||
//#translate([24,51.6,30.5])rotate([-45,0,0]) cube([10,7,8]);
|
||||
//translate([37,61-5,23])cylinder(r=1.4, h=8, $fn=30);
|
||||
//}
|
||||
|
||||
// Cooling grill
|
||||
difference(){
|
||||
union(){
|
||||
// Fins up
|
||||
//translate([0,37,0]) rotate([0,0,25]) cube([6,1.4,15]);
|
||||
translate([0,32,15]) rotate([0,0,25]) cube([6,1.4,15]);
|
||||
//translate([0,27,0]) rotate([0,0,25]) cube([6,1.4,15]);
|
||||
translate([0,22,15]) rotate([0,0,25]) cube([6,1.4,15]);
|
||||
//translate([0,17,0]) rotate([0,0,25]) cube([6,1.4,15]);
|
||||
|
||||
// Structural support
|
||||
translate([0,13,19]) rotate([0,0,0]) cube([4,30,1]);
|
||||
//translate([0,13,14.5]) rotate([0,0,0]) cube([4,30,0.5]);
|
||||
}
|
||||
// Trim
|
||||
translate([-35,0,0])cube([35,43,35]);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
module extruder_mount_holes(){
|
||||
|
||||
// Carriage mount right
|
||||
translate([35/2-12,6.5,-0.01])cylinder(r=1.65, h=5, $fn=30); // Bottom hole
|
||||
translate([35/2-12,6.5,6.5+0.2])cylinder(r=1.65, h=5, $fn=30); // Middle hole
|
||||
translate([35/2-12,6.5,12.5+0.2])cylinder(r=1.65, h=14.3-0.2, $fn=30); // Top hole
|
||||
translate([35/2-12,6.5,27])cylinder(r=3.1, h=5, $fn=30); // Head cut
|
||||
translate([35/2-12-6.5,6.5-2.85,10])rotate([0,0,0]) cube([9.5,5.7,2.5]); // Nut Trap top
|
||||
//translate([35/2-12,6.5,10])cylinder(r=3.3, h=2.5, $fn=6);
|
||||
|
||||
translate([35/2-12-6.5,6.5-2.85,4])rotate([0,0,0]) cube([9.5,5.7,2.5]); // Nut trap bottom
|
||||
//translate([35/2-12,6.5,4])cylinder(r=3.3, h=2.5, $fn=6);
|
||||
|
||||
translate([35/2-12-6.5+5,6.5-2.85-2.5,3])rotate([0,0,0]) cube([5,0.4,10.5]); // Nut Trap reinforcement
|
||||
|
||||
translate([35/2-12-6.5+5,6.5-2.85+2.5+5,3])rotate([0,0,0]) cube([5,0.4,10.5]); // Nut Trap reinforcement
|
||||
|
||||
|
||||
// Carriage mount left
|
||||
translate([35/2+12+11,6.5-2,6.2])cylinder(r=1.7, h=20.8-0.2, $fn=30); // Screw hole
|
||||
translate([35/2+12+11,6.5-2,-0.01])rotate([0,0,-15])cylinder(r=3.2, h=6, $fn=6); // Nut trap
|
||||
translate([35/2+12+11,6.5-2,-0.01])rotate([0,0,-15])cylinder(r2=3.2, r1=4, h=3, $fn=6); // Nut trap
|
||||
translate([35/2+12+11,6.5-2,27])cylinder(r=3.1, h=5, $fn=30); // Head cut
|
||||
|
||||
// Fan nozzle mount hole
|
||||
translate([5,61-5,20])cylinder(r=3/2, h=12, $fn=30);
|
||||
|
||||
// 5015 print fan top left mount hole
|
||||
translate([35/2+12,6.5,-0.01])cylinder(r=1.65, h=35, $fn=30); // Screw cut
|
||||
translate([35/2+12,6.5,11]) rotate([0,0,30])cylinder(r=3.2, h=17.01, $fn=6); // Nut Trap
|
||||
translate([35/2+12,6.5,14]) rotate([0,0,30])cylinder(r=3.5, h=11.01, $fn=6); // Nut easy entry cut
|
||||
|
||||
// 5015 print fan bottom right mount hole
|
||||
translate([35/2+12-42.75,6.5+38.5,15])cylinder(r=1.65, h=20, $fn=30); // Screw cut
|
||||
translate([35/2+12-42.75,6.5+38.5,15]) cylinder(r=3.2, h=13.01, $fn=6); // Nut Trap
|
||||
|
||||
|
||||
// Motor mount holes
|
||||
translate([21,-21,0]){
|
||||
// Top right
|
||||
translate([-15.5,-15.5,4]) cylinder(r=1.65, h=50, $fn=30); // Screw hole
|
||||
translate([-15.5,-15.5,-1]) cylinder(r=3.1, h=4.5, $fn=30); // Head cut
|
||||
|
||||
// Bottom right
|
||||
translate([-15.5,15.5,4]) cylinder(r=1.65, h=50, $fn=30); // Screw hole
|
||||
translate([-15.5,15.5,-1]) cylinder(r=3.1, h=4.5, $fn=30); // Head cut
|
||||
|
||||
// Top left
|
||||
translate([15.5,-15.5,4]) cylinder(r=1.65, h=50, $fn=30); // Screw hole
|
||||
translate([15.5,-15.5,-1]) cylinder(r=3.1, h=4.5, $fn=30); // Head cut
|
||||
|
||||
// Bottom left
|
||||
translate([15.5,15.5,4]) cylinder(r=1.65, h=50, $fn=30); // Screw hole
|
||||
translate([15.5,15.5,-1]) cylinder(r=3.1, h=4.5, $fn=30); // Head cut
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
module extruder_nozzle_cut(){
|
||||
|
||||
//Nozzle cutout
|
||||
// Top
|
||||
translate([35/2,-0.001,15]) rotate([-90,0,0]) cylinder(r=8.13, h=3.7+0.5, $fn=120);
|
||||
// Groove
|
||||
translate([35/2,0,15]) rotate([-90,0,0]) cylinder(r=6.13, h=20, $fn=120);
|
||||
// Bottom
|
||||
translate([35/2,9.8,15]) rotate([-90,0,0]) cylinder(r=8.13, h=3.7, $fn=120);
|
||||
// Main body
|
||||
translate([35/2,13,15]) rotate([-90,0,0]) cylinder(r=11.53, h=33.001, $fn=80);
|
||||
|
||||
}
|
||||
|
||||
module extruder_nozzle_cooling(){
|
||||
|
||||
// Nozzle cooling airway
|
||||
difference(){
|
||||
union(){
|
||||
translate([31.001,43-15,15])rotate([0,90,0])cylinder(r2=14, r1=11.5, h=4, $fn=100);
|
||||
translate([-1,43-15-2.5,15])rotate([0,90,0])cylinder(r=11.5, h=40, $fn=80);
|
||||
translate([-1,43-15,15])rotate([0,90,0])cylinder(r=11.5, h=40, $fn=80);
|
||||
translate([-1,43-15+2.5,15])rotate([0,90,0])cylinder(r=11.5, h=40, $fn=80);
|
||||
}
|
||||
translate([-10,40,0])cube([10,12,14]);
|
||||
translate([-9,40,8])cube([10,10,4]);
|
||||
}
|
||||
|
||||
// Fan screws
|
||||
translate([35.001,40,3])rotate([0,-90,0])cylinder(r=1.5, h=8, $fn=20);
|
||||
translate([35.001,40-24,3])rotate([0,-90,0])cylinder(r=1.35, h=8, $fn=20);
|
||||
translate([35.001,40,30-3])rotate([0,-90,0])cylinder(r=1.5, h=8, $fn=20);
|
||||
translate([35.001,40-24,30-3])rotate([0,-90,0])cylinder(r=1.35, h=8, $fn=20);
|
||||
|
||||
}
|
||||
|
||||
//extruder_body();
|
||||
//extruder_mount_holes();
|
||||
//extruder_cover();
|
||||
|
||||
// PRUSA iteration3
|
||||
// Extruder main
|
||||
// GNU GPL v3
|
||||
// Josef Průša <iam@josefprusa.cz> and contributors
|
||||
// http://www.reprap.org/wiki/Prusa_Mendel
|
||||
// http://prusamendel.org
|
||||
|
||||
|
||||
module extruder_body(){
|
||||
union(){
|
||||
difference(){
|
||||
// Main
|
||||
union(){
|
||||
cube([35,44,15]);
|
||||
// P.I.N.D.A. Probe mount
|
||||
difference(){
|
||||
translate([-15.5,40,0])cube([21.5,5,14]);
|
||||
translate([9,41,-1]) rotate([0,0,45]) translate([0,-5,-0.1]) cube([10,12,20]);
|
||||
}
|
||||
translate([-7.5,15,0])cube([8,10.5,3]); // P.I.N.D.A. and Fan cable tray guide ;
|
||||
|
||||
//fan nice look
|
||||
translate([35,0,0]) cube([10,12,15]);
|
||||
}
|
||||
// Fan nice look edge cut
|
||||
translate([+52.6,-3.49,0]) rotate([0,0,-45-180]) translate([0,-5,-0.1]) cube([10,10,20]);
|
||||
|
||||
// P.I.N.D.A. Probe mount edge cut
|
||||
translate([-28.5,40,5]) rotate([0,30,0]) translate([0,-5,-0.1]) cube([10,12,20]); // Top
|
||||
translate([-33,40,-5]) rotate([0,60,0]) translate([0,-5,-0.1]) cube([12,12,20]); // Bottom
|
||||
|
||||
|
||||
// P.I.N.D.A. probe mount hole
|
||||
translate([35/2,0,6]){
|
||||
translate([-23,35,0])rotate([-90,0,0])cylinder(r=14/2, h=8, $fn=6);
|
||||
translate([-23,32.99,0])rotate([-90,0,0])cylinder(r=14/2, h=7, $fn=20);
|
||||
translate([-23,26,0])rotate([-90,0,0])cylinder(r=8.5/2, h=40, $fn=20);
|
||||
}
|
||||
|
||||
// P.I.N.D.A. and Fan cable tray cut
|
||||
translate([-4.5,20,-1]) cube([4.499,3.5+5,5]);
|
||||
// P.I.N.D.A. and Fan cable tray edge cut
|
||||
translate([-10,22,-1])rotate([0,0,45]) cube([10,5,10]);
|
||||
translate([-13,16.5,-1])rotate([0,0,-45]) cube([10,5,10]);
|
||||
|
||||
extruder_nozzle_cut();
|
||||
// larger groove for easy entry
|
||||
translate([35/2,0,15]) rotate([-90,0,0]) cylinder(r=7.13, h=20, $fn=120);
|
||||
|
||||
// Extruder cables path
|
||||
translate([33+4,10,-1]) cylinder(r=2, h=17,$fn=30);
|
||||
translate([33+4,12,9]) cube([4,4,20], center=true);
|
||||
|
||||
extruder_nozzle_cooling();
|
||||
|
||||
}
|
||||
|
||||
// Cooling grill
|
||||
difference(){
|
||||
union(){
|
||||
// Fins up
|
||||
//translate([0,37,0]) rotate([0,0,25]) cube([6,1.4,15]);
|
||||
translate([0,32,0]) rotate([0,0,25]) cube([6,1.4,15]);
|
||||
//translate([0,27,0]) rotate([0,0,25]) cube([6,1.4,15]);
|
||||
translate([0,22,0]) rotate([0,0,25]) cube([6,1.4,15]);
|
||||
//translate([0,17,0]) rotate([0,0,25]) cube([6,1.4,15]);
|
||||
|
||||
// Structural support
|
||||
translate([0,13,11]) rotate([0,0,0]) cube([4,30,1]);
|
||||
//translate([0,13,14.5]) rotate([0,0,0]) cube([4,30,0.5]);
|
||||
}
|
||||
// Trim
|
||||
translate([-35,0,0])cube([35,43,15]);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
mirror([1,0,0]){
|
||||
// Filament visualisation
|
||||
%translate([-35/2,-50,15])rotate([-90,0,0])cylinder(r=1.75/2, h=100, $fn=20);
|
||||
|
||||
// Motor visualisation
|
||||
translate([-42,-42,-1]) %cube([42,42,1]);
|
||||
translate([-21,-21,0])%cylinder(r=2.5, h=20, $fn=30);
|
||||
translate([-21,-21,8])%cylinder(r=4, h=13, $fn=30);
|
||||
|
||||
// MOTOR
|
||||
difference(){
|
||||
union(){
|
||||
// base
|
||||
difference(){
|
||||
translate([-42,-42,0]) cube([42,42,30]);
|
||||
//main cut
|
||||
translate([-21,-19.5-10-3,-1]) cube([42,23,32]);
|
||||
translate([-15,-49.5,-1]) cube([42,23,32]);
|
||||
translate([-51,-33,-1]) rotate([0,65,0]) cube([10,25,10]);
|
||||
translate([-35/2+3+1.8+0.5,-41,2+3+2.5])cube([42,42,32]);
|
||||
//base round cutout
|
||||
translate([-21,-21,-2]) cylinder(r=11.5, h=33, $fn=200);
|
||||
|
||||
//filament hole
|
||||
translate([-35/2,-42,15])rotate([-90,0,0])cylinder(r=2.5/2, h=20, $fn=20);
|
||||
translate([-35/2,-42,15])rotate([-90,0,0])cylinder(r2=2.2/2,r1=3.6/2, h=1.5, $fn=20);
|
||||
}
|
||||
|
||||
//filament guide
|
||||
translate([-35/2-3,-19,15-4])cube([6,10,6.5]);
|
||||
difference(){
|
||||
union(){
|
||||
translate([-35/2-3,-8.4+2+1.2,0.4]) rotate([45,0,0]) cube([6,15,15]);
|
||||
translate([-35/2-3,-8.4+2+1.2,0.4+6.5]) rotate([45,0,0]) cube([6,15,15]);
|
||||
}
|
||||
translate([-35/2-4,-1,2]) cube([8,15,25]);
|
||||
|
||||
}
|
||||
}
|
||||
// Filament ptfe guide cutout
|
||||
|
||||
// PTFE secure ring slot
|
||||
translate([-35/2,-3.99,15])rotate([-90,0,0]) cylinder(r=7.5/2, h=5, $fn=50); // Bottom hole
|
||||
translate([-35/2,-3.99,21])rotate([-90,0,0]) cylinder(r=7.5/2, h=5, $fn=50); // Top hole
|
||||
translate([-35/2 - 7.5/2,-3.99,21])rotate([-90,0,0])cube([7.5,6,8]); // Slot cut
|
||||
|
||||
// PTFE tube slot
|
||||
translate([-35/2,-23,15])rotate([-90,0,0]) cylinder(r=4.3/2, h=25, $fn=50); // Main hole
|
||||
translate([-35/2,-9,15])rotate([-60,0,0]) rotate([0,0,10])cylinder(r=4.3/2, h=25, $fn=50); // Top hole
|
||||
// Slot cut
|
||||
difference(){
|
||||
translate([-35/2,-8,14])rotate([-60,0,0]) rotate([0,0,30])cylinder(r=4.85/2, h=25, $fn=6);
|
||||
translate([-22,-20,5])cube([10,50,10]);
|
||||
}
|
||||
|
||||
// drive pulley cutout
|
||||
translate([-21,-21,8])cylinder(r=4, h=13, $fn=80);
|
||||
// idler bearing cutout
|
||||
translate([-21+13,-21,8])cylinder(r=8.5, h=13, $fn=80);
|
||||
|
||||
translate([-21,-27,8])cube([10,10,13]); // Trim
|
||||
|
||||
|
||||
// filament clean hole
|
||||
translate([-43,-21,15])rotate([90,0,90])cylinder(r=20/2, h=20, $fn=6);
|
||||
translate([-43,-21,15])rotate([90,0,90])cylinder(r1=27/2,r2=20/2, h=5, $fn=6);
|
||||
|
||||
// round corners
|
||||
translate([-2.5,-42+2.5,0]) rotate([0,0,-45]) translate([0,-5,-0.1]) cube([10,10,10]);
|
||||
translate([-42+2.5,-42+2.5,0]) rotate([0,0,-45-90]) translate([0,-5,-0.1]) cube([10,10,33]);
|
||||
|
||||
|
||||
|
||||
// idler nut traps Bottom
|
||||
translate([-23,-53.5,7.5-(5.5/2)-0.1])cube([2.5,20,5.7]); // Nut trap
|
||||
translate([-32,-36.5-2.2,7.5-1.5])cube([40,4,3]); // Screw hole
|
||||
|
||||
// idler nut traps Top
|
||||
translate([-23,-53.5,30-7.5-(5.5/2)-0.1])cube([2.5,20,5.7]); // Nut trap
|
||||
translate([-32,-36.5-2.2,30-7.5-1.5])cube([40,4,3]); // Screw hole
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module extruder_cover(){
|
||||
union(){
|
||||
difference(){
|
||||
// Main
|
||||
union(){
|
||||
translate([0,0,15]) cube([35,44,15]);
|
||||
|
||||
translate([34,42,23]) cube([1,18,7]);
|
||||
translate([34,56,23]) cube([4,5,7]);
|
||||
//fan nice look
|
||||
translate([35,0,15]) cube([10,12,15]);
|
||||
}
|
||||
// Fan nice look edge cut
|
||||
translate([+52.6,-3.49,0]) rotate([0,0,-45-180]) translate([0,-5,-0.1]) cube([10,10,32]);
|
||||
|
||||
translate([38,58.3,20]) rotate([0,0,45]) cube([5,5,15]);
|
||||
|
||||
extruder_nozzle_cut();
|
||||
|
||||
|
||||
// Extruder cables path
|
||||
translate([33+4,10,-1]) cylinder(r=2, h=32,$fn=30);
|
||||
translate([33+4,12,22]) cube([4,4,20], center=true);
|
||||
|
||||
extruder_nozzle_cooling();
|
||||
|
||||
}
|
||||
|
||||
// 5015 print fan mount pillar
|
||||
translate([6,33,27])rotate([0,0,67]) cube([8,24,3]); // Connecting cube
|
||||
translate([35/2+12-42.75,6.5+38.5,25])cylinder(r=5.8, h=5, $fn=6); // Hexagon at the end
|
||||
|
||||
// Print fan nozzle mount - right
|
||||
translate([5,61-5,24])cylinder(r=7.5/2, h=6, $fn=6);
|
||||
|
||||
|
||||
// Print colling airway
|
||||
translate([8,44,28])rotate([0,0,0]) cube([27,9,2]);
|
||||
difference(){
|
||||
translate([8,51.6,28.5])rotate([-45,0,0]) cube([27,7,2]);
|
||||
translate([7,57,20])rotate([0,0,0]) cube([29,7,12]);
|
||||
translate([7,53,22])rotate([0,0,0]) cube([29,7,2]);
|
||||
}
|
||||
|
||||
translate([34,44,24])rotate([0,0,0]) cube([1,13,6]);
|
||||
translate([8-5,44,24])rotate([0,0,0]) cube([1+5,13,6]);
|
||||
|
||||
|
||||
// Cooling grill
|
||||
difference(){
|
||||
union(){
|
||||
// Fins up
|
||||
//translate([0,37,0]) rotate([0,0,25]) cube([6,1.4,15]);
|
||||
translate([0,32,15]) rotate([0,0,25]) cube([6,1.4,15]);
|
||||
//translate([0,27,0]) rotate([0,0,25]) cube([6,1.4,15]);
|
||||
translate([0,22,15]) rotate([0,0,25]) cube([6,1.4,15]);
|
||||
//translate([0,17,0]) rotate([0,0,25]) cube([6,1.4,15]);
|
||||
|
||||
// Structural support
|
||||
translate([0,13,19]) rotate([0,0,0]) cube([4,30,1]);
|
||||
//translate([0,13,14.5]) rotate([0,0,0]) cube([4,30,0.5]);
|
||||
}
|
||||
// Trim
|
||||
translate([-35,0,0])cube([35,43,35]);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
module extruder_mount_holes(){
|
||||
|
||||
// Carriage mount right
|
||||
translate([35/2-12,6.5,-0.01])cylinder(r=1.75, h=5, $fn=30); // Bottom hole
|
||||
translate([35/2-12,6.5,-0.01])cylinder(r1=2.2, r2=1.75, h=0.5, $fn=30); // Bottom hole
|
||||
|
||||
translate([35/2-12,6.5,6.5+0.2])cylinder(r=1.75, h=5, $fn=30); // Middle hole
|
||||
translate([35/2-12,6.5,12.5+0.2])cylinder(r=1.75, h=15, $fn=30); // Top hole
|
||||
translate([35/2-12,6.5,27])cylinder(r=3.1, h=5, $fn=30); // Head cut
|
||||
// bridged hole no clean
|
||||
intersection(){
|
||||
translate([35/2-12,6.5,26]) cube([3.3, 6.2,4], center=true); // Screw hole
|
||||
translate([35/2-12,6.5,26.5]) cylinder(r=3.1, h=8, $fn=30); // Head cut
|
||||
}
|
||||
translate([35/2-12,6.5,27]) cube([3.5, 3.5, 2], center=true); // Screw hole
|
||||
// bridged hole no clean END
|
||||
|
||||
translate([35/2-12-6.5,6.25-2.85,10])rotate([0,0,0]) cube([9.5,6.2,2.5]); // Nut Trap top
|
||||
//translate([35/2-12-6.5,6.5-2.85,10])rotate([0,0,0]) cube([9.5,5.7,2.5]); // Nut Trap top old
|
||||
translate([35/2-12-1.7,6.25-2.85,10.5])rotate([0,0,0]) cube([3.4,6.2,2.5]);
|
||||
translate([35/2-12-1.7,6.5-2.85+1.1,11])rotate([0,0,0]) cube([3.4,3.4,2.5]);
|
||||
//translate([35/2-12,6.5,10])cylinder(r=3.3, h=2.5, $fn=6);
|
||||
|
||||
translate([35/2-12-6.5,6.25-2.85,4])rotate([0,0,0]) cube([9.5,6.2,2.5]); // Nut trap bottom
|
||||
//translate([35/2-12-6.5,6.5-2.85,4])rotate([0,0,0]) cube([9.5,5.7,2.5]); // Nut trap bottom old
|
||||
translate([35/2-12-1.7,6.25-2.85,4.5])rotate([0,0,0]) cube([3.4,6.2,2.5]);
|
||||
translate([35/2-12-1.7,6.5-2.85+1.1,5])rotate([0,0,0]) cube([3.4,3.4,2.5]);
|
||||
//translate([35/2-12,6.5,4])cylinder(r=3.3, h=2.5, $fn=6);
|
||||
|
||||
translate([35/2-12-6.5+5,6.5-2.85-2.5,3])rotate([0,0,0]) cube([5,0.4,10.5]); // Nut Trap reinforcement
|
||||
|
||||
translate([35/2-12-6.5+5,6.5-2.85+2.5+5,3])rotate([0,0,0]) cube([5,0.4,10.5]); // Nut Trap reinforcement
|
||||
|
||||
|
||||
// Carriage mount left
|
||||
translate([35/2+12+11,6.5-2,6.2])cylinder(r=1.7, h=20.8-0.2, $fn=30); // Screw hole
|
||||
translate([35/2+12+11,6.5-2,-0.01])rotate([0,0,-15])cylinder(r=3.2, h=6, $fn=6); // Nut trap
|
||||
|
||||
intersection(){
|
||||
translate([35/2+12+11,6.5-2,5]) cube([3.4, 6.2,3], center=true); // Screw hole
|
||||
translate([35/2+12+11,6.5-2,-0.01])rotate([0,0,-15])cylinder(r=3.2, h=8, $fn=6); // Nut trap
|
||||
}
|
||||
translate([35/2+12+11,6.5-2,5.5]) cube([3.4, 3.4,3], center=true); // Screw hole
|
||||
|
||||
translate([35/2+12+11,6.5-2,-0.01])rotate([0,0,-15])cylinder(r2=3.2, r1=4, h=3, $fn=6); // Nut trap
|
||||
translate([35/2+12+11,6.5-2,27])cylinder(r=3.1, h=5, $fn=30); // Head cut
|
||||
// bridged hole no clean
|
||||
intersection(){
|
||||
translate([35/2+12+11,6.5-2,26]) cube([3.3, 6.2,4], center=true); // Screw hole
|
||||
translate([35/2+12+11,6.5-2,26.5]) cylinder(r=3.1, h=8, $fn=30); // Head cut
|
||||
}
|
||||
translate([35/2+12+11,6.5-2,27]) cube([3.5, 3.5,2], center=true); // Screw hole
|
||||
// bridged hole no clean END
|
||||
|
||||
// Fan nozzle mount hole
|
||||
translate([5,61-5,20])cylinder(r=3/2, h=12, $fn=30);
|
||||
|
||||
// 5015 print fan top left mount hole
|
||||
translate([35/2+12,6.5,-0.01])cylinder(r=1.75, h=35, $fn=30); // Screw cut
|
||||
translate([35/2+12,6.5,11]) rotate([0,0,30])cylinder(r=3.2, h=17.01, $fn=6); // Nut Trap
|
||||
translate([35/2+12,6.5,14]) rotate([0,0,30])cylinder(r=3.5, h=11.01, $fn=6); // Nut easy entry cut
|
||||
|
||||
// 5015 print fan bottom right mount hole
|
||||
translate([35/2+12-42.75,6.5+38.5,15])cylinder(r=1.75, h=20, $fn=30); // Screw cut
|
||||
translate([35/2+12-42.75,6.5+38.5,15]) cylinder(r=3.4, h=13.01, $fn=6); // Nut Trap
|
||||
|
||||
|
||||
// Motor mount holes
|
||||
translate([21,-21,0]){
|
||||
|
||||
// Top right
|
||||
translate([-15.5,-15.5,0]){
|
||||
translate([0,0,4]) cylinder(r=1.75, h=50, $fn=30); // Screw hole
|
||||
intersection(){
|
||||
translate([0,0,2]) cube([3.3, 6.2,4], center=true); // Screw hole
|
||||
translate([0,0,-1]) cylinder(r=3.1, h=8, $fn=30); // Head cut
|
||||
}
|
||||
translate([0,0,2]) cube([3.5, 3.5,5], center=true); // Screw hole
|
||||
translate([0,0,-1]) cylinder(r=3.1, h=4.5, $fn=30); // Head cut
|
||||
}
|
||||
|
||||
// Bottom right
|
||||
translate([-15.5,15.5,0]){
|
||||
translate([0,0,4]) cylinder(r=1.75, h=50, $fn=30); // Screw hole
|
||||
intersection(){
|
||||
translate([0,0,2]) cube([3.3, 6.2,4], center=true); // Screw hole
|
||||
translate([0,0,-1]) cylinder(r=3.1, h=8, $fn=30); // Head cut
|
||||
}
|
||||
translate([0,0,2]) cube([3.5, 3.5,5], center=true); // Screw hole
|
||||
translate([0,0,-1]) cylinder(r=3.1, h=4.5, $fn=30); // Head cut
|
||||
}
|
||||
// Top left
|
||||
translate([15.5,-15.5,0]){
|
||||
translate([0,0,4]) cylinder(r=1.75, h=50, $fn=30); // Screw hole
|
||||
intersection(){
|
||||
translate([0,0,2]) cube([3.3, 6.2,4], center=true); // Screw hole
|
||||
translate([0,0,-1]) cylinder(r=3.1, h=8, $fn=30); // Head cut
|
||||
}
|
||||
translate([0,0,2]) cube([3.5, 3.5,5], center=true); // Screw hole
|
||||
translate([0,0,-1]) cylinder(r=3.1, h=4.5, $fn=30); // Head cut
|
||||
}
|
||||
|
||||
// Bottom left
|
||||
translate([15.5,15.5,0]){
|
||||
translate([0,0,4]) cylinder(r=1.75, h=50, $fn=30); // Screw hole
|
||||
intersection(){
|
||||
translate([0,0,2]) cube([3.3, 6.2,4], center=true); // Screw hole
|
||||
translate([0,0,-1]) cylinder(r=3.1, h=8, $fn=30); // Head cut
|
||||
}
|
||||
translate([0,0,2]) cube([3.5, 3.5,5], center=true); // Screw hole
|
||||
translate([0,0,-1]) cylinder(r=3.1, h=4.5, $fn=30); // Head cut
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//selective infill spikes EXT COVER
|
||||
rotate([90,0,90]) translate ([40,23,33])linear_extrude(height = 0.2) polygon( points=[[3,-7],[1.5,-2],[-1,2],[1,2],[3,6]] );
|
||||
rotate([90,0,90]) translate ([40,23,31])linear_extrude(height = 0.2) polygon( points=[[3,-7],[1.5,-2],[-1,2],[1,2],[3,6]] );
|
||||
rotate([90,0,90]) translate ([40,23,4])linear_extrude(height = 0.2) polygon( points=[[3,-7],[1.5,-2],[-1,2],[1,2],[3,6]] );
|
||||
rotate([90,0,90]) translate ([40,23,2])linear_extrude(height = 0.2) polygon( points=[[3,-7],[1.5,-2],[-1,2],[1,2],[3,6]] );
|
||||
|
||||
//selective infill spikes EXT BODY
|
||||
mirror([0,0,1]) rotate([90,0,90]) translate ([40,-7,34])linear_extrude(height = 0.2) polygon( points=[[3,-7],[1.5,-2],[-1,2],[1,2],[3,6]] );
|
||||
mirror([0,0,1]) rotate([90,0,90]) translate ([40,-7,32])linear_extrude(height = 0.2) polygon( points=[[3,-7],[1.5,-2],[-1,2],[1,2],[3,6]] );
|
||||
mirror([0,0,1]) rotate([90,0,90]) translate ([40,-7,30])linear_extrude(height = 0.2) polygon( points=[[3,-7],[1.5,-2],[-1,2],[1,2],[3,6]] );
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
module extruder_nozzle_cut(){
|
||||
|
||||
//Nozzle cutout
|
||||
// Top
|
||||
translate([35/2,-0.001,15]) rotate([-90,0,0]) cylinder(r=8.13, h=3.7+0.5, $fn=120);
|
||||
// Groove
|
||||
translate([35/2,0,15]) rotate([-90,0,0]) cylinder(r=6.13, h=20, $fn=120);
|
||||
// Bottom
|
||||
translate([35/2,9.8,15]) rotate([-90,0,0]) cylinder(r=8.13, h=3.7, $fn=120);
|
||||
// Main body
|
||||
translate([35/2,13,15]) rotate([-90,0,0]) cylinder(r=11.53, h=33.001, $fn=80);
|
||||
|
||||
}
|
||||
|
||||
module extruder_nozzle_cooling(){
|
||||
|
||||
// Nozzle cooling airway
|
||||
difference(){
|
||||
union(){
|
||||
translate([31.001,43-15,15])rotate([0,90,0])cylinder(r2=14, r1=11.5, h=4, $fn=100);
|
||||
translate([-1,43-15-2.5,15])rotate([0,90,0])cylinder(r=11.5, h=40, $fn=80);
|
||||
translate([-1,43-15,15])rotate([0,90,0])cylinder(r=11.5, h=40, $fn=80);
|
||||
translate([-1,43-15+2.5,15])rotate([0,90,0])cylinder(r=11.5, h=40, $fn=80);
|
||||
}
|
||||
translate([-10,40,0])cube([10,12,14]);
|
||||
translate([-9,40,8])cube([10,10,4]);
|
||||
}
|
||||
|
||||
// Fan screws
|
||||
translate([35.001,40,3])rotate([0,-90,0])cylinder(r=1.5, h=8, $fn=20);
|
||||
translate([35.001,40-24,3])rotate([0,-90,0])cylinder(r=1.35, h=8, $fn=20);
|
||||
translate([35.001,40,30-3])rotate([0,-90,0])cylinder(r=1.5, h=8, $fn=20);
|
||||
translate([35.001,40-24,30-3])rotate([0,-90,0])cylinder(r=1.35, h=8, $fn=20);
|
||||
|
||||
}
|
||||
|
||||
extruder_body();
|
||||
extruder_mount_holes();
|
||||
extruder_cover();
|
||||
|
||||
|
|
|
|||
|
|
@ -1,67 +1,76 @@
|
|||
module fan_nozzle(){
|
||||
|
||||
difference(){
|
||||
union(){
|
||||
cube([32,10,17]); // Main cube
|
||||
translate([30,5,0])cylinder(r=5.8,h = 17, $fn=6);
|
||||
translate([-3,0,-6]) cube([3,10,23]);
|
||||
//#translate([-2,5,0])cylinder(r=5.8,h = 17, $fn=6);
|
||||
}
|
||||
// Mounting screw
|
||||
translate([30,5,-10])cylinder(r=3.2/2,h = 24.5-0.2, $fn=15); // Screw cut
|
||||
translate([30,5,17-3.5])cylinder(r=3.1,h = 20, $fn=15); // head cut
|
||||
|
||||
//#translate([-2,5,-10])cylinder(r=3.2/2,h = 24.5-0.2, $fn=15); // Screw cut
|
||||
//#translate([-2,5,17-3.5])cylinder(r=3.1,h = 20, $fn=15); // head cut
|
||||
|
||||
// Fan entry hole
|
||||
translate([1,10-1.5,-1])cube([20,3,16.5]);
|
||||
translate([1,10-1.5,-1-5])cube([18,3,16.5]);
|
||||
|
||||
// Airway cutout
|
||||
difference(){
|
||||
translate([1,1,-1])cube([25,8,16.5]);
|
||||
translate([0,0,10])rotate([45,0,0])cube([30,8,16.5]);
|
||||
translate([-1,-10,-1])rotate([0,0,45])cube([10,8,30]);
|
||||
translate([20,0,16])rotate([0,20,0])cube([10,20,10]);
|
||||
}
|
||||
translate([2,-1,-4.5])cube([24,3,5]);
|
||||
//#translate([-2,-1,-2])rotate([0,45,0])cube([5,10,5]);
|
||||
translate([22,-1,-2])rotate([0,45,0])cube([5,10,5]);
|
||||
|
||||
}
|
||||
|
||||
// Air director
|
||||
translate([18,0,7])rotate([0,0,30])cube([1,9,10]);
|
||||
|
||||
|
||||
}
|
||||
|
||||
module fancy_corners(){
|
||||
|
||||
translate([-10,-10.5,13])rotate([-20,0,0])cube([50,10,15]);
|
||||
translate([-16,-10.5,17.5])rotate([0,45,0])cube([10,30,15]);
|
||||
|
||||
translate([46.5,-10.5,15])rotate([0,-45,30])cube([10,30,15]);
|
||||
translate([28.62,-10.5,15])rotate([0,-45,-30])cube([10,30,15]);
|
||||
|
||||
translate([-5,-1,-7])rotate([0,0,0]) cube([10,6,7]);
|
||||
translate([-0.5,-1,-7])rotate([0,0,0]) cube([1,15,7]);
|
||||
translate([-5,4,-11])rotate([45,0,0]) cube([10,5,5]);
|
||||
|
||||
//left cut
|
||||
translate([-6.5,-8,-5])rotate([0,0,45])cube([10,10,45]);
|
||||
translate([-7,-5,12])rotate([0,-45,0])cube([10,30,15]);
|
||||
|
||||
translate([-7,5,-10])rotate([0,0,45])cube([10,10,35]);
|
||||
|
||||
}
|
||||
|
||||
module fan_n(){
|
||||
difference(){
|
||||
fan_nozzle();
|
||||
fancy_corners();
|
||||
translate([2,3.5,16.5])linear_extrude(height = 0.6) {text("! HOT !", size = 5, font = "Helvetica Neue:style=Bold");}
|
||||
}
|
||||
}
|
||||
fan_n();
|
||||
// PRUSA iteration3
|
||||
// Fan nozzle
|
||||
// GNU GPL v3
|
||||
// Josef Průša <iam@josefprusa.cz> and contributors
|
||||
// http://www.reprap.org/wiki/Prusa_Mendel
|
||||
// http://prusamendel.org
|
||||
|
||||
module fan_nozzle(){
|
||||
|
||||
difference(){
|
||||
union(){
|
||||
cube([32,10,17]); // Main cube
|
||||
translate([30,5,0])cylinder(r=5.8,h = 17, $fn=6);
|
||||
translate([-3,0,-6]) cube([3,10,23]);
|
||||
}
|
||||
|
||||
// Mounting screw
|
||||
translate([30,5,-10])cylinder(r=3.2/2,h = 24.5-0.2, $fn=15); // Screw cut
|
||||
intersection(){
|
||||
translate([30,5,9])cylinder(r=3.1,h = 25, $fn=15); // head cut
|
||||
translate([30,5,17-3.5]) cube([6.2,3.2,1], center=true);
|
||||
}
|
||||
translate([30,5,17-4]) cube([3.2,3.2,1], center=true);
|
||||
translate([30,5,17-3.5])cylinder(r=3.1,h = 20, $fn=15); // head cut
|
||||
|
||||
// Fan entry hole
|
||||
translate([1,10-1.5,-1])cube([20,3,16.5]);
|
||||
translate([1,10-1.5,-1-5])cube([18,3,16.5]);
|
||||
|
||||
// Airway cutout
|
||||
difference(){
|
||||
translate([1,1,-1])cube([25,8,16.5]);
|
||||
translate([0,0,10])rotate([45,0,0])cube([30,8,16.5]);
|
||||
translate([-1,-10,-1])rotate([0,0,45])cube([10,8,30]);
|
||||
translate([20,0,16])rotate([0,20,0])cube([10,20,10]);
|
||||
}
|
||||
|
||||
translate([2,-1,-4.5])cube([24,3,5]);
|
||||
translate([22,-1,-2])rotate([0,45,0])cube([5,10,5]);
|
||||
|
||||
}
|
||||
|
||||
// Air director
|
||||
translate([18,0,7])rotate([0,0,30])cube([1,9,10]);
|
||||
|
||||
|
||||
}
|
||||
|
||||
module fancy_corners(){
|
||||
|
||||
translate([-10,-10.5,13])rotate([-20,0,0])cube([50,10,15]);
|
||||
translate([-16,-10.5,17.5])rotate([0,45,0])cube([10,30,15]);
|
||||
|
||||
translate([46.5,-10.5,15])rotate([0,-45,30])cube([10,30,15]);
|
||||
translate([28.62,-10.5,15])rotate([0,-45,-30])cube([10,30,15]);
|
||||
|
||||
translate([-5,-1,-7])rotate([0,0,0]) cube([10,6,7]);
|
||||
translate([-0.5,-1,-7])rotate([0,0,0]) cube([1,15,7]);
|
||||
translate([-5,4,-11])rotate([45,0,0]) cube([10,5,5]);
|
||||
|
||||
//left cut
|
||||
translate([-6.5,-8,-5])rotate([0,0,45])cube([10,10,45]);
|
||||
translate([-7,-5,12])rotate([0,-45,0])cube([10,30,15]);
|
||||
|
||||
translate([-7,5,-10])rotate([0,0,45])cube([10,10,35]);
|
||||
|
||||
}
|
||||
|
||||
module fan_n(){
|
||||
difference(){
|
||||
fan_nozzle();
|
||||
fancy_corners();
|
||||
translate([2,3.5,16.5])linear_extrude(height = 0.6) {text("! HOT !", size = 5, font = "Helvetica Neue:style=Bold");}
|
||||
}
|
||||
}
|
||||
fan_n();
|
||||
|
|
|
|||
|
|
@ -1,3 +1,11 @@
|
|||
// PRUSA iteration3
|
||||
// Heatbed cable cover
|
||||
// GNU GPL v3
|
||||
// Josef Průša <iam@josefprusa.cz> and contributors
|
||||
// http://www.reprap.org/wiki/Prusa_Mendel
|
||||
// http://prusamendel.org
|
||||
|
||||
|
||||
module cover()
|
||||
{
|
||||
translate([ -17.5, 0, 0 ]) cube([ 35, 21, 8 ]); // cover
|
||||
|
|
@ -39,12 +47,12 @@ module inside_cut(){
|
|||
|
||||
module filament_holder(){
|
||||
difference(){
|
||||
translate([ -2.5,15, 2 ]) rotate([0,0,0]) cube( [5,7,6 ] ); // body
|
||||
#translate([ -3.5,15, 2 ]) rotate([0,0,0]) cube( [7,7,6 ] ); // body ; previous translate([ -2.5,15, 2 ]) cube( [5,7,6 ] );
|
||||
translate( [ 0 , 24 , 4.5 ] ) rotate( [90,0,0] ) cylinder( h = 10, r = 1.4, $fn=12); // filament
|
||||
translate( [ 0 , 22.1 , 4.5 ] ) rotate( [90,0,0] ) cylinder( h = 1.5, r1 = 1.8, r2=1.4, $fn=12); // filament
|
||||
|
||||
translate([ -5,15, 1 ]) rotate([0,45,0]) cube( [3,15,3 ] ); // corners
|
||||
translate([ 1,15, 1 ]) rotate([0,45,0]) cube( [3,15,3 ] ); // corners
|
||||
#translate([ -6,15, 2 ]) rotate([0,45,0]) cube( [4,15,3 ] ); // corners ; previous ([ -5,15, 1 ]) cube( [3,15,3 ] )
|
||||
#translate([ 1,15, 1 ]) rotate([0,45,0]) cube( [3,15,4 ] ); // corners ; previous cube( [3,15,3 ] )
|
||||
}
|
||||
}
|
||||
module m3_screw(){
|
||||
|
|
@ -56,7 +64,8 @@ module inside_cut(){
|
|||
|
||||
module nut_trap(){
|
||||
translate( [ 0 , 7.5 , 4.5 ] ) rotate( [0,0,90] ) cylinder( h = 2.5, r = 4.6, $fn=6); // M3 HEAD
|
||||
translate( [ 0 , 7.5 , 4 ] ) rotate( [0,0,0] ) cylinder( h = 1, r = 3, $fn=30);
|
||||
translate( [ 0 , 7.5 , 4 ] ) rotate( [0,0,0] ) cylinder( h = 1, r = 3, $fn=30);
|
||||
|
||||
}
|
||||
|
||||
difference(){
|
||||
|
|
@ -69,6 +78,8 @@ module inside_cut(){
|
|||
nut_trap();
|
||||
}
|
||||
m3_screw();
|
||||
translate( [ 0 , 7.5 , 6.2 ] ) rotate( [0,0,0] ) cube( [5.7,3,1], center=true);
|
||||
translate( [ 0 , 7.5 , 5.7 ] ) rotate( [0,0,0] ) cube( [3,3,1], center=true);
|
||||
}
|
||||
|
||||
filament_holder();
|
||||
|
|
|
|||
|
|
@ -1,13 +1,20 @@
|
|||
module dxf_holder(){
|
||||
linear_extrude(height = 8, center = true, convexity = 5)
|
||||
import (file = "spool holdahMK3.dxf", layer = "0");
|
||||
}
|
||||
module spool_holder_left(){
|
||||
dxf_holder();
|
||||
translate([51.53-3.5,123-5-3.5,3.9])cylinder(h = 10, r=8);
|
||||
}
|
||||
module spool_holder_right(){
|
||||
mirror([1,0,0])spool_holder_left();
|
||||
}
|
||||
translate([8,100,0])rotate([0,0,139])spool_holder_right();
|
||||
spool_holder_left();
|
||||
// PRUSA iteration3
|
||||
// Spool holder
|
||||
// GNU GPL v3
|
||||
// Josef Průša <iam@josefprusa.cz> and contributors
|
||||
// http://www.reprap.org/wiki/Prusa_Mendel
|
||||
// http://prusamendel.org
|
||||
|
||||
module dxf_holder(){
|
||||
linear_extrude(height = 8, center = true, convexity = 5)
|
||||
import (file = "spool holdahMK3.dxf", layer = "0");
|
||||
}
|
||||
module spool_holder_left(){
|
||||
dxf_holder();
|
||||
translate([51.53-3.5,123-5-3.5,3.9])cylinder(h = 10, r=8);
|
||||
}
|
||||
module spool_holder_right(){
|
||||
mirror([1,0,0])spool_holder_left();
|
||||
}
|
||||
translate([8,100,0])rotate([0,0,139])spool_holder_right();
|
||||
spool_holder_left();
|
||||
|
|
|
|||
|
|
@ -9,66 +9,61 @@ use <bearing.scad>
|
|||
use <extruder-body.scad>
|
||||
|
||||
|
||||
//translate([-34,31,0]) rotate([0,180,180]) ext_body();
|
||||
|
||||
module x_carriage_base(){
|
||||
// Small bearing holder
|
||||
translate([-33/2,0,0]) rotate([0,0,90]) horizontal_bearing_base(1);
|
||||
// Long bearing holder
|
||||
translate([-33/2,45,0]) rotate([0,0,90]) horizontal_bearing_base(2);
|
||||
// Base plate
|
||||
translate([-33,-12,0]) cube([33,68.5,7]);
|
||||
// upper motor srew block
|
||||
translate([-19,56.8,0]) rotate([0,0,0]) cube([28.5,16.2,12]);
|
||||
// Small bearing holder
|
||||
translate([-33/2,0,0]) rotate([0,0,90]) horizontal_bearing_base(1);
|
||||
// Long bearing holder
|
||||
translate([-33/2,45,0]) rotate([0,0,90]) horizontal_bearing_base(2);
|
||||
// Base plate
|
||||
translate([-33,-12,0]) cube([33,68.5,7]);
|
||||
// upper motor screw block
|
||||
translate([-19,56.8,0]) rotate([0,0,0]) cube([28.5,16.2,12]);
|
||||
|
||||
// Extruder cable tray
|
||||
difference(){
|
||||
union(){
|
||||
translate([-33/2 - 2.5-11.5,-17-3,3])cube([11.5,14,22]);
|
||||
translate([-33/2 + 2.5,-17-3,3])cube([11.5,14,22]);
|
||||
translate([-33/2 + 2.5,-17,3])cube([3.5,9.75,22]);
|
||||
translate([-33/2 -2.5,-9,3])cube([5,2,22]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
translate([-33/2 +7,-22,-8]) rotate([0,-25,0]) cube([5,10,22]);
|
||||
translate([-33/2 -11.5,-22,-6.5]) rotate([0,25,0]) cube([5,10,22]);
|
||||
// hotend cables guide
|
||||
difference(){
|
||||
union(){
|
||||
//body
|
||||
translate([-33/2 - 2.5-11.5,-17-3,3])cube([11.5,14,22]);
|
||||
translate([-33/2 + 2.5,-17-3,3])cube([11.5,14,22]);
|
||||
translate([-33/2 + 2.5,-17,3])cube([3.5,9.75,22]);
|
||||
translate([-33/2 -2.5,-13,3])cube([5,7,22]);
|
||||
}
|
||||
// cable entry opening sides
|
||||
translate([-33/2 +7,-23,-8]) rotate([0,-25,0]) cube([5,10,22]);
|
||||
translate([-33/2 -11.5,-23,-6.5]) rotate([0,25,0]) cube([5,10,22]);
|
||||
|
||||
// corner cuts
|
||||
translate([-33/2 -21,-22,25]) rotate([0,45,0]) cube([8,20,8]);
|
||||
translate([-33/2 +10,-22,25]) rotate([0,45,0]) cube([8,20,8]);
|
||||
translate([-33/2 -15,-16.5,-8])rotate([30,0,0])cube([35,9.75,25]);
|
||||
translate([-33/2 -15,-8.2,10])rotate([-9,0,0])cube([35,9.75,25]);
|
||||
|
||||
translate([-33/2 -21,-22,25]) rotate([0,45,0]) cube([8,20,8]);
|
||||
translate([-33/2 +10,-22,25]) rotate([0,45,0]) cube([8,20,8]);
|
||||
//zip tie holes
|
||||
translate([-33/2 -4.5-1.3,-24,20])rotate([0,0,0])cube([2,20,4]);
|
||||
translate([-33/2 +2.5+1.3,-24,20])rotate([0,0,0])cube([2,20,4]);
|
||||
translate([-33/2 + 6.5-0.1,0,12]) rotate([0,90,0])cylinder(r = 11.6, h=4.2, $fn=50);
|
||||
translate([-33/2 -6.5 - 4.1,0,12]) rotate([0,90,0])cylinder(r = 11.6, h=4.2, $fn=50);
|
||||
|
||||
translate([-33/2 -15,-16.5,-8])rotate([30,0,0])cube([35,9.75,25]);
|
||||
|
||||
translate([-33/2 -15,-9,10])rotate([-20,0,0])cube([35,9.75,25]);
|
||||
|
||||
//zip tie holes
|
||||
translate([-33/2 -4.5-1.3,-24,20])rotate([0,0,0])cube([2,20,4]);
|
||||
translate([-33/2 +2.5+1.3,-24,20])rotate([0,0,0])cube([2,20,4]);
|
||||
|
||||
translate([-33/2 + 6.5-0.1,0,12]) rotate([0,90,0])cylinder(r = 11.6, h=4.2, $fn=50);
|
||||
|
||||
translate([-33/2 -6.5 - 4.1,0,12]) rotate([0,90,0])cylinder(r = 11.6, h=4.2, $fn=50);
|
||||
|
||||
//right cutout
|
||||
translate([-10,-30,0]) translate([0,-11.5,-1]) rotate([0,0,45]) translate([0,-15,0]) cube([30,30,34]);
|
||||
|
||||
//right cutout
|
||||
translate([-10,-30,0]) translate([0,-11.5,-1]) rotate([0,0,45]) translate([0,-15,0]) cube([30,30,34]);
|
||||
|
||||
}
|
||||
|
||||
// Belt holder base
|
||||
translate([-42.5,20,0]) cube([52,16,7]);
|
||||
|
||||
translate([-16.5-12,24.5,0])cylinder(r=4.5, h=14, $fn=25);
|
||||
translate([-16.5+12,24.5,0])cylinder(r=4.5, h=14, $fn=25);
|
||||
|
||||
translate([-16.5-12,24.5,14])cylinder(r1=4.5, r2=3.8, h=2, $fn=25);
|
||||
translate([-16.5+12,24.5,14])cylinder(r1=4.5, r2=3.8, h=2, $fn=25);
|
||||
// Belt holder base
|
||||
translate([-42.5,20,0]) cube([52,16,7]);
|
||||
|
||||
// Endstop trigger nipple
|
||||
difference(){
|
||||
union(){
|
||||
// belt holders
|
||||
translate([-16.5-12,24.5,0])cylinder(r=4.5, h=14, $fn=25);
|
||||
translate([-16.5+12,24.5,0])cylinder(r=4.5, h=14, $fn=25);
|
||||
translate([-16.5-12,24.5,14])cylinder(r1=4.5, r2=3.8, h=2, $fn=25);
|
||||
translate([-16.5+12,24.5,14])cylinder(r1=4.5, r2=3.8, h=2, $fn=25);
|
||||
|
||||
// Endstop trigger nipple
|
||||
difference(){
|
||||
union(){
|
||||
translate([-2.5,-16,0]) cube([12,5.8,12]);
|
||||
translate([-2.2,-12,0])cylinder(r=4.6, h=12, $fn=6);
|
||||
}
|
||||
|
|
@ -78,7 +73,7 @@ module x_carriage_base(){
|
|||
|
||||
}
|
||||
|
||||
// Belt Insert R
|
||||
// Belt Insert R
|
||||
difference(){
|
||||
union(){
|
||||
translate([2,27,0]) cube([10,6,15]);
|
||||
|
|
@ -91,77 +86,68 @@ module x_carriage_base(){
|
|||
// Belt Insert L
|
||||
difference(){
|
||||
union(){
|
||||
translate([-33,3,00]){scale([-1,1,1]){
|
||||
translate([0,27,0]) cube([12.5,3,15]);
|
||||
translate([2,27-7.5-2.3,0]) cube([12.5,7.5,15]);
|
||||
translate([-0.5,27,0]) cube([8,7,2]);
|
||||
}}
|
||||
|
||||
translate([-33,3,00]){
|
||||
scale([-1,1,1])
|
||||
{
|
||||
translate([0,27,0]) cube([12.5,3,15]);
|
||||
translate([2,27-7.5-2.3,0]) cube([12.5,7.5,15]);
|
||||
translate([-0.5,27,0]) cube([8,7,2]);
|
||||
}
|
||||
}
|
||||
}
|
||||
translate([-36.5,27.7,5.5]) rotate([0,0,-55]) cube([5,5.5,10]);
|
||||
}
|
||||
|
||||
translate([-36.5,27.7,5.5]) rotate([0,0,-55]) cube([5,5.5,10]);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
module x_carriage_holes(){
|
||||
// Small bearing holder holes cutter
|
||||
translate([-33/2,0,0]) rotate([0,0,90]) horizontal_bearing_holes(1);
|
||||
// Long bearing holder holes cutter
|
||||
translate([-33/2,45,0]) rotate([0,0,90]) horizontal_bearing_holes(2);
|
||||
// Small bearing holder holes cutter
|
||||
translate([-33/2,0,0]) rotate([0,0,90]) horizontal_bearing_holes(1);
|
||||
// Long bearing holder holes cutter
|
||||
translate([-33/2,45,0]) rotate([0,0,90]) horizontal_bearing_holes(2);
|
||||
|
||||
// Extruder mounting holes
|
||||
translate([-16.5+12,24.5,-1])cylinder(r=1.8, h=20, $fn=25);
|
||||
translate([-16.5+12,24.5,-0.1])cylinder(r1=2.1,r2=1.8, h=0.5, $fn=25);
|
||||
translate([-16.5+12,24.5,12])cylinder(r=5.8/2, h=20, $fn=25);
|
||||
translate([-16.5-12,24.5,-1])cylinder(r=1.8, h=20, $fn=25);
|
||||
translate([-16.5-12,24.5,-0.1])cylinder(r1=2.1,r2=1.8, h=0.5, $fn=25);
|
||||
translate([-16.5-12,24.5,12])cylinder(r=5.8/2, h=20, $fn=25);
|
||||
translate([-16.5+12,24.5,-1])cylinder(r=1.8, h=20, $fn=25);
|
||||
translate([-16.5+12,24.5,-0.1])cylinder(r1=2.1,r2=1.8, h=0.5, $fn=25);
|
||||
translate([-16.5+12,24.5,12])cylinder(r=5.8/2, h=20, $fn=25);
|
||||
translate([-16.5-12,24.5,-1])cylinder(r=1.8, h=20, $fn=25);
|
||||
translate([-16.5-12,24.5,-0.1])cylinder(r1=2.1,r2=1.8, h=0.5, $fn=25);
|
||||
translate([-16.5-12,24.5,12])cylinder(r=5.8/2, h=20, $fn=25);
|
||||
|
||||
// Carriage alignment
|
||||
// translate([-33,24.5-6-0.25,-0.01])cube([33,3.5,1.25]);
|
||||
|
||||
// Cables keepout
|
||||
translate([0,10+3,-2])cube([5,10,5]);
|
||||
// Cables keepout
|
||||
translate([0,10+3,-2])cube([5,10,5]);
|
||||
|
||||
// Carriage slimer
|
||||
// Carriage slimer
|
||||
translate([-55.5+3,19,-1])cube([10,40,30]);
|
||||
translate([+12.5-3,19,-1])cube([10,40,30]);
|
||||
|
||||
translate([+12.5-3.5-2,19,-1])rotate([0,90-65,0])cube([10,55,30]);
|
||||
translate([-55.5+6.7+2,19,-10])rotate([0,-90+65,0])cube([10,40,30]);
|
||||
|
||||
// Filament hole
|
||||
translate([-33/2,7,1]) rotate([-15,0,0])cylinder(r=1.52, h=40, $fn=10);
|
||||
|
||||
}
|
||||
|
||||
module x_carriage_fancy(){
|
||||
// Top right corner
|
||||
translate([11.5,8,0]) translate([0,45+11.5,-1]) rotate([0,0,45]) translate([0,-15,0]) cube([30,30,20]);
|
||||
// Belt Smooth insert
|
||||
translate([0,36.5,23.5]) rotate([45,0,0]) translate([0,-15,0]) cube([20,10,10]);
|
||||
translate([-52.9,36.5+3,23.5]) rotate([45,0,0]) translate([0,-15,0]) cube([20,10,10]);
|
||||
|
||||
// Bottom ĺeft corner
|
||||
translate([-34,2,0]) translate([2,-11.5,-1]) rotate([0,0,-145]) translate([0,-15,0]) cube([30,30,34]);
|
||||
// Top left corner
|
||||
translate([-33-13.5,-5,0]) translate([0,45+11.5,-1]) rotate([0,0,135]) translate([0,-15,0]) cube([30,30,20]);
|
||||
translate([-23,72,14]) rotate([0,45,0]) translate([0,-15,0]) cube([5,25,5]);
|
||||
translate([-23,84,21]) rotate([45,0,0]) translate([0,-15,0]) cube([45,5,5]);
|
||||
// Top right corner
|
||||
translate([11.5,8,0]) translate([0,45+11.5,-1]) rotate([0,0,45]) translate([0,-15,0]) cube([30,30,20]);
|
||||
// Belt Smooth insert
|
||||
translate([0,36.5,23.5]) rotate([45,0,0]) translate([0,-15,0]) cube([20,10,10]);
|
||||
translate([-52.9,36.5+3,23.5]) rotate([45,0,0]) translate([0,-15,0]) cube([20,10,10]);
|
||||
|
||||
// Bottom ĺeft corner
|
||||
translate([-34,2,0]) translate([2,-11.5,-1]) rotate([0,0,-145]) translate([0,-15,0]) cube([30,30,34]);
|
||||
// Top left corner
|
||||
translate([-33-13.5,-5,0]) translate([0,45+11.5,-1]) rotate([0,0,135]) translate([0,-15,0]) cube([30,30,20]);
|
||||
translate([-23,72,14]) rotate([0,45,0]) translate([0,-15,0]) cube([5,25,5]);
|
||||
translate([-23,84,21]) rotate([45,0,0]) translate([0,-15,0]) cube([45,5,5]);
|
||||
|
||||
translate([-8,64,5]) rotate([0,0,0]) cylinder(r=6, h=22, $fn=6);
|
||||
translate([-10,64,5]) rotate([0,0,0]) cylinder(r=6, h=22, $fn=6);
|
||||
|
||||
translate([-8,64,5]) rotate([0,0,0]) cylinder(r=6, h=22, $fn=6);
|
||||
translate([-10,64,5]) rotate([0,0,0]) cylinder(r=6, h=22, $fn=6);
|
||||
}
|
||||
|
||||
module cable_tray(){
|
||||
|
||||
//Left cable tray
|
||||
translate([-38.9,11,0]) cube([8,2,15]);
|
||||
translate([-38.9,11,0]) cube([8,2,15]);
|
||||
translate([-38.9,5.5,0]) cube([8,2,15]);
|
||||
|
||||
//Right cable tray
|
||||
|
|
@ -176,128 +162,118 @@ module cable_tray(){
|
|||
translate([0,3.5,6])rotate([-60,0,0]) cube([5.5,12,7]);
|
||||
translate([0,10+3,-1])cube([5.5,11,6]);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
module upper_ziptie_holder()
|
||||
module final_cutout()
|
||||
{
|
||||
|
||||
// body
|
||||
difference(){
|
||||
translate([-19,18,7]) cube([5,15,9]);
|
||||
translate([-20,29,10]) rotate([45,0,0])cube([10,10,10]);
|
||||
translate([-20,29,10]) cube([7,5,20]);
|
||||
}
|
||||
|
||||
difference(){
|
||||
union(){
|
||||
difference(){
|
||||
translate([-23,17.5,7]) cube([13,5,17]);
|
||||
translate([-23,19,6]) rotate([0,0,45]) cube([5,5,19]);
|
||||
translate([-10,19,6]) rotate([0,0,45]) cube([5,5,19]);
|
||||
translate([-15,21,17])rotate([0,0,0])cube([5,2,5]);
|
||||
translate([-23,21,17])rotate([0,0,0])cube([5,2,5]);
|
||||
}
|
||||
difference(){
|
||||
translate([-23,11.5,15]) cube([13,7,9]);
|
||||
#translate([-30,15.5,14.8]) rotate([0,90,0]) cylinder(r=2, h=22, $fn=30);
|
||||
translate([-24,11,18]) rotate([45,0,0]) cube([20,10,10]);
|
||||
}
|
||||
}
|
||||
|
||||
//zip ties
|
||||
translate([-20,5,17])rotate([0,0,0])cube([2,20,5]);
|
||||
translate([-15,5,17])rotate([0,0,0])cube([2,20,5]);
|
||||
|
||||
// corners
|
||||
translate([-28,12,25]) rotate([0,45,0]) cube([5,15,5]);
|
||||
translate([-12,12,25]) rotate([0,45,0]) cube([5,15,5]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
module final_cutout(){
|
||||
|
||||
translate([-19,-16.4,13]) rotate([-45,0,0]) cube([5,5,5]);
|
||||
translate([-43,0,16]) rotate([0,45,0]) cube([5,15,5]);
|
||||
translate([5,0,16]) rotate([0,45,0]) cube([5,15,5]);
|
||||
|
||||
translate([-4.5,0,18.5]) rotate([0,45,0]) cube([5,15,5]);
|
||||
translate([-34.5,0,18.5]) rotate([0,45,0]) cube([5,15,5]);
|
||||
|
||||
|
||||
translate([-19,7,13.5]) rotate([-15,0,0]) cube([5,5,50]);
|
||||
|
||||
}
|
||||
|
||||
// Final part
|
||||
module x_carriage(){
|
||||
difference(){
|
||||
union(){
|
||||
difference()
|
||||
{
|
||||
x_carriage_base();
|
||||
x_carriage_holes();
|
||||
x_carriage_fancy();
|
||||
}
|
||||
{
|
||||
x_carriage_base();
|
||||
x_carriage_holes();
|
||||
x_carriage_fancy();
|
||||
}
|
||||
cable_tray();
|
||||
upper_ziptie_holder();
|
||||
}
|
||||
|
||||
final_cutout();
|
||||
}
|
||||
}
|
||||
|
||||
// belt keepout
|
||||
//%translate([-42-9,30-16,7])cube([70,16,10]);
|
||||
|
||||
module final_part()
|
||||
{
|
||||
|
||||
difference(){
|
||||
union(){
|
||||
x_carriage();
|
||||
//translate([7.3,-16,0])
|
||||
//translate([2,-19,0]) cube([7.5,12,0.5]);
|
||||
//translate([5,-16,0]) cube([4.5,1,5]);
|
||||
//translate([5,-11.2,0]) cube([4.5,1,5]);
|
||||
//translate([5.5,7.5,0]) cube([4,3.5,0.5]);
|
||||
}
|
||||
translate([2.5,67.5,-50]) rotate([0,0,0]) cylinder(r=1.8, h=100, $fn=30);
|
||||
#translate([2.5,67.5,-0.1])cylinder(r1=2.1,r2=1.8, h=0.5, $fn=25);
|
||||
translate([2.5,67.5,5]) rotate([0,0,0]) cylinder(r=3.2, h=8, $fn=30);
|
||||
translate([0,21,0]) rotate([0,90,0]) cylinder(r=5.2, h=5.5, $fn=25);
|
||||
//translate([2 ,-5,-5])cube([20,50,30]);
|
||||
|
||||
translate([-36.5,21.25,1.5]) cube([0.1,4.5,13.3]);
|
||||
translate([-38.6,21,1.5]) cube([0.1,6,13.3]);
|
||||
translate([-41,21,1.5]) cube([0.1,6,13.3]);
|
||||
|
||||
|
||||
translate([3.5,21,6]) cube([0.1,2,8.8]);
|
||||
translate([5,21,6]) cube([0.1,3,8.8]);
|
||||
translate([6.8,21,1.5]) cube([0.1,3,13.3]);
|
||||
translate([8.5,21,5]) cube([0.1,3,9.8]);
|
||||
|
||||
translate([5,-15.4,-1]) rotate([0,45,0]) cube([0.3,4.6,8]);
|
||||
translate([7.45,6,-1]) cube([0.5,1,5]);
|
||||
translate([7.45,11.5,-1]) cube([0.5,1.8,5]);
|
||||
|
||||
translate([5,-16.4,-1]) rotate([0,45,0]) cube([0.3,0.5,8]);
|
||||
translate([5,-10.3,-1]) rotate([0,45,0]) cube([0.3,0.5,8]);
|
||||
translate([6,-16.5,-1]) cube([1,0.5,5]);
|
||||
translate([3,-16.5,-1]) cube([2,0.5,5]);
|
||||
translate([6,-10.2,-1]) cube([1,0.5,5]);
|
||||
translate([3,-10.2,-1]) cube([2,0.5,5]);
|
||||
translate([6,7.5,-1]) cube([1,0.5,5]);
|
||||
translate([6,10.5,-1]) cube([1,0.5,5]);
|
||||
// extruder cables holder
|
||||
difference()
|
||||
{
|
||||
union()
|
||||
{
|
||||
// body
|
||||
translate([-22,8.3,7]) cube([7,15,16]);
|
||||
translate([-22,18,7]) cube([11,15,19]);
|
||||
}
|
||||
|
||||
// belt cutout
|
||||
translate([-30,15.5,14.8]) rotate([0,90,0]) cylinder(r=2, h=22, $fn=30);
|
||||
translate([-23,13.5,7]) cube([9,4,8]);
|
||||
|
||||
// angle cuts
|
||||
translate([-10.0,13.0,7]) rotate([0,0,45]) cube([7,7,28]);
|
||||
translate([-22.5,29.5,7]) rotate([0,0,45]) cube([5,5,28]);
|
||||
translate([-10.5,29.5,7]) rotate([0,0,45]) cube([5,5,28]);
|
||||
|
||||
//upper ziptie slot
|
||||
translate([-7,23,16])rotate([0,0,40])cube([2,10,4]);
|
||||
translate([-13.5,19,13]) cube([3,15,11]);
|
||||
translate([-23,21,19.5]) cube([10,5,11]);
|
||||
translate([-27,20,16])rotate([0,0,-20])cube([2,30,4]);
|
||||
translate([0,29.5,16])rotate([0,0,90])cube([2,30,4]);
|
||||
translate([-11,21,16])rotate([0,0,20])cube([2,10,4]);
|
||||
|
||||
//half cut
|
||||
//translate([-50 ,-50,8])cube([100,100,30]);
|
||||
translate([-19,22,5]) cube([0.5,5,14]);
|
||||
translate([-15,22,5]) cube([0.5,5,14]);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// upper screw
|
||||
translate([2.5,67.5,-50]) rotate([0,0,0]) cylinder(r=1.8, h=100, $fn=30);
|
||||
translate([2.5,67.5,-0.1])cylinder(r1=2.1,r2=1.8, h=0.5, $fn=25);
|
||||
translate([2.5,67.5,5]) rotate([0,0,0]) cylinder(r=3.2, h=8, $fn=30);
|
||||
|
||||
// cable guide round corner
|
||||
translate([0,21,0]) rotate([0,90,0]) cylinder(r=5.2, h=5.5, $fn=25);
|
||||
|
||||
//selective infill
|
||||
translate([-36.5,21.25,1.5]) cube([0.1,4.5,13.3]);
|
||||
translate([-38.6,21,1.5]) cube([0.1,6,13.3]);
|
||||
translate([-41,21,1.5]) cube([0.1,6,13.3]);
|
||||
|
||||
translate([3.5,21,6]) cube([0.1,2,8.8]);
|
||||
translate([5,21,6]) cube([0.1,3,8.8]);
|
||||
translate([6.8,21,1.5]) cube([0.1,3,13.3]);
|
||||
translate([8.5,21,5]) cube([0.1,3,9.8]);
|
||||
|
||||
translate([3.5,21,5.5]) cube([0.5,2,9]);
|
||||
translate([5,21,5.5]) cube([0.5,2,9]);
|
||||
translate([6.5,21,5.5]) cube([0.5,2,9]);
|
||||
translate([8,21,5]) cube([0.5,2,9]);
|
||||
|
||||
// filament holder
|
||||
translate([-18.5,-10.5,12]) rotate([-8,0,0])cylinder(r=1.52, h=40, $fn=10);
|
||||
|
||||
|
||||
// cable screw hole
|
||||
translate([-18.5,11,-1]) rotate([0,0,0])cylinder(r=1.52, h=40, $fn=50);
|
||||
translate([-18.5,11,-1]) rotate([0,0,0])cylinder(r1=4,r2=3.2, h=7, $fn=6);
|
||||
translate([-18.5,11,-1]) rotate([0,0,0])cylinder(r1=5,r2=4, h=4, $fn=6);
|
||||
|
||||
// extruder cables front face cut
|
||||
translate([-18.5,16,19.5]) rotate([0,0,0])cylinder(r=10, h=40, $fn=60);
|
||||
translate([-18.5,19.5,23]) rotate([0,0,0])cylinder(r=15, h=40, $fn=60);
|
||||
}
|
||||
|
||||
|
||||
// Cable hole vis
|
||||
//%translate([-33/2 - 2.5,-17,1])cube([5,25,30]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
final_part();
|
||||
|
||||
|
|
|
|||
|
|
@ -1,72 +1,111 @@
|
|||
// PRUSA iteration3
|
||||
// X end idler
|
||||
// GNU GPL v3
|
||||
// Josef Průša <iam@josefprusa.cz> and contributors
|
||||
// http://www.reprap.org/wiki/Prusa_Mendel
|
||||
// http://prusamendel.org
|
||||
|
||||
use <x-end.scad>
|
||||
|
||||
|
||||
|
||||
module x_end_idler_holes(){
|
||||
x_end_holes();
|
||||
translate([0,3.5,0]){
|
||||
translate(v=[0,-22,30.25]) rotate(a=[0,-90,0]) cylinder(h = 80, r=1.8, $fn=30);
|
||||
translate(v=[1.5,-22,30.25]) rotate(a=[0,-90,0]) cylinder(h = 10, r=3.1, $fn=30);
|
||||
translate(v=[-21.5,-22,30.25]) rotate(a=[0,-90,0]) rotate(a=[0,0,30]) cylinder(h = 80, r=3.2, $fn=6);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
module waste_pocket(){
|
||||
// waste pocket
|
||||
translate([-15,-1,6]) rotate([90,0,0]) cylinder( h=5, r=5.5, $fn=30);
|
||||
translate([-15,-1,51]) rotate([90,0,0]) cylinder( h=5, r=5.5, $fn=30);
|
||||
translate([-15,-5.9,6]) rotate([90,0,0]) cylinder( h=3, r1=5.5, r2=4.3, $fn=30);
|
||||
translate([-15,-5.9,51]) rotate([90,0,0]) cylinder( h=3, r=5.5, r2=4.3, $fn=30);
|
||||
|
||||
|
||||
//M3 thread
|
||||
translate([-15,8.5,6]) rotate([90,0,0]) cylinder( h=12, r=1.4, $fn=30);
|
||||
translate([-15,8.5,51]) rotate([90,0,0]) cylinder( h=12, r=1.4, $fn=30);
|
||||
|
||||
//M3 heads
|
||||
translate([-15,11.5,6]) rotate([90,0,0]) cylinder( h=4, r=2.9, $fn=30);
|
||||
translate([-15,11.5,51]) rotate([90,0,0]) cylinder( h=4, r=2.9, $fn=30);
|
||||
|
||||
//M3 nut traps
|
||||
translate([-17.9,0.5,52-3-1.6]) cube([5.8,3.1,20]);
|
||||
translate([-17.9,0.5,-10+1.5+1.6]) cube([5.8,3.1,16]);
|
||||
}
|
||||
|
||||
|
||||
module x_end_idler_base(){
|
||||
union(){
|
||||
difference(){
|
||||
x_end_base();
|
||||
x_end_idler_holes();
|
||||
}
|
||||
translate([-15,8.5,6]) rotate([90,0,0]) cylinder( h=11, r=6, $fn=30);
|
||||
translate([-15,8.5,51]) rotate([90,0,0]) cylinder( h=11, r=6, $fn=30);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
module x_end_idler(){
|
||||
mirror([0,1,0])
|
||||
difference(){
|
||||
x_end_idler_base();
|
||||
waste_pocket();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//difference(){
|
||||
x_end_idler();
|
||||
//translate([-15,-50,0]) cube([100,100,100]);
|
||||
//}
|
||||
|
||||
|
||||
// PRUSA iteration3
|
||||
// X end idler
|
||||
// GNU GPL v3
|
||||
// Josef Průša <iam@josefprusa.cz> and contributors
|
||||
// http://www.reprap.org/wiki/Prusa_Mendel
|
||||
// http://prusamendel.org
|
||||
|
||||
use <x-end.scad>
|
||||
|
||||
|
||||
|
||||
module x_end_idler_holes(){
|
||||
x_end_holes();
|
||||
translate([0,3.5,0]){
|
||||
translate(v=[0,-22,30.25]) rotate(a=[0,-90,0]) cylinder(h = 80, r=1.8, $fn=30);
|
||||
translate(v=[1.5,-22,30.25]) rotate(a=[0,-90,0]) cylinder(h = 10, r=3.1, $fn=30);
|
||||
translate(v=[-21.5,-22,30.25]) rotate(a=[0,-90,0]) rotate(a=[0,0,30]) cylinder(h = 80, r=3.2, $fn=6);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
module waste_pocket(){
|
||||
// waste pocket
|
||||
translate([-15,-1,6]) rotate([90,0,0]) cylinder( h=5, r=5.5, $fn=30);
|
||||
translate([-15,-1,51]) rotate([90,0,0]) cylinder( h=5, r=5.5, $fn=30);
|
||||
translate([-15,-5.9,6]) rotate([90,0,0]) cylinder( h=3, r1=5.5, r2=4.3, $fn=30);
|
||||
translate([-15,-5.9,51]) rotate([90,0,0]) cylinder( h=3, r=5.5, r2=4.3, $fn=30);
|
||||
|
||||
|
||||
//M3 thread
|
||||
translate([-15,8.5,6]) rotate([90,0,0]) cylinder( h=12, r=1.7, $fn=30);
|
||||
translate([-15,8.5,51]) rotate([90,0,0]) cylinder( h=12, r=1.7, $fn=30);
|
||||
|
||||
//M3 heads
|
||||
translate([-15,11.5,6]) rotate([90,0,0]) cylinder( h=4, r=3, $fn=30);
|
||||
translate([-15,11.5,51]) rotate([90,0,0]) cylinder( h=4, r=3, $fn=30);
|
||||
|
||||
//M3 nut traps
|
||||
translate([-17.9,0.5,52-3-1.6]) cube([6,3,20]);
|
||||
translate([-17.9,0.5,-10+1.5+1.6]) cube([6,3,16]);
|
||||
}
|
||||
|
||||
|
||||
module x_end_idler_base(){
|
||||
union(){
|
||||
difference(){
|
||||
x_end_base();
|
||||
x_end_idler_holes();
|
||||
}
|
||||
translate([-15,10.5,6]) rotate([90,0,0]) cylinder( h=13, r=6, $fn=30);
|
||||
translate([-15,10.5,51]) rotate([90,0,0]) cylinder( h=13, r=6, $fn=30);
|
||||
}
|
||||
}
|
||||
|
||||
module selective_infill()mirror([0,1,0]) translate([-50, -33, 0.6])
|
||||
{
|
||||
difference()
|
||||
{
|
||||
union()
|
||||
{
|
||||
difference()
|
||||
{
|
||||
#translate([50,50,0.6]) rotate([0,0,90]) cylinder( h=6, r=11.7, $fn=30);//0, 17, 0.6
|
||||
#translate([50,50,-1]) rotate([0,0,90]) cylinder( h=10, r=11.5, $fn=30);
|
||||
}
|
||||
difference()
|
||||
{
|
||||
translate([50,50,0.6]) rotate([0,0,90]) cylinder( h=6, r=10.7, $fn=30); //0, 17, 0.6
|
||||
translate([50,50,-1]) rotate([0,0,90]) cylinder( h=10, r=10.5, $fn=30);
|
||||
}
|
||||
difference()
|
||||
{
|
||||
translate([50,50,0.6]) rotate([0,0,90]) cylinder( h=6, r=9.9, $fn=30); //0, 17, 0.6
|
||||
translate([50,50,-1]) rotate([0,0,90]) cylinder( h=10, r=9.7, $fn=30);
|
||||
}
|
||||
difference()
|
||||
{
|
||||
translate([50,50,0.6]) rotate([0,0,90]) cylinder( h=6, r=9, $fn=30); //0, 17, 0.6
|
||||
translate([50,50,-1]) rotate([0,0,90]) cylinder( h=10, r=8.8, $fn=30);
|
||||
}
|
||||
}
|
||||
translate([57.5,50.5,-1]) rotate([0,0,45]) cube([8,10,9]);
|
||||
translate([52,30.5,-1]) rotate([0,0,45]) cube([10,20,20]);
|
||||
translate([32,35.5,-1]) cube([8,30,9]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
module reinforcement_selective_infill(){
|
||||
rotate([90,0,-15,]) translate ([-1.5, 8, 26])linear_extrude(height = 0.2) polygon( points=[[-2,0],[0,12],[8,0]] ); // bearings
|
||||
|
||||
rotate([90,0,-50,]) translate ([8.5, 8, 1.4])linear_extrude(height = 0.2) polygon( points=[[0,0],[0,12],[8,0]] ); //body
|
||||
|
||||
}
|
||||
|
||||
module x_end_idler(){
|
||||
mirror([0,1,0])
|
||||
difference()
|
||||
{
|
||||
x_end_idler_base();
|
||||
waste_pocket();
|
||||
selective_infill();
|
||||
reinforcement_selective_infill();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
x_end_idler();
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,104 +1,159 @@
|
|||
// PRUSA iteration3
|
||||
// X end motor
|
||||
// GNU GPL v3
|
||||
// Josef Průša <iam@josefprusa.cz> and contributors
|
||||
// http://www.reprap.org/wiki/Prusa_Mendel
|
||||
// http://prusamendel.org
|
||||
|
||||
use <x-end.scad>
|
||||
|
||||
module x_end_motor_base(){
|
||||
x_end_base();
|
||||
translate(v=[-15,31,26.5]) cube(size = [17,44,53], center = true);
|
||||
}
|
||||
|
||||
module x_end_motor_endstop_base(){
|
||||
translate([-23.5,-28.5,58]){
|
||||
difference(){
|
||||
// Base block
|
||||
cube([17,18.2,4]);
|
||||
// Nice edge
|
||||
translate([-1,10,10])rotate([-45,0,0])cube(20,20,20);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module x_end_motor_endstop_holes(){
|
||||
translate([-23.5,-28.5,58]){
|
||||
translate([17/2,7.5,-3]){
|
||||
// Back screw hole for endstop
|
||||
translate([-4.75,0,0])cylinder(r=1,h=19,$fn=20);
|
||||
// Front screw hole for endstop
|
||||
translate([4.75,0,0])cylinder(r=1,h=19,$fn=20);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module x_end_motor_holes(){
|
||||
x_end_holes();
|
||||
// Position to place
|
||||
translate(v=[-1,32,30.25]){
|
||||
// Belt hole
|
||||
translate(v=[-14,1,0]) cube(size = [10,46,22], center = true);
|
||||
// Motor mounting holes
|
||||
translate(v=[20,-15.5,-15.5]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h = 70, r=1.8, $fn=30);
|
||||
translate(v=[1,-15.5,-15.5]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h = 10, r=3.1, $fn=30);
|
||||
translate(v=[20,-15.5,15.5]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h = 70, r=1.8, $fn=30);
|
||||
translate(v=[1,-15.5,15.5]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h = 10, r=3.1, $fn=30);
|
||||
translate(v=[20,15.5,-15.5]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h = 70, r=1.8, $fn=30);
|
||||
translate(v=[1,15.5,-15.5]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h = 10, r=3.1, $fn=30);
|
||||
translate(v=[20,15.5,15.5]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h = 70, r=1.8, $fn=30);
|
||||
translate(v=[1,15.5,15.5]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h = 10, r=3.1, $fn=30);
|
||||
|
||||
// Material saving cutout
|
||||
translate(v=[-10,12,10]) cube(size = [60,42,42], center = true);
|
||||
|
||||
// Material saving cutout
|
||||
translate(v=[-10,40,-30]) rotate(a=[45,0,0]) cube(size = [60,42,42], center = true);
|
||||
// Motor shaft cutout
|
||||
//#translate(v=[0,0,0]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h = 70, r=17, $fn=6);
|
||||
}
|
||||
}
|
||||
|
||||
// Motor shaft cutout
|
||||
module x_end_motor_shaft_cutout(){
|
||||
union(){
|
||||
difference(){
|
||||
translate(v=[0,32,30]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h = 70, r=17, $fn=6);
|
||||
|
||||
translate(v=[-10,-17+32,30]) cube(size = [60,2,10], center = true);
|
||||
translate(v=[-10,-8+32,-15.5+30]) rotate(a=[60,0,0]) cube(size = [60,2,10], center = true); ///
|
||||
translate(v=[-10,8+32,-15.5+30]) rotate(a=[-60,0,0]) cube(size = [60,2,10], center = true);
|
||||
|
||||
|
||||
}
|
||||
translate(v=[-30,25.2,-11.8 +30]) rotate(a=[0,90,0]) cylinder(h = 30, r=3, $fn=30);
|
||||
translate(v=[-30,19.05,30]) rotate(a=[0,90,0]) cylinder(h = 30, r=3.5, $fn=100);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// Final part
|
||||
module x_end_motor(){
|
||||
difference(){
|
||||
union(){
|
||||
x_end_motor_base();
|
||||
x_end_motor_endstop_base();
|
||||
}
|
||||
x_end_motor_shaft_cutout();
|
||||
x_end_motor_holes();
|
||||
x_end_motor_endstop_holes();
|
||||
|
||||
translate([-12,-42,65]) rotate([-35,0,0]) rotate([0,0,45]) cube(10,10,10);
|
||||
translate([-15,8.5,6]) rotate([90,0,0]) cylinder(h=5, r=5, $fn=30);
|
||||
translate([-15,8.5,51]) rotate([90,0,0]) cylinder(h=5, r=5, $fn=30);
|
||||
translate([-15,3.5,6]) rotate([90,0,0]) cylinder(h=3, r1=5, r2=4, $fn=30);
|
||||
translate([-15,3.5,51]) rotate([90,0,0]) cylinder(h=3, r1=5, r2=4, $fn=30);
|
||||
//#translate([-16,-40,0])cube([50,100,100]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
x_end_motor();
|
||||
// PRUSA iteration3
|
||||
// X end motor
|
||||
// GNU GPL v3
|
||||
// Josef Průša <iam@josefprusa.cz> and contributors
|
||||
// http://www.reprap.org/wiki/Prusa_Mendel
|
||||
// http://prusamendel.org
|
||||
|
||||
use <x-end.scad>
|
||||
|
||||
module x_end_motor_base(){
|
||||
x_end_base();
|
||||
translate(v=[-15,31,26.5]) cube(size = [17,44,53], center = true);
|
||||
}
|
||||
|
||||
module x_end_motor_endstop_base(){
|
||||
translate([-23.5,-28.5,58]){
|
||||
difference(){
|
||||
// Base block
|
||||
cube([17,18.2,4]);
|
||||
// Nice edge
|
||||
translate([-1,10,10])rotate([-45,0,0])cube(20,20,20);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module x_end_motor_endstop_holes(){
|
||||
translate([-23.5,-28.5,58]){
|
||||
translate([17/2,7.5,-3]){
|
||||
// Back screw hole for endstop
|
||||
translate([-4.75,0,0])cylinder(r=1,h=19,$fn=20);
|
||||
translate([-4.75,0,6])cylinder(r1=1, r2=1.5, h=2,$fn=20);
|
||||
// Front screw hole for endstop
|
||||
translate([4.75,0,0])cylinder(r=1,h=19,$fn=20);
|
||||
translate([4.75,0,6])cylinder(r1=1, r2=1.5, h=2,$fn=20);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
module x_end_motor_holes(){
|
||||
x_end_holes();
|
||||
// Position to place
|
||||
translate(v=[-1,32,30.25]){
|
||||
// Belt hole
|
||||
translate(v=[-14,1,0]) cube(size = [10,46,22], center = true);
|
||||
// Motor mounting holes
|
||||
translate(v=[20,-15.5,-15.5]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h = 70, r=1.8, $fn=30);
|
||||
translate(v=[1,-15.5,-15.5]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h = 10, r=3.1, $fn=30);
|
||||
translate(v=[20,-15.5,15.5]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h = 70, r=1.8, $fn=30);
|
||||
translate(v=[1,-15.5,15.5]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h = 10, r=3.1, $fn=30);
|
||||
translate(v=[20,15.5,-15.5]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h = 70, r=1.8, $fn=30);
|
||||
translate(v=[1,15.5,-15.5]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h = 10, r=3.1, $fn=30);
|
||||
translate(v=[20,15.5,15.5]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h = 70, r=1.8, $fn=30);
|
||||
translate(v=[1,15.5,15.5]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h = 10, r=3.1, $fn=30);
|
||||
|
||||
// Material saving cutout
|
||||
translate(v=[-10,12,10]) cube(size = [60,42,42], center = true);
|
||||
|
||||
// Material saving cutout
|
||||
translate(v=[-10,40,-30]) rotate(a=[45,0,0]) cube(size = [60,42,42], center = true);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// Motor shaft cutout
|
||||
module x_end_motor_shaft_cutout(){
|
||||
union(){
|
||||
difference(){
|
||||
translate(v=[0,32,30]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h = 70, r=17, $fn=6);
|
||||
|
||||
translate(v=[-10,-17+32,30]) cube(size = [60,2,10], center = true);
|
||||
translate(v=[-10,-8+32,-15.5+30]) rotate(a=[60,0,0]) cube(size = [60,2,10], center = true);
|
||||
translate(v=[-10,8+32,-15.5+30]) rotate(a=[-60,0,0]) cube(size = [60,2,10], center = true);
|
||||
|
||||
|
||||
}
|
||||
translate(v=[-30,25.2,-11.8 +30]) rotate(a=[0,90,0]) cylinder(h = 30, r=3, $fn=30);
|
||||
translate(v=[-30,19.05,30]) rotate(a=[0,90,0]) cylinder(h = 30, r=3.5, $fn=100);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
module selective_infill()mirror([0,1,0]) translate([-50, -33, 0.6])
|
||||
{
|
||||
difference()
|
||||
{
|
||||
union()
|
||||
{
|
||||
difference()
|
||||
{
|
||||
translate([50,50,0.6]) rotate([0,0,90]) cylinder( h=6, r=11.7, $fn=30);//0, 17, 0.6
|
||||
translate([50,50,-1]) rotate([0,0,90]) cylinder( h=10, r=11.5, $fn=30);
|
||||
}
|
||||
difference()
|
||||
{
|
||||
translate([50,50,0.6]) rotate([0,0,90]) cylinder( h=6, r=10.7, $fn=30); //0, 17, 0.6
|
||||
translate([50,50,-1]) rotate([0,0,90]) cylinder( h=10, r=10.5, $fn=30);
|
||||
}
|
||||
difference()
|
||||
{
|
||||
translate([50,50,0.6]) rotate([0,0,90]) cylinder( h=6, r=9.9, $fn=30); //0, 17, 0.6
|
||||
translate([50,50,-1]) rotate([0,0,90]) cylinder( h=10, r=9.7, $fn=30);
|
||||
}
|
||||
difference()
|
||||
{
|
||||
translate([50,50,0.6]) rotate([0,0,90]) cylinder( h=6, r=9, $fn=30); //0, 17, 0.6
|
||||
translate([50,50,-1]) rotate([0,0,90]) cylinder( h=10, r=8.8, $fn=30);
|
||||
}
|
||||
}
|
||||
translate([57.5,50.5,-1]) rotate([0,0,45]) cube([8,10,9]); // front
|
||||
translate([52,30.5,-1]) rotate([0,0,45]) cube([10,20,20]); // front angled
|
||||
translate([32,35.5,-1]) cube([8,30,9]); // inner horizontal
|
||||
}
|
||||
}
|
||||
|
||||
module reinforcement_selective_infill()
|
||||
{
|
||||
rotate([90,0,-15,]) translate ([-1.5, 8, 26])linear_extrude(height = 0.2) polygon( points=[[-2,0],[0,12],[8,0]] ); //bearings
|
||||
|
||||
rotate([90,0,-50,]) translate ([8.5, 8, 1.4])linear_extrude(height = 0.2) polygon( points=[[0,0],[0,12],[8,0]] ); //body
|
||||
|
||||
}
|
||||
|
||||
|
||||
// Final part
|
||||
module x_end_motor(){
|
||||
difference(){
|
||||
union(){
|
||||
x_end_motor_base();
|
||||
x_end_motor_endstop_base();
|
||||
|
||||
}
|
||||
x_end_motor_shaft_cutout();
|
||||
x_end_motor_holes();
|
||||
x_end_motor_endstop_holes();
|
||||
selective_infill();
|
||||
reinforcement_selective_infill();
|
||||
|
||||
translate([-12,-42,65]) rotate([-35,0,0]) rotate([0,0,45]) cube(10,10,10);
|
||||
translate([-15,8.5,6]) rotate([90,0,0]) cylinder(h=5, r=5, $fn=30);
|
||||
translate([-15,8.5,51]) rotate([90,0,0]) cylinder(h=5, r=5, $fn=30);
|
||||
translate([-15,3.5,6]) rotate([90,0,0]) cylinder(h=3, r1=5, r2=4, $fn=30);
|
||||
translate([-15,3.5,51]) rotate([90,0,0]) cylinder(h=3, r1=5, r2=4, $fn=30);
|
||||
}
|
||||
}
|
||||
|
||||
x_end_motor();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,87 +1,99 @@
|
|||
// PRUSA iteration3
|
||||
// X end prototype
|
||||
// GNU GPL v3
|
||||
// Josef Průša <iam@josefprusa.cz> and contributors
|
||||
// http://www.reprap.org/wiki/Prusa_Mendel
|
||||
// http://prusamendel.org
|
||||
|
||||
use <bearing.scad>
|
||||
use <polyholes.scad>
|
||||
rod_distance = 45;
|
||||
|
||||
module x_end_base(){
|
||||
// Main block
|
||||
height = 58;
|
||||
translate(v=[-15,-9,height/2]) cube(size = [17,39,height], center = true);
|
||||
// Bearing holder
|
||||
vertical_bearing_base();
|
||||
//Nut trap
|
||||
// Cylinder
|
||||
translate(v=[0,-17,0]) poly_cylinder(h = 8, r=12.5, $fn=25);
|
||||
// Hexagon
|
||||
//translate(v=[0,-17,0]) rotate([0,0,30]) cylinder(h = 8, r=8, $fn = 6);
|
||||
translate(v=[-6,-10.6,10]) rotate([0,0,48.2]) cube(size = [10,5,1], center = true);
|
||||
}
|
||||
|
||||
module x_end_holes(){
|
||||
vertical_bearing_holes();
|
||||
// Belt hole
|
||||
translate(v=[-1,0,0]){
|
||||
// Stress relief
|
||||
translate(v=[-5.5-10+1.5,-10-1,30]) cube(size = [18,1,28], center = true);
|
||||
difference(){
|
||||
translate(v=[-5.5-10+1.5,-10,30]) cube(size = [10,46,28], center = true);
|
||||
|
||||
|
||||
|
||||
// Nice edges
|
||||
translate(v=[-5.5-10+1.5-5,-10,30+23]) rotate([0,20,0]) cube(size = [10,46,28], center = true);
|
||||
translate(v=[-5.5-10+1.5+5,-10,30+23]) rotate([0,-20,0]) cube(size = [10,46,28], center = true);
|
||||
translate(v=[-5.5-10+1.5,-10,30-23]) rotate([0,45,0]) cube(size = [10,46,28], center = true);
|
||||
translate(v=[-5.5-10+1.5,-10,30-23]) rotate([0,-45,0]) cube(size = [10,46,28], center = true);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// Bottom pushfit rod
|
||||
translate(v=[-15,-41.5,6]) rotate(a=[-90,0,0]) pushfit_rod(7.8,50);
|
||||
// Top pushfit rod
|
||||
translate(v=[-15,-41.5,rod_distance+6]) rotate(a=[-90,0,0]) pushfit_rod(7.8,50);
|
||||
|
||||
// TR Nut trap
|
||||
// Hole for the nut
|
||||
translate(v=[0,-17, -1]) poly_cylinder(h = 9.01, r = 6.6, $fn = 25);
|
||||
|
||||
// Screw holes for TR nut
|
||||
translate(v=[0,-17, 0]) rotate([0, 0, -135]) translate([0, 9.5, -1]) cylinder(h = 10, r = 1.55, $fn=25);
|
||||
translate(v=[0,-17, 0]) rotate([0, 0, -135]) translate([0, -9.5, -1]) cylinder(h = 10, r = 1.55, $fn=25);
|
||||
|
||||
// Nut traps for TR nut screws
|
||||
translate(v=[0,-17, 0]) rotate([0, 0, -135]) translate([0, 9.5, 6]) rotate([0, 0, 0])cylinder(h = 3, r = 3.3, $fn=6);
|
||||
|
||||
translate(v=[0,-17, 0]) rotate([0, 0, -135]) translate([0, -9.5, 6]) rotate([0, 0, 30])cylinder(h = 3, r = 3.2, $fn=6);
|
||||
translate([-5.5,-17.2,6]) rotate([0,0,30]) cube([5,5,3]);
|
||||
translate([-0,-17.2,6]) rotate([0,0,60]) cube([5,10,3]);
|
||||
}
|
||||
|
||||
|
||||
// Final prototype
|
||||
module x_end_plain(){
|
||||
difference(){
|
||||
x_end_base();
|
||||
x_end_holes();
|
||||
}
|
||||
}
|
||||
|
||||
x_end_plain();
|
||||
|
||||
|
||||
module pushfit_rod(diameter,length){
|
||||
poly_cylinder(h = length, r=diameter/2);
|
||||
difference(){
|
||||
translate(v=[0,-diameter/2.85,length/2]) rotate([0,0,45]) cube(size = [diameter/2,diameter/2,length], center = true);
|
||||
translate(v=[0,-diameter/4-diameter/2-0.4,length/2]) rotate([0,0,0]) cube(size = [diameter,diameter/2,length], center = true);
|
||||
}
|
||||
//translate(v=[0,-diameter/2-2,length/2]) cube(size = [diameter,1,length], center = true);
|
||||
}
|
||||
|
||||
// PRUSA iteration3
|
||||
// X end prototype
|
||||
// GNU GPL v3
|
||||
// Josef Průša <iam@josefprusa.cz> and contributors
|
||||
// http://www.reprap.org/wiki/Prusa_Mendel
|
||||
// http://prusamendel.org
|
||||
|
||||
use <bearing.scad>
|
||||
use <polyholes.scad>
|
||||
rod_distance = 45;
|
||||
|
||||
module x_end_base(){
|
||||
// Main block
|
||||
height = 58;
|
||||
translate(v=[-15,-9,height/2]) cube(size = [17,39,height], center = true);
|
||||
// Bearing holder
|
||||
vertical_bearing_base();
|
||||
//Nut trap
|
||||
// Cylinder
|
||||
translate(v=[0,-17,0]) poly_cylinder(h = 8, r=12.5, $fn=25);
|
||||
// Hexagon
|
||||
//translate(v=[0,-17,0]) rotate([0,0,30]) cylinder(h = 8, r=8, $fn = 6);
|
||||
translate(v=[-6,-10.6,10]) rotate([0,0,48.2]) cube(size = [10,5,1], center = true);
|
||||
|
||||
rotate([90,0,-15,]) translate ([-1, 8, 24])linear_extrude(height = 4) polygon( points=[[0,0],[0,12],[8,0]] ); //vzpera lozisek
|
||||
rotate([90,0,-50,]) translate ([9, 8, -0.6])linear_extrude(height = 4) polygon( points=[[0,0],[0,12],[8,0]] );
|
||||
|
||||
}
|
||||
module reinforcement_selective_infill(){
|
||||
rotate([90,0,-15,]) translate ([-1.5, 8, 26])linear_extrude(height = 0.2) polygon( points=[[-2,0],[0,12],[8,0]] ); //vzpera lozisek
|
||||
|
||||
rotate([90,0,-50,]) translate ([8.5, 8, 1.4])linear_extrude(height = 0.2) polygon( points=[[0,0],[0,12],[12,0]] ); //vzpera tela
|
||||
|
||||
}
|
||||
|
||||
//reinforcement_selective_infill();
|
||||
|
||||
module x_end_holes(){
|
||||
vertical_bearing_holes();
|
||||
// Belt hole
|
||||
translate(v=[-1,0,0]){
|
||||
// Stress relief
|
||||
translate(v=[-5.5-10+1.5,-10-1,30]) cube(size = [18,1,28], center = true);
|
||||
difference(){
|
||||
translate(v=[-5.5-10+1.5,-10,30]) cube(size = [10,46,28], center = true);
|
||||
|
||||
|
||||
|
||||
// Nice edges
|
||||
translate(v=[-5.5-10+1.5-5,-10,30+23]) rotate([0,20,0]) cube(size = [10,46,28], center = true);
|
||||
translate(v=[-5.5-10+1.5+5,-10,30+23]) rotate([0,-20,0]) cube(size = [10,46,28], center = true);
|
||||
translate(v=[-5.5-10+1.5,-10,30-23]) rotate([0,45,0]) cube(size = [10,46,28], center = true);
|
||||
translate(v=[-5.5-10+1.5,-10,30-23]) rotate([0,-45,0]) cube(size = [10,46,28], center = true);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// Bottom pushfit rod
|
||||
translate(v=[-15,-41,6]) rotate(a=[-90,0,0]) pushfit_rod(7.8,50);
|
||||
// Top pushfit rod
|
||||
translate(v=[-15,-41.5,rod_distance+6]) rotate(a=[-90,0,0]) pushfit_rod(7.8,50);
|
||||
|
||||
// TR Nut trap
|
||||
// Hole for the nut
|
||||
translate(v=[0,-17, -1]) poly_cylinder(h = 9.01, r = 7, $fn = 25);
|
||||
translate(v=[0,-17, -0.1]) cylinder(h = 0.5, r1 = 6.8+0.8,r2 = 7, $fn = 25);
|
||||
|
||||
// Screw holes for TR nut
|
||||
translate(v=[0,-17, 0]) rotate([0, 0, -135]) translate([0, 9.5, -1]) cylinder(h = 10, r = 1.8, $fn=25);
|
||||
translate(v=[0,-17, 0]) rotate([0, 0, -135]) translate([0, -9.5, -1]) cylinder(h = 10, r = 1.8, $fn=25);
|
||||
|
||||
// Nut traps for TR nut screws
|
||||
translate(v=[0,-17, 0]) rotate([0, 0, -135]) translate([0, 9.5, 6]) rotate([0, 0, 0])cylinder(h = 3, r = 3.45, $fn=6);
|
||||
|
||||
translate(v=[0,-17, 0]) rotate([0, 0, -135]) translate([0, -9.5, 6]) rotate([0, 0, 30])cylinder(h = 3, r = 3.2, $fn=6);
|
||||
translate([-5.5,-17.2,6]) rotate([0,0,30]) cube([5,5,3]);
|
||||
translate([-0,-17.2,6]) rotate([0,0,60]) cube([5,10,3]);
|
||||
}
|
||||
|
||||
|
||||
// Final prototype
|
||||
module x_end_plain(){
|
||||
difference(){
|
||||
x_end_base();
|
||||
x_end_holes();
|
||||
}
|
||||
}
|
||||
|
||||
x_end_plain();
|
||||
|
||||
|
||||
module pushfit_rod(diameter,length){
|
||||
poly_cylinder(h = length, r=diameter/2);
|
||||
difference(){
|
||||
translate(v=[0,-diameter/2.85,length/2]) rotate([0,0,45]) cube(size = [diameter/2,diameter/2,length], center = true);
|
||||
translate(v=[0,-diameter/4-diameter/2-0.4,length/2]) rotate([0,0,0]) cube(size = [diameter,diameter/2,length], center = true);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -14,12 +14,11 @@ translate([-10, 23, -1 ]) cube([ 52, 3, 15 ]);
|
|||
|
||||
module belt_holders()
|
||||
{
|
||||
|
||||
translate([ 16, 18, 0 ]) cylinder( h=11, r=3.5, $fn=30 ); // upper belt holder
|
||||
translate([ 16, 18, 11 ]) cylinder( h=3, r1=3.5, r2=2.5, $fn=30 ); // upper belt holder cone
|
||||
translate([ 16, 18, 11 ]) cylinder( h=3, r1=3.5, r2=2.5, $fn=30 ); // upper belt holder cone
|
||||
|
||||
translate([ 12, 5, 0 ]) cylinder( h=11, r=3.5, $fn=30 ); // lower belt holder
|
||||
translate([ 12, 5, 11 ]) cylinder( h=3 , r1=3.5, r2=2.5, $fn=30 ); // lower belt holder cone
|
||||
translate([ 12, 5, 0 ]) cylinder( h=11, r=3.5, $fn=30 ); // lower belt holder
|
||||
translate([ 12, 5, 11 ]) cylinder( h=3 , r1=3.5, r2=2.5, $fn=30 ); // lower belt holder cone
|
||||
}
|
||||
|
||||
module screws()
|
||||
|
|
@ -41,15 +40,16 @@ module screws()
|
|||
translate([35.5, 15, 4.5 ]) cube([ 6, 7, 6 ]);
|
||||
}
|
||||
|
||||
belt_holders();
|
||||
//belt_holders();
|
||||
module main()
|
||||
|
||||
{
|
||||
difference()
|
||||
{
|
||||
main_body();
|
||||
|
||||
translate([ 16, 18, 2 ]) cylinder( h = 16, r = 7.2, $fn=30 ); // upper belt space cutaway
|
||||
translate([ 12, 5, 2 ]) cylinder( h = 16, r = 7.2, $fn=30 ); // lower belt space cutaway
|
||||
|
||||
translate([-20, 9, 2]) cube([ 28, 2.1, 16 ]);
|
||||
rotate([0,0,40]) translate([11, 1, 2 ]) cube([ 10, 4, 16 ]);
|
||||
|
||||
|
|
@ -57,23 +57,9 @@ translate([10, 7, 2 ]) cube([ 32, 2.1, 16 ]);
|
|||
|
||||
translate([16, 8, 11 ]) rotate([45,0,0]) cube([ 15, 5, 5 ]);
|
||||
translate([-2, 10, 11 ]) rotate([45,0,0]) cube([ 10, 5, 5 ]);
|
||||
|
||||
screws();
|
||||
|
||||
|
||||
|
||||
// print part reinforcement
|
||||
translate([1,0.5,-0.5]) cube([0.1,5,13]);
|
||||
translate([3,0.5,-0.5]) cube([0.1,5,13]);
|
||||
translate([21.2,0.5,-0.5]) cube([0.1,4,12]);
|
||||
translate([23.5,0.5,-0.5]) cube([0.1,4,12]);
|
||||
translate([25.5,0.5,-0.5]) cube([0.1,4,12]);
|
||||
translate([11.5,3,-0.5]) cube([1,0.3,12]);
|
||||
translate([10,5,-0.5]) cube([4,0.3,12]);
|
||||
translate([11.5,6.5,-0.5]) cube([1,0.3,12]);
|
||||
translate([15.5,16,-0.5]) cube([1,0.3,12]);
|
||||
translate([14,18,-0.5]) cube([4,0.3,12]);
|
||||
translate([15.5,20,-0.5]) cube([1,0.3,12]);
|
||||
|
||||
|
||||
|
||||
// corner cutoff
|
||||
|
|
@ -81,6 +67,49 @@ screws();
|
|||
translate([-2,-13,-2]) rotate([0,0,45]) cube([10,10,20]);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
module selective_infill()
|
||||
{
|
||||
// print part reinforcement
|
||||
translate([1, 0.5, -0.5]) cube([0.1,5,13]);
|
||||
translate([3, 0.5, -0.5]) cube([0.1,5,13]);
|
||||
translate([21.5, 0.5, -0.5]) cube([0.1,4,12]);
|
||||
translate([23.5, 0.5, -0.5]) cube([0.1,4,12]);
|
||||
translate([25.5, 0.5, -0.5]) cube([0.1,4,12]);
|
||||
translate([11.5, 3, -0.5]) cube([1,0.2,12]);
|
||||
translate([10, 5, -0.5]) cube([4,0.2,12]);
|
||||
translate([11.5, 6.5, -0.5]) cube([1,0.2,12]);
|
||||
translate([15.5, 16, -0.5]) cube([1,0.2,12]);
|
||||
translate([14, 18, -0.5]) cube([4,0.2,12]);
|
||||
translate([15.5, 20, -0.5]) cube([1,0.2,12]);
|
||||
|
||||
translate([1, 5.5, -0.5]) cube([0.1,14,2]);
|
||||
translate([3, 5.5, -0.5]) cube([0.1,14,2]);
|
||||
translate([5, 0.5, -0.5]) cube([0.1,19,2]);
|
||||
translate([7, 0.5, -0.5]) cube([0.1,19,2]);
|
||||
|
||||
translate([19.5, 0.5, -0.5]) cube([0.1,18,2]);
|
||||
translate([21.5, 4.5, -0.5]) cube([0.1,14,2]);
|
||||
translate([23.5, 4.5, -0.5]) cube([0.1,14,2]);
|
||||
translate([25.5, 4.5, -0.5]) cube([0.1,14,2]);
|
||||
}
|
||||
|
||||
|
||||
module final_part()
|
||||
{
|
||||
difference()
|
||||
{
|
||||
union()
|
||||
{
|
||||
main();
|
||||
belt_holders();
|
||||
}
|
||||
selective_infill();
|
||||
}
|
||||
}
|
||||
|
||||
final_part();
|
||||
|
||||
|
||||
|
|
@ -1,65 +1,92 @@
|
|||
// PRUSA iteration3
|
||||
// Y frame corners
|
||||
// GNU GPL v3
|
||||
// Josef Průša <iam@josefprusa.cz> and contributors
|
||||
// http://www.reprap.org/wiki/Prusa_Mendel
|
||||
// http://prusamendel.org
|
||||
|
||||
|
||||
module corner_base(){
|
||||
translate([-9,-11,0])cube([18,22,49]);
|
||||
}
|
||||
|
||||
module corner_holes(){
|
||||
translate([-11,-11,0]){
|
||||
// Bottom hole
|
||||
translate([0,11,10]) rotate([0,90,0]) translate([0,0,-5]) cylinder(h = 270, r=4.4, $fn=30);
|
||||
// Top hole
|
||||
translate([0,11,30]) rotate([0,90,0]) translate([0,0,-5]) cylinder(h = 270, r=4.4, $fn=30);
|
||||
// Middle hole
|
||||
translate([11,0,20]) rotate([0,0,90]) rotate([0,90,0]) translate([0,0,-5]) cylinder(h = 270, r=5.4, $fn=30);
|
||||
|
||||
// Washer hole
|
||||
translate([11,-3,20]) rotate([0,0,90]) rotate([0,90,0]) translate([0,0,-5]) cylinder(h = 10, r=11, $fn=30);
|
||||
|
||||
// Top smooth rod insert
|
||||
// Smooth rod place
|
||||
translate([11,2.75,47]) rotate([0,90,90]) cylinder(h = 9.75, r=4.2, $fn=30);
|
||||
// Ziptie
|
||||
translate([-5,6,41]) cube([30,3.5,2]);
|
||||
|
||||
// LM8UU keepout
|
||||
difference(){
|
||||
translate([11,12.5,46]) rotate([0,90,90]) cylinder(h = 270, r=8, $fn=30);
|
||||
translate([21,12.5,62]) rotate([0,90,90]) cube([20,20,30]);
|
||||
}
|
||||
translate([21,12.5,62-0.2]) rotate([0,90,90]) cube([20,20,0.2]);
|
||||
translate([21,12.5,42]) rotate([0,90,90]) cube([0.2,20,20]);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
module corner_fancy(){
|
||||
// Side corner cutouts
|
||||
translate([-8,-9,0]) rotate([0,0,-45-180]) translate([-15,0,-1]) cube([30,30,51]);
|
||||
translate([8,-9,0]) rotate([0,0,45-180]) translate([-15,0,-1]) cube([30,30,51]);
|
||||
// Top corner cutouts
|
||||
translate([7,0,49]) rotate([0,45,0]) translate([-15,-15,0]) cube([30,30,30]);
|
||||
translate([-7,0,49]) rotate([0,-45,0]) translate([-15,-15,0]) cube([30,30,30]);
|
||||
rotate([0,0,90]){
|
||||
translate([-9.5,0,49]) rotate([0,-45,0]) translate([-15,-15,0]) cube([30,30,30]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Final part
|
||||
module corner(){
|
||||
// Rotate the part for better printing
|
||||
translate([0,0,11]) rotate([-90,0,0]) difference(){
|
||||
corner_base();
|
||||
corner_holes();
|
||||
corner_fancy();
|
||||
}
|
||||
}
|
||||
|
||||
rotate([90,0,0]) corner();
|
||||
// PRUSA iteration3
|
||||
// Y frame corners
|
||||
// GNU GPL v3
|
||||
// Josef Průša <iam@josefprusa.cz> and contributors
|
||||
// http://www.reprap.org/wiki/Prusa_Mendel
|
||||
// http://prusamendel.org
|
||||
|
||||
|
||||
module corner_base(){
|
||||
translate([-9,-11,0])cube([18,22,49]);
|
||||
|
||||
}
|
||||
|
||||
module corner_holes(){
|
||||
translate([-11,-11,0]){
|
||||
// Bottom hole
|
||||
translate([0,11,10]) rotate([0,90,0]) translate([0,0,-5]) cylinder(h = 270, r=4.4, $fn=30);
|
||||
// Top hole
|
||||
translate([0,11,30]) rotate([0,90,0]) translate([0,0,-5]) cylinder(h = 270, r=4.4, $fn=30);
|
||||
// Middle hole
|
||||
translate([11,0,20]) rotate([0,0,90]) rotate([0,90,0]) translate([0,0,-5]) cylinder(h = 270, r=5.4, $fn=30);
|
||||
// Bottom hole bridge
|
||||
translate([0,8.8,10]) rotate([0,90,0]) translate([0,0,-5]) cylinder(h = 270, r=2.6, $fn=6);
|
||||
// Top hole bridge
|
||||
translate([0,8.8,30]) rotate([0,90,0]) translate([0,0,-5]) cylinder(h = 270, r=2.6, $fn=6);
|
||||
|
||||
// Washer hole
|
||||
translate([11,-3,20]) rotate([0,0,90]) rotate([0,90,0]) translate([0,0,-5]) cylinder(h = 10, r=11, $fn=30);
|
||||
|
||||
// Top smooth rod insert
|
||||
// Smooth rod place
|
||||
translate([11,2.75,47]) rotate([0,90,90]) cylinder(h = 10, r=4.2, $fn=30);
|
||||
// Ziptie
|
||||
translate([-5,6,41]) cube([30,3.5,2]);
|
||||
|
||||
// LM8UU keepout
|
||||
difference(){
|
||||
translate([11,12.5,46]) rotate([0,90,90]) cylinder(h = 270, r=8, $fn=30);
|
||||
translate([21,12.5,62]) rotate([0,90,90]) cube([20,20,30]);
|
||||
}
|
||||
|
||||
translate([21,12.5,57]) rotate([0,90,90]) cube([15.2,20,20]);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
module corner_fancy(){
|
||||
// Side corner cutouts
|
||||
translate([-8,-9,0]) rotate([0,0,-45-180]) translate([-15,0,-1]) cube([30,30,51]);
|
||||
translate([8,-9,0]) rotate([0,0,45-180]) translate([-15,0,-1]) cube([30,30,51]);
|
||||
// Top corner cutouts
|
||||
translate([7,0,49]) rotate([0,45,0]) translate([-15,-15,0]) cube([30,30,30]);
|
||||
translate([-7,0,49]) rotate([0,-45,0]) translate([-15,-15,0]) cube([30,30,30]);
|
||||
rotate([0,0,90]){
|
||||
translate([-9.5,0,49]) rotate([0,-45,0]) translate([-15,-15,0]) cube([30,30,30]);
|
||||
}
|
||||
}
|
||||
|
||||
module selective_infill(){
|
||||
|
||||
translate([7,2,0.8])cube([0.2,33,5]);
|
||||
translate([-7,2,0.8])cube([0.2,33,5]);
|
||||
|
||||
translate([ 7,16,5.8])cube([0.2,8,11]);
|
||||
translate([-7,16,5.8])cube([0.2,8,11]);
|
||||
|
||||
translate([7,2,16.8])cube([0.2,33,2]);
|
||||
translate([-7,2,16.8])cube([0.2,33,2]);
|
||||
}
|
||||
|
||||
|
||||
// Final part
|
||||
module corner(){
|
||||
// Rotate the part for better printing
|
||||
translate([0,0,11]) rotate([-90,0,0])
|
||||
{
|
||||
difference(){
|
||||
corner_base();
|
||||
corner_holes();
|
||||
corner_fancy();
|
||||
translate([0,11,0]) rotate([90,0,0])selective_infill();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
corner();
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,80 +1,100 @@
|
|||
// PRUSA iteration3
|
||||
// Y motor mount
|
||||
// GNU GPL v3
|
||||
// Josef Průša <iam@josefprusa.cz> and contributors
|
||||
// http://www.reprap.org/wiki/Prusa_Mendel
|
||||
// http://prusamendel.org
|
||||
|
||||
//include <configuration.scad>
|
||||
|
||||
module y_motor_base(){
|
||||
// Motor holding part
|
||||
translate(v = [29,-21+50,0]){
|
||||
translate(v = [-21+4.5,0,5]) cube(size = [9,31,10], center=true);
|
||||
translate(v = [-15.5,-15.5,0]) cylinder(h = 10, r=5.5, $fn=50);
|
||||
translate(v = [-15.5,+15.5,0]) cylinder(h = 10, r=5.5, $fn=50);
|
||||
translate([-21,7,0]) rotate([0,0,45]) cube([2, 2, 10]);
|
||||
|
||||
//end stop
|
||||
translate(v = [-10.5,+15.5,0]) cylinder(h = 10, r=5.5, $fn=50);
|
||||
translate([-12,0,0]) cube([7, 15, 10]);
|
||||
translate([-16,16,0]) cube([6, 5, 10]);
|
||||
translate([-21+6,8,0]) cube([12-2, 5, 28]);
|
||||
translate([-21+6-2,8-5,0]) cube([4, 10, 28]);
|
||||
translate([-21+9.5-2,7,0]) rotate([0,0,45]) cube([2, 2, 28]);
|
||||
// Joins motor holder and rod plate
|
||||
translate(v = [-29,-21,0]) cube(size = [14,30,10]);
|
||||
}
|
||||
// Front holding part
|
||||
translate(v = [0,10,0]) cylinder(h = 10, r=8, $fn=80);
|
||||
translate(v = [0,20,5])cube(size = [16,20,10], center=true);
|
||||
translate(v = [0,30,0])cylinder(h = 10, r=8, $fn=80);
|
||||
}
|
||||
|
||||
module y_motor_holes(){
|
||||
translate(v = [29,-21+50,0]){
|
||||
// Screw head holes
|
||||
translate(v = [-15.5,-15.5,-1]) cylinder(h = 10, r=1.8, $fn=20);
|
||||
translate(v = [-15.5,+15.5,-1]) cylinder(h = 10, r=1.8, $fn=20);
|
||||
// Screw holes
|
||||
translate(v = [-15.5,-15.5,7]) cylinder(h = 7, r=3.5, $fn=30);
|
||||
translate(v = [-15.5,+15.5,7]) cylinder(h = 25, r=3.5, $fn=30);
|
||||
}
|
||||
translate(v = [0,10,-1]) cylinder(h = 12, r=4.1, $fn=50);
|
||||
translate(v = [0,30,-1]) cylinder(h = 12, r=4.1, $fn=50);
|
||||
|
||||
//endstop
|
||||
translate([25,29,0]) cylinder(h = 29, r=8, $fn=20);
|
||||
|
||||
#translate([18,45,15]) rotate([90,0,0]) cylinder(h = 10, r=0.8, $fn=20);
|
||||
translate([18,42.2,15]) rotate([90,0,0]) cylinder(h = 2, r1=1.2, r2=0.8, $fn=20);
|
||||
|
||||
#translate([18,45,24.5]) rotate([90,0,0]) cylinder(h = 10, r=0.8, $fn=20);
|
||||
translate([18,42.2,24.5]) rotate([90,0,0]) cylinder(h = 2, r1=1.2, r2=0.8, $fn=20);
|
||||
|
||||
// endstop corner cutout
|
||||
translate([-5-2,30,28]) rotate([0,45,0]) cube([15, 19, 15]);
|
||||
translate([-1,41,10]) cube([15, 5, 19]);
|
||||
translate([27,33,0]) rotate([0,0,45]) cube([5, 5, 28]);
|
||||
translate([12-2,28,10.01]) rotate([0,0,45]) cube([5, 5, 28]);
|
||||
|
||||
translate([19,32,0]) rotate([0,30,0]) cube([8, 20, 18]);
|
||||
translate([24.5-2,32,17]) rotate([0,45,0]) cube([2, 20, 2]);
|
||||
|
||||
translate([23-2,32,29]) rotate([0,45,0]) cube([5, 20, 5]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//#translate([18,40,10]) cube([8, 5, 5]);
|
||||
|
||||
// Final part
|
||||
module y_motor(){
|
||||
difference(){
|
||||
y_motor_base();
|
||||
y_motor_holes();
|
||||
}
|
||||
}
|
||||
|
||||
y_motor();
|
||||
// PRUSA iteration3
|
||||
// Y motor mount
|
||||
// GNU GPL v3
|
||||
// Josef Průša <iam@josefprusa.cz> and contributors
|
||||
// http://www.reprap.org/wiki/Prusa_Mendel
|
||||
// http://prusamendel.org
|
||||
|
||||
//include <configuration.scad>
|
||||
|
||||
module y_motor_base(){
|
||||
|
||||
union()
|
||||
{
|
||||
// Motor holding part
|
||||
translate(v = [29,-21+50,0]){
|
||||
|
||||
difference()
|
||||
{
|
||||
union()
|
||||
{
|
||||
translate(v = [-21+4.5,0,5]) cube(size = [9,31,10], center=true);
|
||||
translate(v = [-15.5,-15.5,0]) cylinder(h = 10, r=5.5, $fn=50);
|
||||
translate(v = [-15.5,+15.5,0]) cylinder(h = 10, r=5.5, $fn=50);
|
||||
translate([-21,7,0]) rotate([0,0,45]) cube([2, 2, 10]);
|
||||
|
||||
//end stop
|
||||
translate(v = [-10.5,+15.5,0]) cylinder(h = 10, r=5.5, $fn=50);
|
||||
translate([-12,0,0]) cube([7, 15, 10]);
|
||||
translate([-16,16,0]) cube([6, 5, 10]);
|
||||
translate([-21+6,8,0]) cube([12-2, 5, 28]);
|
||||
translate([-21,8-5,0]) cube([8, 10, 28]);
|
||||
translate([-21+9.5-2,7,0]) rotate([0,0,45]) cube([2, 2, 28]);
|
||||
// Joins motor holder and rod plate
|
||||
translate(v = [-29,-21,0]) cube(size = [14,30,10]);
|
||||
}
|
||||
//selective infill
|
||||
translate([-14.5,5,0.3]) cube([0.1,5.5,27]);
|
||||
translate([-16.5,5,0.3]) cube([0.1,5.5,27]);
|
||||
translate([-18.5,5,0.3]) cube([0.1,5.5,25]);
|
||||
translate([-10,9,1]) cube([0.1,3,26.3]);
|
||||
translate([-8,9,6]) cube([0.1,3,21.3]);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
// Front holding part
|
||||
translate(v = [0,10,0]) cylinder(h = 10, r=8, $fn=80);
|
||||
translate(v = [0,20,5])cube(size = [16,20,10], center=true);
|
||||
translate(v = [0,30,0])cylinder(h = 10, r=8, $fn=80);
|
||||
}
|
||||
|
||||
module y_motor_holes(){
|
||||
translate(v = [29,-21+50,0]){
|
||||
// Screw head holes
|
||||
translate(v = [-15.5,-15.5,-1]) cylinder(h = 10, r=1.8, $fn=20);
|
||||
translate(v = [-15.5,+15.5,-1]) cylinder(h = 10, r=1.8, $fn=20);
|
||||
// Screw holes
|
||||
translate(v = [-15.5,-15.5,7]) cylinder(h = 7, r=3.5, $fn=30);
|
||||
translate(v = [-15.5,+15.5,7]) cylinder(h = 25, r=3.5, $fn=30);
|
||||
}
|
||||
translate(v = [0,10,-1]) cylinder(h = 12, r=4.2, $fn=50);
|
||||
translate(v = [0,30,-1]) cylinder(h = 12, r=4.2, $fn=50);
|
||||
|
||||
//endstop
|
||||
translate([25,29,0]) cylinder(h = 29, r=8, $fn=20);
|
||||
|
||||
translate([18,45,15]) rotate([90,0,0]) cylinder(h = 10, r=0.8, $fn=20);
|
||||
translate([18,42.2,15]) rotate([90,0,0]) cylinder(h = 2, r1=1.2, r2=0.8, $fn=20);
|
||||
|
||||
translate([18,45,24.5]) rotate([90,0,0]) cylinder(h = 10, r=0.8, $fn=20);
|
||||
translate([18,42.2,24.5]) rotate([90,0,0]) cylinder(h = 2, r1=1.2, r2=0.8, $fn=20);
|
||||
|
||||
// endstop corner cutout
|
||||
translate([-10,30,28]) rotate([0,45,0]) cube([15, 19, 15]);
|
||||
translate([-1,41,10]) cube([15, 5, 19]);
|
||||
translate([27,33,0]) rotate([0,0,45]) cube([5, 5, 28]);
|
||||
translate([7,28,10.01]) rotate([0,0,45]) cube([5, 5, 28]);
|
||||
|
||||
translate([19,32,0]) rotate([0,30,0]) cube([8, 20, 18]);
|
||||
translate([24.5-2,32,17]) rotate([0,45,0]) cube([2, 20, 2]);
|
||||
|
||||
translate([23-2,32,29]) rotate([0,45,0]) cube([5, 20, 5]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Final part
|
||||
module y_motor(){
|
||||
difference()
|
||||
{
|
||||
y_motor_base();
|
||||
y_motor_holes();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
y_motor();
|
||||
|
||||
|
|
|
|||
|
|
@ -13,49 +13,46 @@ module z_bottom_base(){
|
|||
}
|
||||
|
||||
module z_bottom_fancy(){
|
||||
// corner cutouts
|
||||
translate([0.5,-2.5,0]) rotate([0,0,-45-180]) translate([-15,0,-1]) cube([30,30,51]);
|
||||
translate([0.5,40-0.5+5,0]) rotate([0,0,-45+90]) translate([-15,0,-1]) cube([30,30,51]);
|
||||
//translate([-4,40+5,5]) rotate([0,0,-35-0]) translate([0,0,0.1]) cube([30,30,51]);
|
||||
//translate([-4+11,40+5+5,0]) rotate([0,0,-45-0]) translate([0,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([20,-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,0]) rotate([0,0,-45-90]) translate([-15,0,-1]) cube([30,30,51]);
|
||||
translate([50-2.5,-5+2.5,0]) rotate([0,0,-45-90]) translate([-15,0,-1]) cube([30,30,51]);
|
||||
//translate([50-1.5,10-1.5,0]) 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([30,0,5.5]) rotate([0,-45,0]) translate([0,-5,0]) cube([30,60,30]);
|
||||
// corner cutouts
|
||||
translate([0.5,-2.5,0]) rotate([0,0,-45-180]) translate([-15,0,-1]) cube([30,30,51]);
|
||||
translate([0.5,40-0.5+5,0]) 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([20,-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,0]) rotate([0,0,-45-90]) translate([-15,0,-1]) cube([30,30,51]);
|
||||
translate([50-2.5,-5+2.5,0]) rotate([0,0,-45-90]) translate([-15,0,-1]) cube([30,30,51]);
|
||||
|
||||
// Stiffner cut out
|
||||
translate([30,0,5.5]) rotate([0,-45,0]) translate([0,-5,0]) cube([30,60,30]);
|
||||
}
|
||||
|
||||
module z_bottom_holes(){
|
||||
// Frame mounting screw holes
|
||||
translate([-1,10,10+5]) rotate([0,90,0]) cylinder(h = 20, r=1.8, $fn=30);
|
||||
translate([-1,10+20,10+5]) rotate([0,90,0]) cylinder(h = 20, r=1.8, $fn=30);
|
||||
translate([-1,10+10,10+20+5]) rotate([0,90,0]) cylinder(h = 20, r=1.8, $fn=30);
|
||||
// Frame mounting screw holes
|
||||
translate([-1,10,10+5]) rotate([0,90,0]) cylinder(h = 20, r=1.8, $fn=30);
|
||||
translate([-1,10+20,10+5]) rotate([0,90,0]) cylinder(h = 20, r=1.8, $fn=30);
|
||||
translate([-1,10+10,10+20+5]) rotate([0,90,0]) cylinder(h = 20, r=1.8, $fn=30);
|
||||
|
||||
// Frame mounting screw head holes
|
||||
translate([4,10,10+5]) rotate([0,90,0]) cylinder(h = 20, r=3.1, $fn=30);
|
||||
translate([4,10+20,10+5]) rotate([0,90,0]) cylinder(h = 20, r=3.1, $fn=30);
|
||||
translate([4,10+10,10+20+5]) rotate([0,90,0]) cylinder(h = 20, r=3.1, $fn=30);
|
||||
translate([4,10+10-3.1,10+20+5]) cube([10,6.2,10]);
|
||||
// Frame mounting screw head holes
|
||||
translate([4,10,10+5]) rotate([0,90,0]) cylinder(h = 20, r=3.1, $fn=30);
|
||||
translate([4,10+20,10+5]) rotate([0,90,0]) cylinder(h = 20, r=3.1, $fn=30);
|
||||
translate([4,10+10,10+20+5]) rotate([0,90,0]) cylinder(h = 20, r=3.1, $fn=30);
|
||||
translate([4,10+10-3.1,10+20+5]) cube([10,6.2,10]);
|
||||
|
||||
// Z rod holder
|
||||
translate([25+4.3,3,-1]) rotate([0,0,0]) cylinder(h = 50, r=4.125, $fn=15);
|
||||
translate([25+4.3-1,3,0.6]) cube([2,10,7]); // it's bit up because it helps with printing
|
||||
// Z rod holder
|
||||
translate([25+4.3,3,-1]) rotate([0,0,0]) cylinder(h = 50, r=4.125, $fn=15);
|
||||
translate([25+4.3,3,-1]) rotate([0,0,0]) cylinder(h = 1.6, r1=5, r2=4.125, $fn=15);
|
||||
translate([25+4.3-1,3,0.6]) cube([2,10,7]); // 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.8, $fn=30);
|
||||
|
||||
translate([15.5,15.5,-1]) cylinder(h = 20, r=1.8, $fn=30);
|
||||
translate([15.5,-15.5,-1]) cylinder(h = 20, r=1.8, $fn=30);
|
||||
translate([-15.5,15.5,-1]) cylinder(h = 20, r=1.8, $fn=30);
|
||||
translate([-15.5,-15.5,-1]) cylinder(h = 20, r=1.8, $fn=30);
|
||||
|
||||
|
||||
translate([0,0,-1]) cylinder(h = 20, r=12, $fn=30);
|
||||
// motor mounting
|
||||
translate([25+4.3,20,-1]){
|
||||
|
||||
translate([15.5,15.5,-1]) cylinder(h = 20, r=1.8, $fn=30);
|
||||
translate([15.5,-15.5,-1]) cylinder(h = 20, r=1.8, $fn=30);
|
||||
translate([-15.5,15.5,-1]) cylinder(h = 20, r=1.8, $fn=30);
|
||||
translate([-15.5,-15.5,-1]) cylinder(h = 20, r=1.8, $fn=30);
|
||||
|
||||
translate([0,0,-1]) cylinder(h = 20, r=12, $fn=30);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -77,6 +74,20 @@ module z_bottom_left(){
|
|||
}
|
||||
}
|
||||
|
||||
//z_bottom_holder();
|
||||
#z_bottom_right();
|
||||
#z_bottom_left();
|
||||
|
||||
z_bottom_right();
|
||||
z_bottom_left();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -7,39 +7,35 @@
|
|||
|
||||
|
||||
module z_top_base(){
|
||||
translate([0,-5,0]) cube([8,45,16]); // plate touching the base
|
||||
translate([0,-5,0]) cube([30,4.01,12]); // plate touching the base
|
||||
translate([0,-5,0]) cube([38,45,5]); // plate touching the base
|
||||
translate([0,-5,0]) cube([8,45,16]); // plate touching the base
|
||||
translate([0,-5,0]) cube([30,4.01,12]); // plate touching the base
|
||||
translate([0,-5,0]) cube([38,45,5]); // plate touching the base
|
||||
}
|
||||
|
||||
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]);
|
||||
translate([0.5,40-0.5,0]) rotate([0,0,-45+90]) translate([-15,0,-1]) cube([30,30,51]);
|
||||
|
||||
|
||||
translate([-13,40+5+10.2,0]) rotate([0,0,-45-0]) translate([0,0,-1]) cube([30,30,51]); // frame side angle
|
||||
translate([8,28,0]) translate([0,0,-1]) cube([50,50,51]);
|
||||
// Corner cutouts
|
||||
translate([0.5,0.5,0]) rotate([0,0,-45-180]) translate([-15,0,-1]) cube([30,30,51]);
|
||||
|
||||
translate([4,0,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,4,10]) rotate([0,-45, 0]) translate([0,-5,0]) cube([30,50,30]);
|
||||
translate([-13,40+5+10.2,0]) rotate([0,0,-45-0]) translate([0,0,-1]) cube([30,30,51]); // frame side angle
|
||||
translate([8,28,0]) translate([0,0,-1]) cube([50,50,51]);
|
||||
|
||||
translate([38-2.5,-5+2.5,0]) rotate([0,0,-45-90]) translate([-15,0,-1]) cube([30,30,51]);
|
||||
translate([35,26,0]) rotate([0,0,-45]) translate([-15,0,-1]) cube([30,30,51]); // outer corner
|
||||
translate([0,0,5]) rotate([45+180,0,0]) rotate([0,0,-45+90]) translate([0,0,-15]) cube([30,30,30]);
|
||||
translate([4,0,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,4,10]) rotate([0,-45, 0]) translate([0,-5,0]) cube([30,50,30]);
|
||||
|
||||
// Stiffner cut out
|
||||
translate([30,0,5.5]) rotate([0,-45,0]) translate([0,-5,0]) cube([30,50,30]);
|
||||
//easy cleanup fix
|
||||
translate([0.5,0,0.5]) rotate([0,45,0]) translate([-2.5,0,-5]) cube([5,40,5]);
|
||||
translate([38-2.5,-5+2.5,0]) rotate([0,0,-45-90]) translate([-15,0,-1]) cube([30,30,51]);
|
||||
translate([35,26,0]) rotate([0,0,-45]) translate([-15,0,-1]) cube([30,30,51]); // outer corner
|
||||
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([30,0,5.5]) rotate([0,-45,0]) translate([0,-5,0]) cube([30,50,30]);
|
||||
}
|
||||
|
||||
module z_top_holes(){
|
||||
// Screw holes frame
|
||||
translate([-1,10,10]) rotate([0,90,0]) cylinder(h = 20, r=1.8, $fn=30);
|
||||
translate([-1,10+20,10]) rotate([0,90,0]) cylinder(h = 20, r=1.8, $fn=30);
|
||||
|
||||
// Screw holes frame
|
||||
translate([-1,10,10]) rotate([0,90,0]) cylinder(h = 20, r=1.8, $fn=30);
|
||||
translate([-1,10+20,10]) rotate([0,90,0]) cylinder(h = 20, r=1.8, $fn=30);
|
||||
|
||||
|
||||
// Screw heads
|
||||
translate([4,10,10]) rotate([0,90,0]) cylinder(h = 20, r=3.1, $fn=30);
|
||||
|
|
@ -51,14 +47,19 @@ module z_top_holes(){
|
|||
translate([25+4.3,3.2,-1]) rotate([0,0,0]) cylinder(h = 50, r=4.1, $fn=15);
|
||||
|
||||
|
||||
|
||||
// odlehceni A
|
||||
translate([16,10,-1]) rotate([0,0,0]) cylinder(h = 50, r=8, $fn=6); // odlehceni
|
||||
translate([16,28,-1]) rotate([0,0,0]) cylinder(h = 50, r=8, $fn=6); // odlehceni
|
||||
|
||||
translate([25+4.3,3.2+17,-1]) rotate([0,0,0]) cylinder(h = 50, r=5, $fn=15); // screw hole
|
||||
// material saving cut
|
||||
translate([16,10,-1]) rotate([0,0,0]) cylinder(h = 50, r=8, $fn=6);
|
||||
translate([16,28,-1]) rotate([0,0,0]) cylinder(h = 50, r=8, $fn=6);
|
||||
translate([25+4.3,3.2+17,-1]) 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,7]); // it's bit up because it helps with printing
|
||||
translate([25+4.3-1,3,-1]) cube([2,15,7]); // 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]);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -71,7 +72,7 @@ module z_top_right(){
|
|||
}
|
||||
|
||||
module z_top_left(){
|
||||
translate([0,-13,0]) mirror([0,1,0])
|
||||
translate([0,-15,0]) mirror([0,1,0])
|
||||
difference(){
|
||||
z_top_base();
|
||||
z_top_fancy();
|
||||
|
|
@ -79,6 +80,7 @@ module z_top_left(){
|
|||
}
|
||||
}
|
||||
|
||||
// Final part
|
||||
z_top_left();
|
||||
z_top_right();
|
||||
// Final parts
|
||||
z_top_left();
|
||||
z_top_right();
|
||||
|
||||
|
|
|
|||
|
|
@ -25,9 +25,9 @@ difference()
|
|||
{
|
||||
union()
|
||||
{
|
||||
translate(v=[0, 0, 1]) cylinder(r1=8, r2=4.5, h = 4);
|
||||
translate(v=[0, 0, 1]) cylinder(r1=8, r2=4.6, h = 4);
|
||||
cylinder(r=8, h = 1, $fn=60);
|
||||
}
|
||||
translate(v=[0, 0, -1]) cylinder(r=4.2, h = 7, $fn=60);
|
||||
cylinder(r1=4.3, r2=4.2, h = 1, $fn=60);
|
||||
cylinder(r1=4.5, r2=4.2, h = 1, $fn=60);
|
||||
}
|
||||
Loading…
Reference in New Issue