2 * seg_digit.scad : 7 segment and 16 segment digit generation library
4 * Author : Jose Ignacio Croce Busquets <jose.croce@gmail.com>
10 /* Segment length based on digit height */
11 function segment_length(height) = height / 2;
13 /* digit height based on segment length */
14 function digit_height(seglen) = 2 * seglen;
16 /* Segment radius based on segment length */
17 function segment_radius(seglen) = seglen / 10;
19 /* Position (horiz) for next digit based on digit length */
20 function digit_spacing(height) = segment_length(height) * 1.5;
22 /* Draws a single segment
24 * r segment radius (default = segment_radius(h))
26 module segment(h, r = 0)
28 radius = (r == 0) ? segment_radius(h) : r;
29 length = (h > 2 * radius) ? h - 2 * radius : 0;
30 polyhedron(points = [ [ 0, 0, 0 ]
31 , [ radius , radius, 0 ]
32 , [ radius + length, radius, 0 ]
33 , [ 2* radius + length, 0, 0 ]
34 , [ radius + length, -radius, 0 ]
35 , [ radius , -radius, 0 ]
36 , [ radius , 0, radius ]
37 , [ radius + length, 0, radius ]
39 , triangles = [ [ 0, 1, 6 ]
54 /* Draws A segment (top)
59 translate(v = [ 0, digit_height(h), 0 ])
63 /* Draws B segment (right top)
68 translate(v = [ 0, h, 0 ])
72 /* Draws C segment (right bottom)
77 translate(v = [ h, h, 0 ])
78 rotate(a = [ 0, 0, 270 ])
82 /* Draws D segment (bottom)
90 /* Draws E segment (left bottom)
95 rotate(a = [ 0, 0, 90 ])
99 /* Draws F segment (left top)
104 translate(v = [ 0, h, 0 ])
108 /* Draws G segment (middle)
113 translate(v = [ 0, h, 0 ])
117 /* Draws 0 in a 7 segment digit
122 segment_a(segment_length(h));
123 segment_b(segment_length(h));
124 segment_c(segment_length(h));
125 segment_d(segment_length(h));
126 segment_e(segment_length(h));
127 segment_f(segment_length(h));
130 /* Draws 1 in a 7 segment digit
135 segment_b(segment_length(h));
136 segment_c(segment_length(h));
139 /* Draws 2 in a 7 segment digit
144 segment_a(segment_length(h));
145 segment_b(segment_length(h));
146 segment_d(segment_length(h));
147 segment_e(segment_length(h));
148 segment_g(segment_length(h));
151 /* Draws 3 in a 7 segment digit
156 segment_a(segment_length(h));
157 segment_b(segment_length(h));
158 segment_c(segment_length(h));
159 segment_d(segment_length(h));
160 segment_g(segment_length(h));
163 /* Draws 4 in a 7 segment digit
168 segment_b(segment_length(h));
169 segment_c(segment_length(h));
170 segment_f(segment_length(h));
171 segment_g(segment_length(h));
174 /* Draws 5 in a 7 segment digit
179 segment_a(segment_length(h));
180 segment_c(segment_length(h));
181 segment_d(segment_length(h));
182 segment_f(segment_length(h));
183 segment_g(segment_length(h));
186 /* Draws 6 in a 7 segment digit
191 segment_a(segment_length(h));
192 segment_c(segment_length(h));
193 segment_d(segment_length(h));
194 segment_e(segment_length(h));
195 segment_f(segment_length(h));
196 segment_g(segment_length(h));
199 /* Draws 7 in a 7 segment digit
204 segment_a(segment_length(h));
205 segment_b(segment_length(h));
206 segment_c(segment_length(h));
209 /* Draws 8 in a 7 segment digit
214 segment_a(segment_length(h));
215 segment_b(segment_length(h));
216 segment_c(segment_length(h));
217 segment_d(segment_length(h));
218 segment_e(segment_length(h));
219 segment_f(segment_length(h));
220 segment_g(segment_length(h));
223 /* Draws 9 in a 7 segment digit
228 segment_a(segment_length(h));
229 segment_b(segment_length(h));
230 segment_c(segment_length(h));
231 segment_f(segment_length(h));
232 segment_g(segment_length(h));
235 /* Draws A in a 7 segment digit
240 segment_a(segment_length(h));
241 segment_b(segment_length(h));
242 segment_c(segment_length(h));
243 segment_e(segment_length(h));
244 segment_f(segment_length(h));
245 segment_g(segment_length(h));
248 /* Draws b in a 7 segment digit
253 segment_c(segment_length(h));
254 segment_d(segment_length(h));
255 segment_e(segment_length(h));
256 segment_f(segment_length(h));
257 segment_g(segment_length(h));
260 /* Draws C in a 7 segment digit
265 segment_a(segment_length(h));
266 segment_d(segment_length(h));
267 segment_e(segment_length(h));
268 segment_f(segment_length(h));
271 /* Draws d in a 7 segment digit
276 segment_b(segment_length(h));
277 segment_c(segment_length(h));
278 segment_d(segment_length(h));
279 segment_e(segment_length(h));
280 segment_g(segment_length(h));
283 /* Draws E in a 7 segment digit
288 segment_a(segment_length(h));
289 segment_d(segment_length(h));
290 segment_e(segment_length(h));
291 segment_f(segment_length(h));
292 segment_g(segment_length(h));
295 /* Draws F in a 7 segment digit
300 segment_a(segment_length(h));
301 segment_e(segment_length(h));
302 segment_f(segment_length(h));
303 segment_g(segment_length(h));
307 translate(v = [ digit_spacing(100), 0, 0 ])
309 translate(v = [ 2 * digit_spacing(100), 0, 0 ])
311 translate(v = [ 3 * digit_spacing(100), 0, 0 ])
313 translate(v = [ 4 * digit_spacing(100), 0, 0 ])
315 translate(v = [ 5 * digit_spacing(100), 0, 0 ])
317 translate(v = [ 6 * digit_spacing(100), 0, 0 ])
319 translate(v = [ 7 * digit_spacing(100), 0, 0 ])
321 translate(v = [ 8 * digit_spacing(100), 0, 0 ])
323 translate(v = [ 9 * digit_spacing(100), 0, 0 ])
325 translate(v = [ 10 * digit_spacing(100), 0, 0 ])
327 translate(v = [ 11 * digit_spacing(100), 0, 0 ])
329 translate(v = [ 12 * digit_spacing(100), 0, 0 ])
331 translate(v = [ 13 * digit_spacing(100), 0, 0 ])
333 translate(v = [ 14 * digit_spacing(100), 0, 0 ])
335 translate(v = [ 15 * digit_spacing(100), 0, 0 ])
338 /* EOF : seg_digit.sca.scad d */