diff --git a/Printed-Parts/scad/Extruder-cable-clip.scad b/Printed-Parts/scad/Extruder-cable-clip.scad new file mode 100644 index 0000000..b683a39 --- /dev/null +++ b/Printed-Parts/scad/Extruder-cable-clip.scad @@ -0,0 +1,49 @@ +// PRUSA iteration4 +// Extruder cable clip +// GNU GPL v3 +// Josef Průša and contributors +// http://www.reprap.org/wiki/Prusa_Mendel +// http://prusamendel.org + +module extruder_cable_clip() +{ + difference() + { + union() + { + // body shape + translate([-6,28,28]) rotate([0,90,0]) cylinder(h=6,r=13,$fn=30); + translate([-10,28,28]) rotate([0,90,0]) cylinder(h=4,r1=8,r2=13, $fn=30); + translate([0,16.6,28]) cube([2.9,22.8,7]); + } + + // bottom cut and shape + translate([-15,7,13]) cube([30,40,15]); + translate([-20,28,28]) rotate([0,90,0]) cylinder(h=40,r=5.5, $fn=30); + + // screws + translate([-2.7,20.0,25]) rotate([0,0,90]) cylinder(h= 10, r = 1.6, $fn=50); + translate([-2.7,36,25]) rotate([0,0,90]) cylinder( h = 10, r = 1.6, $fn=50); + translate([-2.7,36,32]) rotate([0,0,90]) cylinder( h = 13, r = 3.1, $fn=30); + translate([-2.7,20.0,32]) rotate([0,0,90]) cylinder( h = 13, r = 3.1, $fn=30); + + // screw heads opening + translate([-2.7,16.9,35]) cube([10,6.2,15]); + translate([-2.7,32.9,35]) cube([10,6.2,15]); + } + + difference() + { + // cable grip + translate([-8,28,28]) rotate([0,90,0]) cylinder( h = 10, r = 6, $fn=30); + translate([-20,28,28]) rotate([0,90,0]) cylinder( h = 40, r = 5, $fn=30); + translate([-15,7,13]) cube([30,40,15]); + translate([-6,7,13]) cube([2,40,25]); + translate([-2,7,13]) cube([2,40,25]); + } + + +} + + +translate([6,-28,-28]) extruder_cable_clip(); \ No newline at end of file diff --git a/Printed-Parts/scad/Heatbed-cable-clip.scad b/Printed-Parts/scad/Heatbed-cable-clip.scad new file mode 100644 index 0000000..423ac8d --- /dev/null +++ b/Printed-Parts/scad/Heatbed-cable-clip.scad @@ -0,0 +1,60 @@ +// PRUSA iteration4 +// Heatbed cable clip +// GNU GPL v3 +// Josef Průša and contributors +// http://www.reprap.org/wiki/Prusa_Mendel +// http://prusamendel.org + + +module heatbed_cable_clip() +{ + +difference() +{ + + union() + { + difference() + { + union() + { + // body base + translate([75,99,28]) rotate([90,0,0]) cylinder( h = 15, r = 13, $fn=30); + translate([75,101,28]) rotate([90,0,0]) cylinder( h = 2, r1=9,r2 = 13, $fn=30); + } + + // screws + translate([67,95,14]) rotate([0,0,0]) cylinder(h=35,r=1.6,$fn=50); + translate([83,95,14]) rotate([0,0,0]) cylinder(h=35,r=1.6,$fn=50); + + // cut flat and shape + translate([60,82,14]) cube([30,20,14]); + translate([60,72,20]) cube([30,20,30]); + } + translate([62.75,88.2,28]) cube([24.5,3.8,7]); + } + + // cable opening + translate([75,105,28]) rotate([90,90,0]) cylinder(h=30,r=4.0,$fn=30); + + // screws opening + translate([67-3.2,90.2,35]) cube([6.4,5,7]); + translate([83-3.2,90.2,35]) cube([6.4,5,7]); + + // screw heads + translate([67,95,31]) rotate([0,0,0]) cylinder(h=10,r=3.2,$fn=30); + translate([83,95,31]) rotate([0,0,0]) cylinder(h=10,r=3.2,$fn=30); +} + +difference() +{ + // cable grip + translate([75,99,28]) rotate([90,90,0]) cylinder(h=10,r=4.5,$fn=30); + translate([75,105,28]) rotate([90,90,0]) cylinder(h=30,r=3.5,$fn=30); + translate([60,72,14]) cube([30,40,14]); + translate([60,90,24]) cube([30,4,14]); + translate([60,95,24]) cube([30,3,14]); +} +} + +translate([-75,-99,-28]) heatbed_cable_clip(); \ No newline at end of file diff --git a/Printed-Parts/scad/Rambo-Hinges.scad b/Printed-Parts/scad/Rambo-Hinges.scad new file mode 100644 index 0000000..39e2bad --- /dev/null +++ b/Printed-Parts/scad/Rambo-Hinges.scad @@ -0,0 +1,50 @@ +// PRUSA iteration4 +// RAMBo cover hinges +// GNU GPL v3 +// Josef Průša 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); + cylinder( h = 21, r = 4.5, $fn=30); + translate([0,0,26]) cylinder( h = 2, r1 = 2.4, r2 = 1.8, $fn=30); + translate( [ -5 , -11 , 0 ] ) cube( [ 7 , 14 , 21 ] ); + } + // M3 screw hole + translate( [ -12.5 , -0 , 17 ] ) rotate( [0,90,0] ) cylinder( h = 20, r = 1.75, $fn=30); + translate( [ -1.5 , -0 , 17 ] ) rotate( [0,90,0] ) cylinder( h = 9, r = 3, $fn=30); + // angle cut + translate([-3.9,-20,-1]) rotate([0,0,50]) 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 = 4.5, $fn=30); + translate( [ 0 , 6 , 15 ] ) cylinder( h = 2, r1 = 2.4, r2=1.8, $fn=30); + translate( [ -5 , 3 , 0 ] ) cube( [ 7 , 13 , 10 ] ); + } + // M3 screw + translate( [ -0.5 , 6 , 4 ] ) rotate( [0,90,0] ) cylinder( h = 20, r = 3, $fn=30); + translate( [ -12 , 6 , 4 ] ) rotate( [0,90,0] ) cylinder( h = 20, r = 1.75, $fn=30); + // angle cut + translate([-5.8,20,-1]) rotate([0,0,-50]) cube([20,5,20]); + } +} + + +translate([0,-4,0]) upper_hinge(); +lower_hinge(); \ No newline at end of file diff --git a/Printed-Parts/scad/Rambo-base.scad b/Printed-Parts/scad/Rambo-base.scad new file mode 100644 index 0000000..f0f082f --- /dev/null +++ b/Printed-Parts/scad/Rambo-base.scad @@ -0,0 +1,287 @@ +// PRUSA iteration4 +// RAMBo base +// GNU GPL v3 +// Josef Průša 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]); + + // 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]); + + // raspberry + translate([21,81,0]) cylinder( h = 4.5,r = 2.5,$fn=30); + translate([21+58,81,0]) cylinder( h = 4.5,r = 2.5,$fn=30); + + // heatbed cable mounting reinforcement + translate([63,86.0,0.5]) cube([15,5,34.5]); + translate([75,99,28]) rotate([90,0,0]) cylinder(h=15,r=13,$fn=30); + translate([75,101,28]) rotate([90,0,0]) cylinder(h=2,r1=9,r2=13,$fn=30); + translate([70.3,88,13.2]) rotate([-45,0,0]) cube([9.5,5,9]); + translate([70.3,84,16.2]) rotate([-45,0,0]) cube([9.5,8,5]); + + + + + 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([11,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]); + + // 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); + + // extruder cable holder + translate([0,0,15]) cube([5,40,20]); + translate([5,28,28]) rotate([0,90,0]) cylinder(h=5,r1=10,r2=8,$fn=30); + difference() + { + translate([-2,0,28]) rotate([0,45,0]) cube([9.8,25,9.8]); + translate([-5,-5,15]) cube([5,40,20]); + translate([10,-5,15]) cube([5,40,20]); + } + translate([-6,28,28]) rotate([0,90,0]) cylinder(h=6,r=13,$fn=30); + translate([-10,28,28]) rotate([0,90,0]) cylinder(h=4,r1=8,r2=13,$fn=30); + + difference() + { + translate([-5.5,23.5,16]) rotate([0,45,0]) cube([8,9,8]); + translate([1,0,10]) cube([5,40,20]); + } +} + + +module ventilation_holes() +{ + for ( i = [-5 : 8] ) + { + translate([46 + (i*5.5),10.5,-1]) cube([3.65,19+49.0,1.2]); + translate([46 + (i*5.5),10.5,-1]) cube([3.65,18,10]); + translate([46 + (i*5.5),10.5+25,-1]) cube([3.65,18,10]); + translate([46 + (i*5.5),10.5+50,-1]) cube([3.65,18,10]); + } +} + + +module cutouts(){ + + + // extruder cable holder + translate([1.5,7,14.8]) rotate([0,45,0]) cube([3,40,5]); + translate([-20,28,28]) rotate([0,90,0]) cylinder( h = 40,r = 5.5,$fn=30); + translate([-15,7,35]) cube([30,40,15]); + translate([-15,25,30]) cube([30,6,8]); + + translate([-15,12,28]) cube([15,30,8]); + translate([-12,16.5,28]) cube([15,23,8]); + translate([-3,28,28]) rotate([35,90,0]) cylinder( h = 24,r = 1.6,$fn=30); + + translate([-2.7,20.0,22]) rotate([0,0,90]) cylinder( h = 10,r = 1.6,$fn=30); + translate([-2.7,20.0,12]) rotate([0,0,90]) cylinder( h = 13,r = 3.1,$fn=6); + translate([-2.7,36,10]) rotate([0,0,90]) cylinder( h = 33,r = 1.6,$fn=30); + translate([-2.7,36,12]) rotate([0,0,90]) cylinder( h = 13,r = 3.1,$fn=6); + + // 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); + + + + // new heatbed cable holder + translate([75,105,28]) rotate([90,90,0]) cylinder(h=30,r=4.0,$fn=30); + translate([67,95,15.5]) rotate([0,0,0]) cylinder(h=10,r=3.2,$fn=6); + translate([83,95,15.5]) rotate([0,0,0]) cylinder(h=10,r=3.2,$fn=6); + translate([67,95,14]) rotate([0,0,0]) cylinder(h=15,r=1.6,$fn=30); + translate([83,95,14]) rotate([0,0,0]) cylinder(h=15,r=1.6,$fn=30); + translate([60,92,28]) cube([30,13,14]); + translate([60,80,35]) cube([30,13,14]); + translate([72.5,80,30]) cube([5,13,14]); + translate([75,92,25]) rotate([120,0,0]) cylinder(h=25,r=1.6,$fn=30); + translate([62.5,88,28]) cube([25,15,14]); + + // 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 = 6,r2=3.2,$fn=6); + translate([102.5,14,-1]) cylinder( h = 1.5,r1 = 6,r2=3.2,$fn=6); + translate([102.5,75,-1]) cylinder( h = 1.5,r1 = 6,r2=3.2,$fn=6); + translate([7.5,75,-1]) cylinder( h = 1.5,r1 = 6,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([6,80,7]) rotate([0,0,45]) cube([5,5,24] ); + + // 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] ); +} + + + + +module RAMBo_base() +{ + difference() + { + difference() + { + main_body(); + cutouts(); + } + + //BottomCubic(); + translate([14.5,10,-2]) cube([4,24,10]); + translate([16.5,10,-2]) cylinder( h = 20,r = 2,$fn=30); + translate([16.5,34,-2]) cylinder( h = 20,r = 2,$fn=30); + + // lightening slots + translate([100,21,2] ) cube([5,48,5]); + translate([3,21,2] ) cube([4.5,48,5]); + + translate([115,68,1.5]) rotate([0,0,90]) linear_extrude(height = 0.8) + {text("R1",font = "helvetica:style=Bold",size=6,center=true); } + } +} + + + + + +RAMBo_base(); + + + + + + + + + diff --git a/Printed-Parts/scad/Rambo-doors.scad b/Printed-Parts/scad/Rambo-doors.scad new file mode 100644 index 0000000..c93377a --- /dev/null +++ b/Printed-Parts/scad/Rambo-doors.scad @@ -0,0 +1,130 @@ +// PRUSA iteration4 +// RAMBo doors +// GNU GPL v3 +// Josef Průša and contributors +// http://www.reprap.org/wiki/Prusa_Mendel +// http://prusamendel.org + + +module body() +{ + // side panels + cube([105.5,87.5,1.5]); + cube([105.5,2,18]); + cube([2,89.5,18]); + + // corner reinforcement + translate([98,1,0]) cube([7.5,5,18]); + translate([0.5,0.5,0]) cube([5,6.5,18]); + 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,18]); + + // 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,14.8]) cylinder( h = 3.2,r1 = 1.8,r2= 3.5,$fn=30); + translate([102,3.5,14.8]) cylinder( h = 3.2,r1 = 1.8,r2= 3.5,$fn=30); +} + +module ventilation_holes() +{ + for ( i = [0 : 9] ) + { + translate([40 + (i*6),10.5,-1]) cube([3.65,19+50,1.2]); + translate([40 + (i*6),10.5,-1]) cube([3.65,19,10]); + translate([40 + (i*6),10.5+25,-1]) cube([3.65,19,10]); + translate([40 + (i*6),10.5+50,-1]) cube([3.65,19,10]); + } + for ( i = [0 : -4] ) + { + translate([40 + (i*6),10.5,-1]) cube([3.65,19+50,1.2]); + } + for ( i = [-6 : -7] ) + { + translate([46 + (i*6),20.5,-1]) cube([3.65,19+40,1.2]); + } + translate([15,10,1]) cube([20,55,1.5]); +} + +module cutouts() +{ + // door closing screw + translate([58.5,4,1]) cylinder( h = 18,r = 1.8,$fn=30); + translate([58.5,4,14.5]) cylinder( h = 2.6,r1 = 1.8,r2=2.2,$fn=30); + translate([58.5,4,11.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,80,-1]) rotate([-45,0,0]) cube([22.5,8,18]); + + // upper hinge + translate( [2,80,6] ) cube([19.5,10,10]); + translate( [-2,88,5] ) rotate([50,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); + translate([-5,87.5,4.5]) rotate([0,90,0]) cylinder( h = 26.5,r = 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,14.9]) cylinder( h = 3.2,r1 = 1.2,r2= 2.8,$fn=30); + translate([102,3.5,14.9]) cylinder( h = 3.2,r1 = 1.2,r2= 2.8,$fn=30); + + // M3 NUT + translate( [55.65,0.5,12] ) 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.5] ) rotate([0,0,70]) cube([10,10,50]); + translate( [61,12,1.5] ) rotate([0,0,-70]) cube([10,10,50]); + translate( [16,2,1.5] ) 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]); + + translate([30,79,1]) rotate([0,0,-90]) linear_extrude(height = 0.8) + { text("R1",font = "helvetica:style=Bold",size=6,center=true); } +} +} + + + +RAMBo_doors(); + + + + + + + + + + \ No newline at end of file diff --git a/Printed-Parts/scad/bearing.scad b/Printed-Parts/scad/bearing.scad new file mode 100644 index 0000000..089808f --- /dev/null +++ b/Printed-Parts/scad/bearing.scad @@ -0,0 +1,83 @@ +// PRUSA iteration3 +// Bearing holders +// GNU GPL v3 +// Josef Průša and contributors +// http://www.reprap.org/wiki/Prusa_Mendel +// http://prusamendel.org + +use + +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_holes_nozip(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); + } + +} + + +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); +horizontal_bearing_holes_nozip(1); \ No newline at end of file diff --git a/Printed-Parts/scad/cable-holder.scad b/Printed-Parts/scad/cable-holder.scad new file mode 100644 index 0000000..9da327d --- /dev/null +++ b/Printed-Parts/scad/cable-holder.scad @@ -0,0 +1,36 @@ +//translate([0,0,0]) cylinder(r=1.5, h=40, $fn=30); +//translate([0,0,20]) cylinder(r=3.1, h=4, $fn=30); + +//translate([0,-4,0]) cube([3,10.0,25]); +module zip() +{ +translate([-5,-8,0]) cube([10,4,4]); +translate([-12.5,-5,0]) cube([10,20.0,4]); +translate([2.5,-5,0]) cube([10,20.0,4]); +translate([2,-6,0]) rotate([0,0,45]) cube([5,2,4]); +translate([-6,-2.4,0]) rotate([0,0,-45]) cube([5,2,4]); +} + +difference() +{ + union() + { + translate([0,5,0]) cylinder(r=10, h=25, $fn=30); + translate([-3,-9,0]) cube([6,10,25]); + } + + translate([0,10,-1]) cylinder(r=6, h=50, $fn=30); + translate([0,0,-1]) cylinder(r=1.6, h=50, $fn=30); + translate([3,-5,-1]) cube([10,20.0,50]); + translate([-13,-5,-1]) cube([10,20.0,50]); + + translate([-10,-18,-1]) rotate([-10,0,0]) cube([20,10,50]); + + translate([0,-3.1,3]) rotate([-10,0,0]) zip(); + translate([0,-1.8,10.5]) rotate([-10,0,0]) zip(); + translate([0,-0.5,18]) rotate([-10,0,0]) zip(); + + translate([-13,-9,-10]) rotate([45,0,0]) cube([30,10.0,10]); + translate([-13,-9,20.5]) rotate([35,0,0]) cube([30,10.0,10]); + +} \ No newline at end of file diff --git a/Printed-Parts/scad/polyholes.scad b/Printed-Parts/scad/polyholes.scad new file mode 100644 index 0000000..c58aedb --- /dev/null +++ b/Printed-Parts/scad/polyholes.scad @@ -0,0 +1,42 @@ +// +// Mendel90 +// +// GNU GPL v2 +// nop.head@gmail.com +// hydraraptor.blogspot.com +// +// See http://hydraraptor.blogspot.com/2011/02/polyholes.html +// +function sides(r) = max(round(4 *r),3); +function correctedRadius(r,n) = 0.1 + r / cos(180 / n); +function correctedDiameter(d) = 0.2 + d / cos(180 / sides(d / 2)); + +module polyCircle(r, center = false) { + n = sides(r); + circle(r = correctedRadius(r,n), $fn = n, center = center); +} + +module poly_circle(r, center = false) { + polyCircle(r, center); +} + +module polyCylinder(r, h, center = false) { + n = sides(r); + cylinder(h = h, r = correctedRadius(r,n), $fn = n, center = center); +} + +module poly_cylinder(r, h, center = false) { + polyCylinder(r,h,center); +} + +module polydCylinder(r, center = false) { + n = sides(r); + r = correctedRadius(r,n); + cylinder(h = h, r = r, $fn = n, center = center); + translate([0, -r, 0]) + cube([r, 2 * r, h]); +} + +module poly_d_cylinder(r, center = false) { + polydCylinder(r,center); +} diff --git a/Printed-Parts/scad/x-carriage-back.scad b/Printed-Parts/scad/x-carriage-back.scad new file mode 100644 index 0000000..78b88bc --- /dev/null +++ b/Printed-Parts/scad/x-carriage-back.scad @@ -0,0 +1,147 @@ +// PRUSA iteration4 +// X carriage back 2.5 upgrade +// GNU GPL v3 +// Josef Průša and contributors +// http://www.reprap.org/wiki/Prusa_Mendel +// http://prusamendel.org + +module m3head() +{ +intersection(){ +translate([30,5,9])cylinder(r=3.1,h = 25, $fn=30); // head cut +translate([30,5,17-3.5]) cube([6.2,3.4,1], center=true); +} +translate([30,5,17-4]) cube([3.4,3.4,1], center=true); +translate([30,5,17-3.5])cylinder(r=3.1,h = 20, $fn=30); // head cut +} + + + +module x_back() +{ +difference() +{ + + union() + { + // body base + translate([-16,-39.0,15.1]) cube([33,72,8]); + translate([-25.5,-5,15.1]) cube([52,39.5,8]); + } + //cables opening + translate([-17,-22,7.5]) cube([35,4,10]); + translate([-6.5,-18,15]) cube([10,4,10]); + translate([-1.5,-18,10]) rotate([0,0,90]) cylinder( h=32, r=5, $fn=30 ); + translate([-1.5,-14,10]) rotate([0,0,90]) cylinder( h=32, r=5, $fn=30 ); + + // cables horizontal space + translate([-20,-19.5,9]) cube([50,7.5,10]); + + //bearings + translate([-15,-25,11.75]) rotate([0,90,0]) cylinder( h=31, r=7.6, $fn=30 ); + translate([-30,20,11.75]) rotate([0,90,0]) cylinder( h=60, r=7.6, $fn=30 ); + translate([-17,-25,11.75]) rotate([0,90,0]) cylinder( h=60, r=7, $fn=30 ); + translate([-32,20,11.75]) rotate([0,90,0]) cylinder( h=80, r=7, $fn=30 ); + + // lower screws + translate([-9.5,-36,10]) rotate([0,0,0]) cylinder( h=50, r=1.6, $fn=30 ); + translate([10.5,-36,10]) rotate([0,0,0]) cylinder( h=50, r=1.6, $fn=30 ); + translate([-9.5,-36,19]) cylinder( h=6, r=3.1, $fn=30 ); + translate([10.5,-36,19]) cylinder( h=50, r=3.1, $fn=30 ); + translate([-12.6,-46,18]) cube([6.2,10,10]); + translate([7.4,-46,18]) cube([6.2,10,10]); + + // middle screw + translate([1,4,10]) rotate([0,0,0]) cylinder( h=50, r=1.6, $fn=30 ); + translate([1,4,18]) cylinder( h=7, r=3.1, $fn=30 ); + + // upper screws + translate([13,31,10]) rotate([0,0,0]) cylinder( h=50, r=1.6, $fn=30 ); + translate([-10.5,31,10]) rotate([0,0,0]) cylinder( h=50, r=1.6, $fn=30 ); + translate([13,31,19]) cylinder( h=50, r=3.1, $fn=30 ); + translate([-10.5,31,19]) cylinder( h=50, r=3.1, $fn=30 ); + + // hotend cables cut + translate([0.5,-42.5,0]) rotate([-5,0,0]) cylinder( h=50, r=6, $fn=30 ); + + // cable holder screw + translate([-1.5,-27,11]) rotate([0,0,90]) cylinder( h=40, r=1.6, $fn=30 ); + translate([-1.5,-27,16.5]) rotate([0,0,0]) cylinder( h=5, r=3.1, $fn=6 ); + + // extruder hold together screws opening + translate([11.5,-0.5,10]) rotate([0,0,90]) cylinder( h=40, r=3, $fn=30 ); + translate([-11.5,-0.5,10]) rotate([0,0,90]) cylinder( h=40, r=3, $fn=30 ); + + // corners + translate([-20.8,-46.1,10]) rotate([0,0,45]) cube([10,10,15]); + translate([21.8,-46.1,10]) rotate([0,0,45]) cube([10,10,15]); + translate([-24.4,15.2,10]) rotate([0,0,45]) cube([14,10,15]); + translate([26.9,15.2,10]) rotate([0,0,45]) cube([10,14,15]); + translate([-19.55,28,10]) rotate([0,0,45]) cube([10,10,15]); + translate([22.05,28,10]) rotate([0,0,45]) cube([10,10,15]); + translate([-22,35,21]) rotate([30,0,0]) cube([44,10,10]); + translate([-22,35,17]) rotate([30,0,0]) cube([14.5,10,10]); + translate([10,35,17]) rotate([30,0,0]) cube([14.5,10,10]); + + // upper side cuts + translate([17,25,10]) rotate([0,0,0]) cube([10,10,15]); + translate([-29.5,25,10]) rotate([0,0,0]) cube([15,15,15]); + translate([17,22,13]) rotate([0,0,0]) cube([10,10,5]); + translate([-24.5,22,13]) rotate([0,0,0]) cube([10,10,5]); + + // side angle cuts + translate([27,-20,16]) rotate([0,-30,0]) cube([10,50,10]); + translate([-34.2,-20,21]) rotate([0,30,0]) cube([10,50,10]); + translate([19.5,-55,16]) rotate([0,-30,0]) cube([10,50,10]); + translate([-27.1,-55,21]) rotate([0,30,0]) cube([10,50,10]); + translate([-1,-19.5,14]) rotate([0,30,0]) cube([10,7.5,10]); + translate([-5,-19.5,10]) rotate([0,-30,0]) cube([10,7.5,10]); + + + // filament sensor cable + translate([4.5,28.5,12]) rotate([0,0,0]) cube([3.5,4,20]); + translate([0.5,28.5,12]) rotate([0,0,0]) cube([4.5,7,20]); + translate([4.5,-5,19.5]) rotate([0,0,0]) cube([3.5,35,4.3]); + translate([-1.55,-9.60,19.5]) rotate([0,0,-45]) cube([3.5,10,4]); + translate([-1.9,-9.95,15]) rotate([45,0,-45]) cube([3.5,10,4]); + translate([4.5,29,16]) rotate([45,0,0]) cube([3.5,5,5]); + translate([3.5,-4.60,19.5]) rotate([0,0,-15]) cube([3,4,4]); + + translate([-18,11,22.8]) rotate([0,0,0]) linear_extrude(height = 0.4) + { text("MK2.5",font = "helvetica:style=Bold", size=5, center=true); } + + translate([-15,3,15.6]) rotate([0,180,0]) linear_extrude(height = 1) + { text("R1",font = "helvetica:style=Bold", size=4, center=true); } + + translate([-23,2.3,14.3]) cube([9,5.0,1]); + + // upper ziptie left + translate([-21.5,-25,0]) + difference() + { + translate([1,45,12]) rotate([0,90,0]) cylinder(r=8.5, h=4, $fn=25); + translate([0,45,12]) rotate([0,90,0]) cylinder(r=7, h=6, $fn=25); + } + translate([19.5,8,14.5]) rotate([-60,0,0]) cube([4,3,10]); + translate([-20.5,8,14.5]) rotate([-60,0,0]) cube([4,3,10]); + + // upper ziptie right + translate([19,-25,0]) + difference() + { + translate([0.5,45,12]) rotate([0,90,0]) cylinder(r=8.5, h=4, $fn=25); + translate([0,45,12]) rotate([0,90,0]) cylinder(r=7, h=6, $fn=25); + } + + // screw heads support + translate([-17,26,5]) m3head(); + translate([-40.5,26,5]) m3head(); + translate([-29,-1,4]) m3head(); + translate([-19.5,-41,5]) m3head(); + translate([-39.5,-41,5]) m3head(); + +} +} + +rotate([0,180,0]) x_back(); + diff --git a/Printed-Parts/scad/x-carriage.scad b/Printed-Parts/scad/x-carriage.scad new file mode 100644 index 0000000..99fb3af --- /dev/null +++ b/Printed-Parts/scad/x-carriage.scad @@ -0,0 +1,331 @@ +// PRUSA iteration4 +// X carriage 2.5 upgrade +// GNU GPL v3 +// Josef Průša and contributors +// http://www.reprap.org/wiki/Prusa_Mendel +// http://prusamendel.org + +use + +module x_carriage_body(){ + + // Small bearing holder + translate([-33/2,0,1]) rotate([0,0,90]) horizontal_bearing_base(1); + + // Long bearing holder + translate([-33/2,45,1]) rotate([0,0,90]) horizontal_bearing_base(2); + + // Base plate + translate([-34,-14,1]) cube([34.5,70.5,6]); + translate([-33,-15,1]) cube([33,7,14]); + translate([-42.5,53.0,1]) cube([52,6.5,14]); + + difference() + { + union() + { + translate([-12,30,1]) rotate([0,0,45]) cube([6,6,14]); + translate([-20,30,1]) rotate([0,0,45]) cube([6,6,14]); + } + translate([-25,38,11]) rotate([43,0,0]) cube([20,8,8]); + } + + // upper motor screw block + translate([-23,56.8,1]) rotate([0,0,0]) cube([32.5,18.2,7]); + + // Belt holder base + translate([-42.5,20,1]) cube([52,16,6]); + translate([-16.5-12,24.5,1])cylinder(r=4.5, h=13, $fn=25); + translate([-17.5+12,24.5,1])cylinder(r=4.5, h=13, $fn=25); + translate([-16.5-12,24.5,14])cylinder(r1=4.5, r2=3.8, h=1, $fn=25); + translate([-17.5+12,24.5,14])cylinder(r1=4.5, r2=3.8, h=1, $fn=25); + +// Belt Insert R +difference() +{ + union() + { + translate([2,27,1]) cube([10,6,14]); + translate([2,24-2.3-4.5,1]) cube([7.5,7.5,14]); + translate([-0.5,27,1]) cube([8,7,1]); + } + translate([-3,25,5.5]) rotate([0,0,-40]) cube([5,5.5,10]); + translate([8,17,5.5]) rotate([0,0,-60]) cube([2,5,10]); +} + +// Belt Insert L +difference() +{ + union() + { + translate([-33,3,0]) + { + scale([-1,1,1]) + { + translate([0,27,1]) cube([12.5,3,14]); + translate([2,27-7.5-2.3,1]) cube([12.5,7.5,14]); + //#translate([-0.5,27,1]) cube([8,7,1]); + } + } + } + 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_nozip(1); + + // Long bearing holder holes cutter + translate([-33/2,45,0]) rotate([0,0,90]) horizontal_bearing_holes_nozip(2); + + // upper ziptie right + translate([2,0,0]) + difference() + { + translate([0.75,45,12]) rotate([0,90,0]) cylinder(r=10.8, h=3.5, $fn=25); + translate([0,45,12]) rotate([0,90,0]) cylinder(r=9, h=6, $fn=25); + } + // upper ziptie left + translate([-38,0,0]) + difference() + { + translate([0.75,45,12]) rotate([0,90,0]) cylinder(r=10.8,h=3.5,$fn=25); + translate([0,45,12]) rotate([0,90,0]) cylinder(r=9, h=6, $fn=25); + } + + // upper ziptie head + translate([0,52.5,12]) cube([10,10,5]); + translate([-45,52.5,12]) cube([13.5,10,5]); + + // Extruder mounting holes + translate([-17.5+12,24.5,-1])cylinder(r=1.8, h=20, $fn=25); + translate([-17.5+12,24.5,-0.1])cylinder(r1=2.1,r2=1.8, h=0.5, $fn=25); + translate([-17.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 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,30.8,-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]); + +} + +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]); + + // 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([-27,74.5,9]) rotate([0,45,0]) translate([0,-15,0]) cube([5,25,5]); + translate([-23,86,16]) rotate([45,0,0]) translate([0,-15,0]) cube([45,5,5]); + + // bottom side edges + translate([-40,-15,-5]) rotate([30,0,0]) cube([45,6,15]); + translate([-35,-19.2,0]) rotate([0,0,45]) cube([6,6,16]); + translate([2,-19.2,0]) rotate([0,0,45]) cube([6,6,16]); + + translate([2,55.9,12]) rotate([0,0,45]) cube([6,6,16]); + translate([-33.5,55.9,12]) rotate([0,0,45]) cube([6,6,16]); + +} + +module cable_tray(){ + + // center screw block + translate([-21,23,1]) cube([9,12,14]); + + difference() + { + union() + { + translate([-20.8,24.8,1]) rotate([0,0,20]) cube([3,10,14]); + translate([-15.5,25.8,1]) rotate([0,0,-20]) cube([3,10,14]); + } + translate([-25,34.2,1]) cube([20,10,14]); + } + + translate([6.5,32,10]) cube([3,5,5]); + translate([-42.5,32,10]) cube([4,5,5]); + + //Left cable tray + translate([-39.9,11,1]) cube([9,2,14]); + translate([-39.9,5.5,1]) cube([9,2,14]); + + //Right cable tray + translate([-2,5.5,1]) cube([11.45,2,14]); + translate([-2,11,7]) cube([11.45,2,8]); + + translate([-31,11.5,7]) cube([30,1.5,8]); + + difference() + { + translate([0,11,1]) cube([9.50,12,6]); + translate([0,6,1])rotate([-30,0,0]) cube([7.5,12,7]); + translate([0,3.5,6])rotate([-60,0,0]) cube([7.5,12,7]); + translate([0,10+3,-1])cube([7.5,11,6]); + } + + +} + + +module final_cutout(){ + + translate([-44,0,16]) rotate([0,45,0]) cube([5,15,5]); + translate([6,0,16]) rotate([0,45,0]) cube([5,15,5]); + + translate([0.5,10+3,-1])cube([7,9.2,6]); + + + // filament hole + translate([-18.5,8.8,0]) rotate([-5,0,0]) cylinder(r=1.52, h=40, $fn=10); + translate([-18.5,9.7,10]) rotate([-5,0,0]) cylinder(r=1.52,r2=2, h=6, $fn=10); + + // bottom back mounting screws + translate([-6.5,-11,4]) rotate([0,0,0]) cylinder(r=1.65, h=20, $fn=30); + translate([-26.5,-11,4]) rotate([0,0,0]) cylinder(r=1.65, h=20, $fn=30); + translate([-29.5,-14,10]) cube([6,7,2.2]); + translate([-09.5,-14,10]) cube([6,7,2.2]); + translate([-28.2,-14,10.3]) cube([3.4,7,2.2]); + translate([-08.2,-14,10.3]) cube([3.4,7,2.2]); + + translate([-4,56,0]) rotate([0,0,0]) cylinder(r=1.65, h=40, $fn=30); + translate([-27.5,56,0]) rotate([0,0,0]) cylinder(r=1.65, h=40, $fn=30); + translate([-30.5,53,8]) cube([6,8,2]); + translate([-7,53,8]) cube([6,8,2]); + + translate([-16,29,0]) rotate([0,0,0]) cylinder(r=1.65, h=40, $fn=30); + translate([-19,26,11]) cube([6,8,2]); + translate([-21,33,11]) cube([10,8,6]); + + + translate([-16.5,-18,-5]) rotate([-5,0,0]) cylinder(r=6, h=40, $fn=30); + + } + +// Final part +module x_carriage_base() +{ + difference() + { + union() + { + difference() + { + x_carriage_body(); + x_carriage_holes(); + x_carriage_fancy(); + } + cable_tray(); + + difference() + { + translate([-24,7.7,1.5]) cube([10.5,4,13.5]); + translate([-16.4,6.7,16]) rotate([0,45,0]) cube([5,7,5]); + translate([-27.4,6.7,16]) rotate([0,45,0]) cube([5,7,5]); + translate([-27.4,6.7,13.7]) rotate([45,0,0]) cube([20,7,5]); + } + } + final_cutout(); + } +} + +module x_carriage() +{ +difference() +{ + union() + { + x_carriage_base(); + + // endstop + difference() + { + union() + { + translate([-8.5,-16,1]) cube([18,5.5,11]); + translate([2,-15.5,1]) rotate([0,0,60]) cube([5,5,11]); + } + translate([6,-17,0]) rotate([0,45,0]) cube([10,8,11]); + translate([-12,-18.5,0]) rotate([0,0,-25]) cube([15,8,15]); + translate([-6.5,-11,4]) rotate([0,0,0]) cylinder(r=1.65, h=20, $fn=30); + translate([-09.5,-14,10]) cube([6,7,2.2]); + } + + } + 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.5,22.5,0]) rotate([0,90,0]) cylinder(r=5.2, h=7.0, $fn=25); + + difference() + { + translate([2.5,21.5,0]) rotate([0,90,0]) cylinder(r=5.2, h=5.0, $fn=25); + translate([2,16,-10]) cube([10,6,20]); + } + + // 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,5.5]) cube([0.1,3,9]); + 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([-19,24,1.5]) cube([5,0.4,13.0]); + translate([-20.5,27,1.5]) rotate([0,0,20]) cube([0.4,5,13.0]); + + + translate([-40.8,7.5,0]) rotate([0,20,0]) cube([5,3.5,20]); + translate([-2.9,7.5,18]) rotate([0,80,0]) cube([20,3.55,5]); + + // filament sensor connector + translate([-12.5,64,-3]) cube([4,11.2,14]); + translate([-12.5,65.75,-3]) cube([5,2.5,14]); + translate([-12.5,71.75,-3]) cube([5,2.5,14]); + translate([-14.5,67,-3]) cube([4,6,14]); + translate([-14.5,65,4.7]) cube([4,10.2,5]); + + translate([-12.5,54.5,8]) cube([3.5,10.2,14]); + translate([-12.5,57.5,9.5]) rotate([35,0,0]) cube([3.5,10.2,14]); + translate([-12.5,58,8]) rotate([0,0,45]) cube([3,3,14]); + translate([-10,58,8]) rotate([0,0,45]) cube([3,3,14]); + + + + //version + translate([-2,-8,1.5]) rotate([0,180,0]) linear_extrude(height = 0.6) + { text("R1",font = "helvetica:style=Bold", size=4, center=true); } + + translate([-10,34,1.5]) rotate([0,180,0]) linear_extrude(height = 0.6) + { text("2.5",font = "helvetica:style=Bold", size=8, center=true); } +} +} + +x_carriage(); + + + + +