|
@@ -0,0 +1,184 @@
|
|
1
|
+/*
|
|
2
|
+ * Based on "Y-Axis Bracket" by "daveth26":
|
|
3
|
+ * http://www.thingiverse.com/thing:1104535
|
|
4
|
+ *
|
|
5
|
+ * Recreated and modified by:
|
|
6
|
+ * Thomas Buck <xythobuz@xythobuz.de> in March 2016
|
|
7
|
+ *
|
|
8
|
+ * Licensed under the Creative Commons - Attribution license.
|
|
9
|
+ *
|
|
10
|
+ * This part has been modified to use a 25mm fan instead of
|
|
11
|
+ * a 30mm fan. This can be set in the parameters, but beware
|
|
12
|
+ * of any problems, I have not tested any other sizes.
|
|
13
|
+ *
|
|
14
|
+ * The Fabrikator Mini V1.5 include a new bracket that prevents
|
|
15
|
+ * the old design from sliding fully onto the stepper motor.
|
|
16
|
+ * A parameter has been added (fab_mini_v15) that allows
|
|
17
|
+ * reverting to the old behvior.
|
|
18
|
+ *
|
|
19
|
+ * For V1.5, a height of 25mm is suggested, as this provides
|
|
20
|
+ * enough stability with the big cut-out. To revert to something
|
|
21
|
+ * like the original model, set the height to 15mm (and
|
|
22
|
+ * fab_mini_v15 to "false").
|
|
23
|
+ */
|
|
24
|
+
|
|
25
|
+// -----------------------------------------------------------
|
|
26
|
+
|
|
27
|
+height = 25; // [14:26]
|
|
28
|
+
|
|
29
|
+// cut-out for new part in Fabrikator Mini V1.5
|
|
30
|
+fab_mini_v15 = "true"; // [true, false]
|
|
31
|
+
|
|
32
|
+// default for 25mm fan: 23
|
|
33
|
+fan_hole_diameter = 23; // [26]
|
|
34
|
+
|
|
35
|
+// default for 25mm fan: 20
|
|
36
|
+fan_screw_distance = 20; // [22]
|
|
37
|
+
|
|
38
|
+// default for 25mm fan: 3
|
|
39
|
+fan_screw_diameter = 3; // [1:5]
|
|
40
|
+
|
|
41
|
+fan_hole_angled = "true"; // [true, false]
|
|
42
|
+
|
|
43
|
+// -----------------------------------------------------------
|
|
44
|
+
|
|
45
|
+/* [Hidden] */
|
|
46
|
+
|
|
47
|
+fan_angle = 10;
|
|
48
|
+
|
|
49
|
+$fn = 25;
|
|
50
|
+
|
|
51
|
+fan_screw_pos = fan_screw_distance / 2;
|
|
52
|
+fan_screw_neg = -fan_screw_pos;
|
|
53
|
+
|
|
54
|
+// -----------------------------------------------------------
|
|
55
|
+
|
|
56
|
+module ellipse(w, l, d) {
|
|
57
|
+ cube([d, l - w, w]);
|
|
58
|
+
|
|
59
|
+ translate([0, 0, w / 2])
|
|
60
|
+ rotate([0, 90, 0])
|
|
61
|
+ cylinder(d = w, h = d);
|
|
62
|
+
|
|
63
|
+ translate([0, l - w, w / 2])
|
|
64
|
+ rotate([0, 90, 0])
|
|
65
|
+ cylinder(d = w, h = d);
|
|
66
|
+}
|
|
67
|
+
|
|
68
|
+// -----------------------------------------------------------
|
|
69
|
+
|
|
70
|
+// bottom left arm
|
|
71
|
+if (fab_mini_v15 == "true") {
|
|
72
|
+ translate([0, 0, 8])
|
|
73
|
+ cube([30, 2, 2]);
|
|
74
|
+} else {
|
|
75
|
+ translate([0, 0, 8])
|
|
76
|
+ cube([30, 2, height - 8]);
|
|
77
|
+}
|
|
78
|
+
|
|
79
|
+// bottom left nub
|
|
80
|
+if (fab_mini_v15 == "true") {
|
|
81
|
+ translate([0, 0, 8])
|
|
82
|
+ cube([1, 3, 2]);
|
|
83
|
+} else {
|
|
84
|
+ translate([0, 0, 8])
|
|
85
|
+ cube([1, 3, height - 8]);
|
|
86
|
+}
|
|
87
|
+
|
|
88
|
+if (height > 20) {
|
|
89
|
+ // top left arm
|
|
90
|
+ translate([0, 0, 20])
|
|
91
|
+ cube([30, 2, height - 20]);
|
|
92
|
+
|
|
93
|
+ // top left nub
|
|
94
|
+ translate([0, 0, 20])
|
|
95
|
+ cube([1, 3, height - 20]);
|
|
96
|
+}
|
|
97
|
+
|
|
98
|
+// left back support
|
|
99
|
+translate([26, 0, 0])
|
|
100
|
+ cube([4, 2, height]);
|
|
101
|
+
|
|
102
|
+// mid left support
|
|
103
|
+translate([15, 0, 10])
|
|
104
|
+ cube([11, 2, height - 10]);
|
|
105
|
+
|
|
106
|
+// right arm
|
|
107
|
+difference() {
|
|
108
|
+ translate([0, 30.5, 0])
|
|
109
|
+ cube([30, 2, height]);
|
|
110
|
+
|
|
111
|
+ translate([22, 28, 4])
|
|
112
|
+ rotate([0, 0, 90])
|
|
113
|
+ ellipse(7, 20, 8);
|
|
114
|
+
|
|
115
|
+ if (height > 23) {
|
|
116
|
+ translate([22, 28, 15])
|
|
117
|
+ rotate([0, 0, 90])
|
|
118
|
+ ellipse(7, 20, 8);
|
|
119
|
+ }
|
|
120
|
+}
|
|
121
|
+
|
|
122
|
+// right nub
|
|
123
|
+translate([0, 29.5, 0])
|
|
124
|
+ cube([1, 3, height]);
|
|
125
|
+
|
|
126
|
+// back wall
|
|
127
|
+difference() {
|
|
128
|
+ translate([28, 0, 0])
|
|
129
|
+ cube([2, 32, height]);
|
|
130
|
+
|
|
131
|
+ translate([25, 10, 4])
|
|
132
|
+ ellipse(7, 20, 8);
|
|
133
|
+
|
|
134
|
+ if (height > 23) {
|
|
135
|
+ translate([25, 10, 15])
|
|
136
|
+ ellipse(7, 20, 8);
|
|
137
|
+ }
|
|
138
|
+}
|
|
139
|
+
|
|
140
|
+difference() {
|
|
141
|
+ // base
|
|
142
|
+ translate([0, 0, -5])
|
|
143
|
+ cube([30, 32.5, 5]);
|
|
144
|
+
|
|
145
|
+ // cut off angled bottom part
|
|
146
|
+ rotate([0, -fan_angle, 0])
|
|
147
|
+ translate([-2, -1, -11])
|
|
148
|
+ cube([34, 34, 6]);
|
|
149
|
+
|
|
150
|
+ // main fan hole
|
|
151
|
+ if (fan_hole_angled == "true") {
|
|
152
|
+ rotate([0, -fan_angle, 0])
|
|
153
|
+ translate([14.5, 16, -7])
|
|
154
|
+ cylinder(d = fan_hole_diameter, h = 10);
|
|
155
|
+ } else {
|
|
156
|
+ translate([14.5, 16, -7])
|
|
157
|
+ cylinder(d = fan_hole_diameter, h = 10);
|
|
158
|
+ }
|
|
159
|
+
|
|
160
|
+ // fan screw holes
|
|
161
|
+ for (i = [1 : 2]) {
|
|
162
|
+ for (j = [1 : 2]) {
|
|
163
|
+ rotate([0, -fan_angle, 0])
|
|
164
|
+ translate([14.5, 16, -7])
|
|
165
|
+ translate([(((i % 2) == 0) ? fan_screw_pos : fan_screw_neg),
|
|
166
|
+ (((j % 2) == 0) ? fan_screw_pos : fan_screw_neg), 0])
|
|
167
|
+ cylinder(d = fan_screw_diameter, h = 10);
|
|
168
|
+ }
|
|
169
|
+ }
|
|
170
|
+
|
|
171
|
+ // big air hole
|
|
172
|
+ translate([8, 33, -1.8])
|
|
173
|
+ rotate([90, 0, 0])
|
|
174
|
+ cylinder(d = 2, h = 34);
|
|
175
|
+
|
|
176
|
+ // small air hole
|
|
177
|
+ translate([12, 33, -1.5])
|
|
178
|
+ rotate([90, 0, 0])
|
|
179
|
+ cylinder(d = 1.5, h = 34);
|
|
180
|
+
|
|
181
|
+ // elliptical air hole
|
|
182
|
+ translate([-1, 11, -3.5])
|
|
183
|
+ ellipse(2, 12, 8);
|
|
184
|
+}
|