chimera_heatsink_size = [30,18,30]; chimera_fins_h = 6; chimera_fin_thickness = 1.75; chimera_fins_space = 2.5; chimera_fins_n = 8; chimera_nozzles_apart = 18; chimera_nozzles_from_back = 6; chimera_heatsink_to_heater=2.1; e3d_heater_size = [16,20,11.5]; e3d_heater_nozzle_from_front = 4.5; chimera_assembly_height = 49.5; chimera_mounting_holes_from_top = [ [0, 20], [-4.5,10], [4.5,10] ]; chimera_heatbreak_screws_h = [ 3, 11 ]; chimera_heatbreak_screws_d = 3; /* TODO: check */ e3d_nozzle_height = 12.5; e3d_nozzle_0_4 = [ 1, 0.8, 1.5, 10.5 ]; module e3d_nozzle(nozzle = e3d_nozzle_0_4) { h = 12.5; cylinder(d1=nozzle[0],d2=nozzle[0]+2*(h-nozzle[3])/tan(180-125),h=h-nozzle[3]); translate([0,0,h-nozzle[3]]) cylinder(r=7/2/cos(3),h=e3d_nozzle_0_4[3]-7.5,$fn=6); translate([0,0,h-7.5]) cylinder(d=5,h=7.5); translate([0,0,h-6]) cylinder(d=6,h=6); } module e3d_heater() { translate([-e3d_heater_size[0]/2,-e3d_heater_nozzle_from_front,0]) cube(size=e3d_heater_size); } module chimera_heatsink(grub_show=false) { difference() { translate([-chimera_heatsink_size[0]/2,-chimera_nozzles_from_back,0]) cube(size=chimera_heatsink_size); for(h=chimera_mounting_holes_from_top) { translate([h[0],0,chimera_heatsink_size[2]-h[1]]) rotate([-90,0,0]) translate([0,0,-1-chimera_nozzles_from_back]) cylinder(d=3,h=chimera_heatsink_size[1]+2); } } for(s=[-1,1]) // collets translate([s*chimera_nozzles_apart/2,0,chimera_heatsink_size[2]]) cylinder(h=1,d=7); if(grub_show) { for(s=[-1,1]) for(z=chimera_heatbreak_screws_h) translate([s*chimera_nozzles_apart/2,0,z]) rotate([90,0,0]) cylinder(d=chimera_heatbreak_screws_d,h=chimera_heatsink_size[2]*3,center=true); } } module chimera_assembly(nozzle=e3d_nozzle_0_4,heatersinline=false,grub_show=false) { translate([0,0,chimera_assembly_height-chimera_heatsink_size[2]]) chimera_heatsink(grub_show=false); for(s=[-1,1]) translate([s*chimera_nozzles_apart/2,0,0]) { e3d_nozzle(nozzle=nozzle); translate([0,0,e3d_nozzle_height]) cylinder(d=7,h=chimera_assembly_height-e3d_nozzle_height); // heatbreak rotate([0,0, heatersinline? s*-90 : (s+1)/2*180 ]) translate([0,0,6]) e3d_heater(); } } %chimera_assembly();