-rw-r--r-- | e3dchimera.scad | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/e3dchimera.scad b/e3dchimera.scad new file mode 100644 index 0000000..2cd759d --- a/dev/null +++ b/e3dchimera.scad | |||
@@ -0,0 +1,70 @@ | |||
1 | |||
2 | chimera_heatsink_size = [30,18,30]; | ||
3 | chimera_fins_h = 6; | ||
4 | chimera_fin_thickness = 1.75; | ||
5 | chimera_fins_space = 2.5; | ||
6 | chimera_fins_n = 8; | ||
7 | chimera_nozzles_apart = 18; | ||
8 | chimera_nozzles_from_back = 6; | ||
9 | chimera_heatsink_to_heater=2.1; | ||
10 | e3d_heater_size = [16,20,11.5]; | ||
11 | e3d_heater_nozzle_from_front = 4.5; | ||
12 | chimera_assembly_height = 49.5; | ||
13 | chimera_mounting_holes_from_top = [ | ||
14 | [0, 20], [-4.5,10], [4.5,10] | ||
15 | ]; | ||
16 | chimera_heatbreak_screws_h = [ 3, 11 ]; | ||
17 | chimera_heatbreak_screws_d = 3; /* TODO: check */ | ||
18 | |||
19 | e3d_nozzle_height = 12.5; | ||
20 | e3d_nozzle_0_4 = [ 1, 0.8, 1.5, 10.5 ]; | ||
21 | module e3d_nozzle(nozzle = e3d_nozzle_0_4) { | ||
22 | h = 12.5; | ||
23 | cylinder(d1=nozzle[0],d2=nozzle[0]+2*(h-nozzle[3])/tan(180-125),h=h-nozzle[3]); | ||
24 | translate([0,0,h-nozzle[3]]) | ||
25 | cylinder(r=7/2/cos(3),h=e3d_nozzle_0_4[3]-7.5,$fn=6); | ||
26 | translate([0,0,h-7.5]) cylinder(d=5,h=7.5); | ||
27 | translate([0,0,h-6]) cylinder(d=6,h=6); | ||
28 | } | ||
29 | |||
30 | module e3d_heater() { | ||
31 | translate([-e3d_heater_size[0]/2,-e3d_heater_nozzle_from_front,0]) | ||
32 | cube(size=e3d_heater_size); | ||
33 | } | ||
34 | |||
35 | module chimera_heatsink(grub_show=false) { | ||
36 | difference() { | ||
37 | translate([-chimera_heatsink_size[0]/2,-chimera_nozzles_from_back,0]) | ||
38 | cube(size=chimera_heatsink_size); | ||
39 | for(h=chimera_mounting_holes_from_top) { | ||
40 | translate([h[0],0,chimera_heatsink_size[2]-h[1]]) | ||
41 | rotate([-90,0,0]) | ||
42 | translate([0,0,-1-chimera_nozzles_from_back]) | ||
43 | cylinder(d=3,h=chimera_heatsink_size[1]+2); | ||
44 | } | ||
45 | } | ||
46 | for(s=[-1,1]) // collets | ||
47 | translate([s*chimera_nozzles_apart/2,0,chimera_heatsink_size[2]]) | ||
48 | cylinder(h=1,d=7); | ||
49 | if(grub_show) { | ||
50 | for(s=[-1,1]) for(z=chimera_heatbreak_screws_h) | ||
51 | translate([s*chimera_nozzles_apart/2,0,z]) | ||
52 | rotate([90,0,0]) | ||
53 | cylinder(d=chimera_heatbreak_screws_d,h=chimera_heatsink_size[2]*3,center=true); | ||
54 | } | ||
55 | } | ||
56 | |||
57 | module chimera_assembly(nozzle=e3d_nozzle_0_4,heatersinline=false,grub_show=false) { | ||
58 | translate([0,0,chimera_assembly_height-chimera_heatsink_size[2]]) | ||
59 | chimera_heatsink(grub_show=false); | ||
60 | for(s=[-1,1]) translate([s*chimera_nozzles_apart/2,0,0]) { | ||
61 | e3d_nozzle(nozzle=nozzle); | ||
62 | translate([0,0,e3d_nozzle_height]) | ||
63 | cylinder(d=7,h=chimera_assembly_height-e3d_nozzle_height); // heatbreak | ||
64 | rotate([0,0, heatersinline? s*-90 : (s+1)/2*180 ]) | ||
65 | translate([0,0,6]) | ||
66 | e3d_heater(); | ||
67 | } | ||
68 | } | ||
69 | |||
70 | %chimera_assembly(); | ||