use use use include use roundedExtruderHolder=true; Slider_front(); //translate([27,-35,-9]) extrudercooler(); module Slider_front() { difference() { union() { // use same body as in back slider translate([0,-10,0]) body(); Extruderholder(); translate([10,0,14.5]) rotate([0,0,-90]) translate([7,0,0]) scale([1,1.5,1.5]) M3Nut(4); translate([10+45,0,14.5]) rotate([0,0,-90]) translate([7,0,0]) scale([1,1.5,1.5]) M3Nut(4); } dist=(heightMain-holeDist)/2; translate([0,0,dist]) bearingHalfHoles(); translate([0,0,dist+holeDist]) bearingHalfHoles(); zcube(); cubecenter=heightMain/2-rollWithRodDist/2; translate([0, -5, heightMain/2]) cube([width, 5, rollWithRodDist]); // add the 4 mountholes translate([0, -10, 0]) MountHolesFront(); // cut extruder holes Extruderholes(); #translate([10,0,14.5]) rotate([0,0,-90]) union() { M3Hole(15); translate([6,0,0]) M3Nut(4); }; #translate([10+45,0,14.5]) rotate([0,0,-90]) union() { M3Hole(15); translate([1,0,0]) M3Nut(7); }; } } // Similar function from Slider_back without the hexagonal holes module MountHolesFront() { translate([holeLeftRightMargin,0,holeTop]) rotate([0,0,90]) { #M3Hole(10); M3Head(5); } translate([width-holeLeftRightMargin,0,holeTop]) rotate([0,0,90]) { #M3Hole(10); M3Head(5); } translate([holeLeftRightMargin,0,holeBottom]) rotate([0,0,90]) { #M3Hole(10); M3Head(3); } translate([width-holeLeftRightMargin,0,holeBottom]) rotate([0,0,90]) { #M3Hole(10); M3Head(3); } } extruder_diam=21.75; extruder_flatdist=16; // offset height needed to place the extruder straight on the surface extruder_offset=(extruder_diam-extruder_flatdist)/2; extruder_platform_width=15; extruder_platform_height=10; extruder_platform_x=18.25; module Extruderholder() { translate([0, -10-extruder_offset, extruder_platform_x+extruder_platform_height/2]) hull() { translate([width/2 - extruder_platform_width/2, 0, 0]) rotate([-90, 0, 0]) cylinder(d=extruder_platform_height, h=extruder_offset); translate([width/2 + extruder_platform_width/2, 0, 0]) rotate([-90, 0, 0]) cylinder(d=extruder_platform_height, h=extruder_offset); if(roundedExtruderHolder) { // no rounded edges on bottom translate([width/2 - extruder_platform_width/2 - extruder_platform_height/2, 0, -extruder_platform_height/2]) cube([extruder_platform_width + extruder_platform_height, extruder_offset, extruder_platform_height/2]); } } depth=10; roundhelperwidth=extruder_diam+3; difference() { union() { // bottom cube translate([width/2 - roundhelperwidth/2, -10-depth, 0]) cube([roundhelperwidth, depth, 5]); // the triangle over it // linear_extrude(roundhelperwidth) #polygon([[0,0],[5,0],[0,5]]); no rounded triangle translate([width/2 - roundhelperwidth/2, -10, 5]) rotate([0, -90, 180]) roundedTriangle(roundhelperwidth, 5); } translate([width/2, -10-extruder_diam/2, 0]) cylinder(d=extruder_diam, h=15, $fn=125); } } module Extruderholes() { // hole distance from each other holeDist=14; translate([width/2 + holeDist/2, 0, extruder_platform_x + extruder_platform_height/2]) { rotate([0,0,-90]) #M3Hole(150); rotate([30,0,-90]) #M3Nut(8); } translate([width/2 - holeDist/2, 0, extruder_platform_x + extruder_platform_height/2]) { rotate([0,0,-90]) #M3Hole(150); rotate([30,0,-90]) #M3Nut(8); } }