//Robo-Ramps Print Head //The print nozzle is 50mm from the back wall of the X-Axis chassis //and the 4mm below the bottom of the X-Axis chassis //The Print head is 51mm wide. //withrounded edges $fn=60; backplatform(); translate([-0.3+5,0,13]) aluminium_plate(); //remove the hotend etc grill(); module grill(){ //This has 3 holes added to allow the spring that pressurises the X-Axis upper slider //and hence the ammount of pressure required for the Z-Axis limit switch to activate //while pressing the nozzle against the build plate. difference(){ translate([5,0,0]) top_grill(); translate([-6,18,66]) cylinder(20,0.7,0.7,true); //medium A translate([4,12,66]) cylinder(20,0.7,0.7,true); //medium B translate([11,5,66]) cylinder(20,0.7,0.7,true); //softest } } module backplatform(){ difference(){ union(){ color("blue"){ translate([-30,0,0]) cube([24,24.5,16],true); //space for main alignment translate([-18+2.5-1,0,29.5]) cube([12.5,48,75],true); //back wall, X was 15 rotate([0,-11,0]) translate([-13.3,0,42]) cube([10,48,31],true); //slanty back 28 translate([-25,0,11]) cube([10,24,7.5],true); //part of curved back translate([-23.9,0,60]) cube([10,48,14],true); //top of back wall } } translate([-18,0,34]) rotate([0,90,0]) cylinder(20,2,2,true); //thread for attachment //Round off the corners to aid adhesion corner(22,-6,270); corner(-22,-6,180); corner(-22,65,90); corner(22,65,0); translate([-28.5,0,13.5]) rotate([0,90,90]) cylinder(120,5.5,5.5,true); //subtract for curve translate([-0.3+5,0,13]) aluminium_plate(); //remove the hotend, mounting holes etc color("gold") translate([-27,0,59.5]) cube([12,44,11],true); //space for spring //route for cables & filament hull(){ //Channel through the bottom for the wires etc color("grey") translate([-36,0,-10]) cube([50,17,10],true); translate([-20,5.5,3]) rotate([0,90,0]) cylinder(50,3,3,true); translate([-20,-5.5,3]) rotate([0,90,0]) cylinder(50,3,3,true); } //color("grey") translate([-24,21,59]) cylinder(15,2,2,true); //recess for head spring //color("grey") translate([-24,-21,59]) cylinder(15,2,2,true); //recess for head spring //Cooling system for the back of the aluminium block color("gold") translate([-12,0,20]) cube([8,30,90],true); //cooling slot translate([-26,0,66]) cube([10,4,5],true); //Tension Spring slot //translate([-20,5.5,3]) rotate([0,90,0]) color("purple") cylinder(60,3,3,true); //translate([-20,-5.5,3]) rotate([0,90,0]) color("purple") cylinder(60,3,3,true); translate([-18,-15,66]) cylinder(20,0.7,0.7,true); //origin for tension spring translate([-18,20,66]) cylinder(20,0.7,0.7,true); //hardest setting } //translate([-18,-15,67]) cylinder(2,35,35,true); //radius for setting points } module top_grill(){ difference(){ //this is the finish off bit at the top, just glue it on! union(){ difference(){ translate([0,0,62]) cube([30,48,10],true); // body of the grill rotate([0,0,-30]) translate([0,-16,62]) cube([30,4,12],true); //subtract a space rotate([0,0,-15]) translate([0,-8,62]) cube([30,4,12],true); //subtract a space translate([-1,0,62]) cube([30,4,12],true); //subtract a space rotate([0,0,15]) translate([0,8,62]) cube([30,4,12],true); //subtract a space rotate([0,0,30]) translate([0,16,62]) cube([30,4,12],true); //subtract a space } translate([-12.5,0,66]) cube([5,48,2],true); //bar at the back of the grill translate([12.5,0,64.5]) cube([5,48,5],true); //bar at the front of the grill } corner(22,-6,270); corner(-22,-6,180); corner(-22,65,90); corner(22,65,0); } } module corner(y,z,a){ translate([-30,y,z]) rotate([a,0,0]) rotate([0,90,0]) difference(){ rotate([0,0,90]) cube([3,3,140]); cylinder(150,2,2,true); } } //Alignment checks with transparent blocks //#color("black") translate([-33,0,27]) cube([20,25,72],true); //#color("black") translate([-38,0,27]) cube([10,50,72],true); //back wall to mount //#color("black") translate([-33,0,5]) cube([20,25,26],true); //height of bend //color("grey") translate([-33,0,60]) rotate([90,0,0]) cylinder(60,3,3,true); //test rail position //position_tip(); module position_tip(){ //this tries to indicate the position of the original geometry of the tip //geometry of the tip in relationship to the lower front edge of the X-Axis gantry Hotend holder. 3mm below X-Axis gantry shell, and 30mm in front of same. color("pink") { difference(){ translate([-42,-15,-12.2]) cube([80,30,3]); //vertical distance between base of the back grantry holder and the tip of the nozzle, 4mm translate([-22,-12.5,-12.2]) cube([30,25,3]); //horizontal distance from the back gantry holder and the tip of the nozzle } } } module aluminium_plate(){ difference(){ w=50; color("red") rotate([0,0,90]){ difference(){ translate([0,13,10]) cube([w,3,65],true); //vertical heatsink aluminium plate translate([0,-1.5,0]) cylinder(5,3,3,true); //hotend hole, move into plate above } } //translate([2,0,-2.0]) throat(); //un comment for back plate profile //translate([0,0,17]) rotate([0,90,0]) heatsink5050(); //un comment for back plate profile } translate([2,0,-2.0]) throat(); //comment out for back plate profile translate([0,0,17]) rotate([0,90,0]) heatsink5050(); //comment out for back plate profile } module throat(){ translate([2.5,0,-11]) rotate([180,0,0]) heat_block(); //heat block color("green") translate([-15,0,-11]) rotate([0,90,0]) cylinder(30,3,3,true); color("yellow") translate([0,0,2]) union(){ translate([1.5,0,-15.5]) cylinder(5,3,3,true); //nozzle thread translate([1.5,0,-20]) cylinder(5,4,4,true); //nozzle body translate([1.5,0,-24]) cylinder(3,0,3,true); //nozzle cone } //#color("grey") translate([4,0,-12]) cube([20,20,10],true); //heat block } module heat_block(){ color("grey") rotate([0,0,90]) translate([-5,0,0]) difference(){ cube([20,20,10],true); //heat block translate([-2.5,0,0]) rotate([90,0,0]) cylinder(30,3,3,true); } translate([0,0,3]) hull(){ translate([-15,-8,4]) rotate([0,90,0]) cylinder(10,1.5,1.5,true); translate([-15,-8,0]) rotate([0,90,0]) cylinder(10,1.5,1.5,true); } } module heatsink5050(){ fh=10; //fin height fw=50; //fan width and breadth color("orange"){ for (i=[0:4:48]){ translate([(i-fw/2)+1,0,-fh/2]) cube([1,fw,fh],true); //fins } translate([0,0,-fh/2-5]) cube([fw,fw,3],true); //base } translate([0,0,fh/2]) Fan45mm(); } module Fan45mm(){ difference(){ union(){ difference(){ color("grey") minkowski(){ cube([37,37,11],true); //main body cylinder(r=4,h=1); //rounded corners } cylinder(14,21.75,21.75,true); //central hole } color("red")screws45(); } boltholes45(); countersink45(); } } module boltholes45(){ translate([18.5,18.5,0]) cylinder(15,1.8,1.8,true); translate([18.5,-18.5,0]) cylinder(15,1.8,1.8,true); translate([-18.5,18.5,0]) cylinder(15,1.8,1.8,true); translate([-18.5,-18.5,0]) cylinder(15,1.8,1.8,true); } module countersink45(){ translate([18.5,18.5,6]) cylinder(2,3,3,true); translate([18.5,-18.5,6]) cylinder(2,3,3,true); translate([-18.5,18.5,6]) cylinder(2,3,3,true); translate([-18.5,-18.5,6]) cylinder(2,3,3,true); } module screws45(){ translate([18.5,18.5,0]) cylinder(85,1.3,1.3,true); translate([18.5,-18.5,0]) cylinder(85,1.3,1.3,true); translate([-18.5,18.5,0]) cylinder(85,1.3,1.3,true); translate([-18.5,-18.5,0]) cylinder(85,1.3,1.3,true); }