summaryrefslogtreecommitdiff
path: root/e3dchimera.scad
blob: 2cd759d986286370307cdb08a655a833f245eb73 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70

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();