// parameters for M3 bolts nema17holespacing=31; nema17boltdiameter=3.15; m3countersinkdepth=5; m3headdiameter=6.6; m3tappablediameter=2.75; m3tom3clearance=0; // parameters for extruder tube tubeyoffset=11.5; // distance from back of block to center of tube tubexoffset=6; // distance from tube center to x-center of motor tubezoffset=2.75; //distance to sink mounting lip tubediameter=16.3; tubefrontclearance=4; // clearance from tube hole to front of block tubelipthickness=4; // z-thickness of retention lip tubelipinnerdiameter=12.5; barrelholespacingfront=5; barrelcenter=[-tubexoffset,barrelholespacingfront]; // parameters for M5 bolts into extruder carriage mountboltxspacing=57; // center to center x measurement of bolts mountboltxoffset=0; // average of bolt x centers - x center of motor lmountboltx=mountboltxoffset - mountboltxspacing/2; rmountboltx=mountboltxoffset + mountboltxspacing/2; mountboltsideclearance=3; mountboltdiameter=5.85; mountboltbackoffset=0; mountboltbackclearance=3; // parameters for main block leftend=lmountboltx - mountboltdiameter/2 - mountboltsideclearance; rightend=rmountboltx + mountboltdiameter/2 + mountboltsideclearance; cbheight=10; cbdepth=tubeyoffset + tubediameter/2 + tubefrontclearance; cbwidth=rightend - leftend; cutinhalfkerf=2; // openSCAD rendering parameters ff=.01; // fudge factor $fa=.01; $fs=.5; qubdchassisblockclone(); module qubdchassisblockclone(){ difference(){ // main body union(){ translate([leftend,0,0]) cube([cbwidth,cbdepth,cbheight]); translate([leftend,0,0]) cube([mountboltdiameter + 2*mountboltsideclearance,cbdepth + mountboltdiameter + mountboltbackoffset + mountboltbackclearance,cbheight]); translate([rightend - (mountboltdiameter + 2*mountboltsideclearance),0,0]) cube([mountboltdiameter + 2*mountboltsideclearance,cbdepth + mountboltdiameter + mountboltbackoffset + mountboltbackclearance,cbheight]); } // left M3 bolt into motor translate([-nema17holespacing/2,-ff,cbheight/2]) rotate([-90,0,0]) tdinder(r=nema17boltdiameter/2,h=cbdepth+2*ff); // left M3 bolt into motor, countersink //translate([-nema17holespacing/2,-ff,cbheight/2]) //rotate([-90,0,0]) //tdinder(r=m3headdiameter/2,h=(cbdepth - m3headdepthfromback+ff)); // left M3 front to back joining bolt translate([-nema17holespacing/2- m3tom3clearance - m3headdiameter,-ff,cbheight/2]) rotate([-90,0,0]) cylinder(r=m3tappablediameter/2,h=(cbdepth + 2*ff)); // left M3 front to back joining bolt countersink translate([-nema17holespacing/2- m3tom3clearance - m3headdiameter,-ff,cbheight/2]) rotate([-90,0,0]) tdinder(r=m3headdiameter/2,h=(m3countersinkdepth + ff)); // right M3 bolt into motor translate([nema17holespacing/2,-ff,cbheight/2]) rotate([-90,0,0]) tdinder(r=nema17boltdiameter/2,h=cbdepth+2*ff); // right M3 bolt into motor, countersink //translate([nema17holespacing/2,-ff,cbheight/2]) //rotate([-90,0,0]) //tdinder(r=m3headdiameter/2,h=(cbdepth-m3headdepthfromback+ff)); // right M3 front to back joining bolt translate([nema17holespacing/2 - m3tom3clearance - m3headdiameter,-ff,cbheight/2]) rotate([-90,0,0]) cylinder(r=m3tappablediameter/2,h=(cbdepth + 2*ff)); // right M3 front to back joining bolt countersink translate([nema17holespacing/2- m3tom3clearance - m3headdiameter,-ff,cbheight/2]) rotate([-90,0,0]) tdinder(r=m3headdiameter/2,h=(m3countersinkdepth + ff)); // hole for extruder tube, retention lip narrow diameter translate([-tubexoffset,cbdepth-tubeyoffset,-ff]) cylinder(r=tubelipinnerdiameter/2, h=cbheight+2*ff); // holes for extruder tube, main part large diameter translate([-tubexoffset,cbdepth-tubeyoffset,cbheight-tubezoffset]) cylinder(r=tubediameter/2, h=cbheight); translate([-tubexoffset,cbdepth-tubeyoffset,-ff]) cylinder(r=tubediameter/2, h=(cbheight-tubezoffset-tubelipthickness+ff)); // right M5 bolt into extruder carriage translate([rmountboltx,cbdepth + mountboltbackoffset + mountboltdiameter/2,-ff]) cylinder(r=mountboltdiameter/2, h=cbheight+2*ff); // left M5 bolt into extruder carriage translate([lmountboltx,cbdepth + mountboltbackoffset + mountboltdiameter/2,-ff]) cylinder(r=mountboltdiameter/2, h=cbheight+2*ff); // cut into two pieces translate([leftend-ff,cbdepth - cutinhalfkerf/2 - tubeyoffset,-ff]) cube([cbwidth+2*ff,cutinhalfkerf,cbheight+2*ff]); } } module tdinder(r,h){ linear_extrude(height=h){ rotate([0,0,225]) { square(r); circle(r); } } }