|
@@ -0,0 +1,121 @@
|
|
1
|
+/*
|
|
2
|
+Name: E3D-v6 All Metal HotEnd in OpenSCAD
|
|
3
|
+Author: Jons Collasius from Germany/Hamburg
|
|
4
|
+
|
|
5
|
+License: CC BY-NC-SA 4.0
|
|
6
|
+License URL: https://creativecommons.org/licenses/by-nc-sa/4.0/
|
|
7
|
+
|
|
8
|
+Creator of "E3D-v6 All Metal HotEnd": E3D Online - JR
|
|
9
|
+URL E3D v6: http://wiki.e3d-online.com/wiki/E3D-v6_Documentation
|
|
10
|
+*/
|
|
11
|
+
|
|
12
|
+// retrieved from https://www.thingiverse.com/thing:548237
|
|
13
|
+
|
|
14
|
+// ######################################################################################################################
|
|
15
|
+
|
|
16
|
+/* [Global] */
|
|
17
|
+
|
|
18
|
+// resolution of round object. each line segment is fnr mm long. fnr = 1 crude and good for development (its faster), aim for fnr = 0.4 or smaller for a production render. smaller means more details (and a lot more time to render).
|
|
19
|
+fnresolution = 1.0;
|
|
20
|
+// detail level
|
|
21
|
+detaillevel = 1; // [0:coarse render only outlines,1:fine render with all details]
|
|
22
|
+
|
|
23
|
+// ######################################################################################################################
|
|
24
|
+//e3d_v6();
|
|
25
|
+
|
|
26
|
+// ######################################################################################################################
|
|
27
|
+
|
|
28
|
+e3d_v6_height = 65.6;
|
|
29
|
+e3d_upper_large_dia = 16;
|
|
30
|
+e3d_upper_small_dia = 12;
|
|
31
|
+e3d_upper_small_height = 6;
|
|
32
|
+e3d_max_dia = 22;
|
|
33
|
+
|
|
34
|
+module e3d_v6() {
|
|
35
|
+ translate([0, 0, e3d_v6_height])
|
|
36
|
+ rotate([0, 180, 0])
|
|
37
|
+ e3d();
|
|
38
|
+}
|
|
39
|
+
|
|
40
|
+// ######################################################################################################################
|
|
41
|
+module e3d() {
|
|
42
|
+ difference() {
|
|
43
|
+ union() {
|
|
44
|
+ translate([0,0,0]) fncylinder(r=8,h=7);
|
|
45
|
+ translate([0,0,6]) fncylinder(r=6,h=8);
|
|
46
|
+ translate([0,0,13]) fncylinder(r=8,h=8);
|
|
47
|
+ translate([0,0,20]) fncylinder(r=11.15,h=26);
|
|
48
|
+ translate([0,0,0]) fncylinder(r=8,h=7);
|
|
49
|
+ translate([0,0,45]) fncylinder(r=2,h=4.1);
|
|
50
|
+ translate([-8,-4.5,48.1]) chamfercube([16,20,11.5],side=[0.4,0.4,0.4,0.4],top=[0.4,0.4,0.4,0.4],bottom=[0.4,0.4,0.4,0.4]);
|
|
51
|
+ translate([0,0,58.6]) fncylinder(r=2.5,h=3);
|
|
52
|
+ translate([0,0,60.6]) fncylinder(r=4.03,h=3,fn=6);
|
|
53
|
+ translate([0,0,62.6]) fncylinder(r=3,r2=0.5,h=3);
|
|
54
|
+ }
|
|
55
|
+ if(detaillevel==1) {
|
|
56
|
+ translate([0,0,-1]) fncylinder(r=1.6,h=64.1);
|
|
57
|
+ translate([0,0,62.1]) fncylinder(r=0.25,h=4,fn=10);
|
|
58
|
+ translate([0,0,16]) fnpipe(r=9,r2=4.475,h=1.5);
|
|
59
|
+ translate([0,0,18.5]) fnpipe(r=9,r2=4.475,h=1.5);
|
|
60
|
+ for ( i = [0 : 9] ) {
|
|
61
|
+ translate([0,0,21+i*2.5]) fnpipe(r=12.15,r2=4.475+i*0.15,h=1.5);
|
|
62
|
+ }
|
|
63
|
+ translate([-9,8,55.6]) rotate([0,90,0]) fncylinder(r=3.05, h=18);
|
|
64
|
+ translate([-9,8,54.6]) cube([18,8.5,2]);
|
|
65
|
+ translate([0,13,47.1]) fncylinder(r=1.4, h=13.5);
|
|
66
|
+ translate([4.45,-1,54.8]) rotate([0,90,0]) fncylinder(r=1.4, h=4.45);
|
|
67
|
+ translate([3.45,-2.5,57.6]) rotate([0,90,0]) fncylinder(r=1.15, h=5.45);
|
|
68
|
+ }
|
|
69
|
+ }
|
|
70
|
+}
|
|
71
|
+
|
|
72
|
+// ######################################################################################################################
|
|
73
|
+module chamfercube(xyz=[0,0,0],side=[0,0,0,0],top=[0,0,0,0],bottom=[0,0,0,0],x=false,y=false,z=false) {
|
|
74
|
+ translate([x==true?-xyz[0]/2:0,y==true?-xyz[1]/2:0,z==true?-xyz[2]/2:0]) difference() {
|
|
75
|
+ cube(xyz);
|
|
76
|
+ if(side[0]>=0) translate([0,0,xyz[2]/2]) rotate([0,0,45]) cube([side[0]*2,side[0]*3,xyz[2]+2],center=true);
|
|
77
|
+ if(side[1]>=0) translate([xyz[0],0,xyz[2]/2]) rotate([0,0,-45]) cube([side[1]*2,side[1]*3,xyz[2]+2],center=true);
|
|
78
|
+ if(side[2]>=0) translate([xyz[0],xyz[1],xyz[2]/2]) rotate([0,0,45]) cube([side[2]*2,side[2]*3,xyz[2]+2],center=true);
|
|
79
|
+ if(side[3]>=0) translate([0,xyz[1],xyz[2]/2]) rotate([0,0,-45]) cube([side[3]*2,side[3]*3,xyz[2]+2],center=true);
|
|
80
|
+ if(top[0]>=0) translate([xyz[0]/2,0,xyz[2]]) rotate([-45,0,0]) cube([xyz[0]+2,top[0]*2,top[0]*3,],center=true);
|
|
81
|
+ if(top[2]>=0) translate([xyz[0]/2,xyz[1],xyz[2]]) rotate([45,0,0]) cube([xyz[0]+2,top[2]*2,top[2]*3,],center=true);
|
|
82
|
+ if(top[3]>=0) translate([0,xyz[1]/2,xyz[2]]) rotate([0,45,0]) cube([top[3]*2,xyz[1]+2,top[3]*3,],center=true);
|
|
83
|
+ if(top[1]>=0) translate([xyz[0],xyz[1]/2,xyz[2]]) rotate([0,-45,0]) cube([top[1]*2,xyz[1]+2,top[1]*3,],center=true);
|
|
84
|
+ if(bottom[0]>=0) translate([xyz[0]/2,0,0]) rotate([45,0,0]) cube([xyz[0]+2,bottom[0]*2,bottom[0]*3,],center=true);
|
|
85
|
+ if(bottom[2]>=0) translate([xyz[0]/2,xyz[1],0]) rotate([-45,0,0]) cube([xyz[0]+2,bottom[2]*2,bottom[2]*3,],center=true);
|
|
86
|
+ if(bottom[3]>=0) translate([0,xyz[1]/2,0]) rotate([0,-45,0]) cube([bottom[3]*2,xyz[1]+2,bottom[3]*3,],center=true);
|
|
87
|
+ if(bottom[1]>=0) translate([xyz[0],xyz[1]/2,0]) rotate([0,45,0]) cube([bottom[1]*2,xyz[1]+2,bottom[1]*3,],center=true);
|
|
88
|
+ }
|
|
89
|
+}
|
|
90
|
+
|
|
91
|
+// ######################################################################################################################
|
|
92
|
+module fnpipe(r,r2,h,fn){
|
|
93
|
+ if (fn==undef) {
|
|
94
|
+ difference() {
|
|
95
|
+ fncylinder(r=r,h=h,$fn=2*r*3.14/fnresolution);
|
|
96
|
+ translate([0,0,-1]) fncylinder(r=r2,h=h+2,$fn=2*r*3.14/fnresolution);
|
|
97
|
+ }
|
|
98
|
+ } else {
|
|
99
|
+ difference() {
|
|
100
|
+ fncylinder(r=r,h=h,fn=fn);
|
|
101
|
+ translate([0,0,-1]) fncylinder(r=r2,h=h+2,fn=fn);
|
|
102
|
+ }
|
|
103
|
+ }
|
|
104
|
+}
|
|
105
|
+
|
|
106
|
+// ######################################################################################################################
|
|
107
|
+module fncylinder(r,r2,h,fn){
|
|
108
|
+ if (fn==undef) {
|
|
109
|
+ if (r2==undef) {
|
|
110
|
+ cylinder(r=r,h=h,$fn=2*r*3.14/fnresolution);
|
|
111
|
+ } else {
|
|
112
|
+ cylinder(r=r,r2=r2,h=h,$fn=2*r*3.14/fnresolution);
|
|
113
|
+ }
|
|
114
|
+ } else {
|
|
115
|
+ if (r2==undef) {
|
|
116
|
+ cylinder(r=r,h=h,$fn=fn);
|
|
117
|
+ } else {
|
|
118
|
+ cylinder(r=r,r2=r2,h=h,$fn=fn);
|
|
119
|
+ }
|
|
120
|
+ }
|
|
121
|
+}
|