From: Jose Ignacio Croce Busquets Date: Sat, 15 Feb 2014 20:16:37 +0000 (-0200) Subject: General segment separation from 7 segment digit file X-Git-Url: http://crossforests.com/gitweb?a=commitdiff_plain;h=eb543603590811236f6997f0f223d5ecb4a3a98b;p=3dmodels%2Fseg_digit.git General segment separation from 7 segment digit file --- diff --git a/digit7.scad b/digit7.scad new file mode 100644 index 0000000..e199e04 --- /dev/null +++ b/digit7.scad @@ -0,0 +1,359 @@ +/* + * seg_digit.scad : 7 segment and 16 segment digit generation library + * + * Author : Jose Ignacio Croce Busquets + * + * Date : 08-DEC-2013 + * + * Usage + * The module contains the following public methods + * + * digit7_str(s, h, on) + * Writes a string from "0123456789ABCDEFabcdef" chars + * as a 7 digit display of the specified height. + * on = on-relief/low-relief flag + * digit7_int(v, h) Writes an integer value in decimal representation + * as a 7 digit display of the specified height. + * digit7_float(v, h) Writes a floating point value in decimal representation + * as a 7 digit display of the specified height. + */ + +/* Include general definitions */ +use + +/* + * Creates a 7 segment display for the given string + * s String to display. Characters should be within "0"-"9", "A"-"F", + * "a"-"f" ranges. Otherwise nothing is shown. + * h digit height + * on on-relief/low-relief flag + */ +module digit7_str(s, h, on = true) +{ + for(i = [ 0 : len(s) ]) + { + translate(v = [ i * digit_spacing(h), 0, 0 ]) + put_digit7(s[i], h, on); + } +} + +/* + * Creates a 7 segment display for an integer value (decimal) + * v Value to display + * h digit height + * on on-relief/low-relief flag + */ +module digit7_int(v, h, on = true) +{ + digit7_str(str(v), h, on); +} + +/* + * Creates a 7 segment display for a float value + * v Value to display + * h digit height + * on on-relief/low-relief flag + */ +module digit7_float(v, h, on = true) +{ + s = str(v); + if (search(".", s)[0] == undef) { + digit7_str(s, h, on); // integer value + } else { + for (i = [ 0 : search(".", s)[0] - 1 ]) { + translate(v = [ i * digit_spacing(h), 0, 0 ]) + put_digit7(s[i], h, on); + } + translate(v = [ search(".", s)[0] * digit_spacing(h), 0, 0 ]) + segment_dp(h, on); + for (i = [ search(".", s)[0] : len(s) ]) { + translate(v = [ (i - 1) * digit_spacing(h) + segment_length(h) * 0.5 + , 0 + , 0 ]) + put_digit7(s[i], h, on); + } + } +} + +/* + * Creates a 7 segment display for the given character + * c Character to display. Should be within "0"-"9", "A"-"F", "a"-"f" + * ranges. Otherwise nothing is shown. + * h digit height + * on on-relief/low-relief flag + */ +module put_digit7(c, h, on = true) +{ + if (c == "0") digit7_0(h, on); + if (c == "1") digit7_1(h, on); + if (c == "2") digit7_2(h, on); + if (c == "3") digit7_3(h, on); + if (c == "4") digit7_4(h, on); + if (c == "5") digit7_5(h, on); + if (c == "6") digit7_6(h, on); + if (c == "7") digit7_7(h, on); + if (c == "8") digit7_8(h, on); + if (c == "9") digit7_9(h, on); + if (c == "A" || c == "a") digit7_A(h, on); + if (c == "B" || c == "b") digit7_B(h, on); + if (c == "C" || c == "c") digit7_C(h, on); + if (c == "D" || c == "d") digit7_D(h, on); + if (c == "E" || c == "e") digit7_E(h, on); + if (c == "F" || c == "f") digit7_F(h, on); +} + +//--------------------------------------------------------------------------- +// End of public modules - Just jump to the examples +//--------------------------------------------------------------------------- + +/* Draws 0 in a 7 segment digit + * h digit length + * on on-relief/low-relief flag + */ +module digit7_0(h, on = true) +{ + segment_a(segment_length(h), on); + segment_b(segment_length(h), on); + segment_c(segment_length(h), on); + segment_d(segment_length(h), on); + segment_e(segment_length(h), on); + segment_f(segment_length(h), on); +} + +/* Draws 1 in a 7 segment digit + * h digit length + * on on-relief/low-relief flag + */ +module digit7_1(h, on = true) +{ + segment_b(segment_length(h), on); + segment_c(segment_length(h), on); +} + +/* Draws 2 in a 7 segment digit + * h digit length + * on on-relief/low-relief flag + */ +module digit7_2(h, on = true) +{ + segment_a(segment_length(h), on); + segment_b(segment_length(h), on); + segment_d(segment_length(h), on); + segment_e(segment_length(h), on); + segment_g(segment_length(h), on); +} + +/* Draws 3 in a 7 segment digit + * h digit length + * on on-relief/low-relief flag + */ +module digit7_3(h, on = true) +{ + segment_a(segment_length(h), on); + segment_b(segment_length(h), on); + segment_c(segment_length(h), on); + segment_d(segment_length(h), on); + segment_g(segment_length(h), on); +} + +/* Draws 4 in a 7 segment digit + * h digit length + * on on-relief/low-relief flag + */ +module digit7_4(h, on = true) +{ + segment_b(segment_length(h), on); + segment_c(segment_length(h), on); + segment_f(segment_length(h), on); + segment_g(segment_length(h), on); +} + +/* Draws 5 in a 7 segment digit + * h digit length + * on on-relief/low-relief flag + */ +module digit7_5(h, on = true) +{ + segment_a(segment_length(h), on); + segment_c(segment_length(h), on); + segment_d(segment_length(h), on); + segment_f(segment_length(h), on); + segment_g(segment_length(h), on); +} + +/* Draws 6 in a 7 segment digit + * h digit length + * on on-relief/low-relief flag + */ +module digit7_6(h, on = true) +{ + segment_a(segment_length(h), on); + segment_c(segment_length(h), on); + segment_d(segment_length(h), on); + segment_e(segment_length(h), on); + segment_f(segment_length(h), on); + segment_g(segment_length(h), on); +} + +/* Draws 7 in a 7 segment digit + * h digit length + * on on-relief/low-relief flag + */ +module digit7_7(h, on = true) +{ + segment_a(segment_length(h), on); + segment_b(segment_length(h), on); + segment_c(segment_length(h), on); +} + +/* Draws 8 in a 7 segment digit + * h digit length + * on on-relief/low-relief flag + */ +module digit7_8(h, on = true) +{ + segment_a(segment_length(h), on); + segment_b(segment_length(h), on); + segment_c(segment_length(h), on); + segment_d(segment_length(h), on); + segment_e(segment_length(h), on); + segment_f(segment_length(h), on); + segment_g(segment_length(h), on); +} + +/* Draws 9 in a 7 segment digit + * h digit length + * on on-relief/low-relief flag + */ +module digit7_9(h, on = true) +{ + segment_a(segment_length(h), on); + segment_b(segment_length(h), on); + segment_c(segment_length(h), on); + segment_f(segment_length(h), on); + segment_g(segment_length(h), on); +} + +/* Draws A in a 7 segment digit + * h digit length + * on on-relief/low-relief flag + */ +module digit7_A(h, on = true) +{ + segment_a(segment_length(h), on); + segment_b(segment_length(h), on); + segment_c(segment_length(h), on); + segment_e(segment_length(h), on); + segment_f(segment_length(h), on); + segment_g(segment_length(h), on); +} + +/* Draws b in a 7 segment digit + * h digit length + * on on-relief/low-relief flag + */ +module digit7_B(h, on = true) +{ + segment_c(segment_length(h), on); + segment_d(segment_length(h), on); + segment_e(segment_length(h), on); + segment_f(segment_length(h), on); + segment_g(segment_length(h), on); +} + +/* Draws C in a 7 segment digit + * h digit length + * on on-relief/low-relief flag + */ +module digit7_C(h, on = true) +{ + segment_a(segment_length(h), on); + segment_d(segment_length(h), on); + segment_e(segment_length(h), on); + segment_f(segment_length(h), on); +} + +/* Draws d in a 7 segment digit + * h digit length + * on on-relief/low-relief flag + */ +module digit7_D(h, on = true) +{ + segment_b(segment_length(h), on); + segment_c(segment_length(h), on); + segment_d(segment_length(h), on); + segment_e(segment_length(h), on); + segment_g(segment_length(h), on); +} + +/* Draws E in a 7 segment digit + * h digit length + * on on-relief/low-relief flag + */ +module digit7_E(h, on = true) +{ + segment_a(segment_length(h), on); + segment_d(segment_length(h), on); + segment_e(segment_length(h), on); + segment_f(segment_length(h), on); + segment_g(segment_length(h), on); +} + +/* Draws F in a 7 segment digit + * h digit length + * on on-relief/low-relief flag + */ +module digit7_F(h, on = true) +{ + segment_a(segment_length(h), on); + segment_e(segment_length(h), on); + segment_f(segment_length(h), on); + segment_g(segment_length(h), on); +} + +//--------------------------------------------------------------------------- +// Examples +//--------------------------------------------------------------------------- + +ex_height = 100; // Digit height for all examples + +// Base for on-relief examples +translate(v = [ 0, 0, -2 * segment_radius(ex_height) ]) + cube(size = [ (len("0123456789ABCDEF") + 2) * digit_spacing(ex_height) + , 5 * ex_height + , 2 * segment_radius(ex_height) + ]); + +// On relief examples +translate(v = [ digit_spacing(ex_height), 3.5 * ex_height, 0 ]) + digit7_str("0123456789ABCDEF", ex_height); + +translate(v = [ digit_spacing(ex_height), 2 * ex_height, 0 ]) + digit7_int(65535, ex_height); + +translate(v = [ digit_spacing(ex_height), 0.5 * ex_height, 0 ]) + digit7_float(123.45, ex_height); + +// Low relief examples +// Low relief effect is performed by substracting from the base +translate(v = [ 0, -5 * ex_height, 0 ]) + difference() + { + // Base for low-relief examples + translate(v = [ 0, 0, -2 * segment_radius(ex_height) ]) + cube(size = [ (len("0123456789ABCDEF") + 2) * digit_spacing(ex_height) + , 5 * ex_height + , 2 * segment_radius(ex_height) + ]); + + translate(v = [ digit_spacing(ex_height), 3.5 * ex_height, 0 ]) + digit7_str("0123456789ABCDEF", ex_height, on = false); + + translate(v = [ digit_spacing(ex_height), 2 * ex_height, 0 ]) + digit7_int(65535, 100, on = false); + + translate(v = [ digit_spacing(ex_height), 0.5 * ex_height, 0 ]) + digit7_float(123.45, 100, on = false); + } + +/* EOF : seg_digit.scad */ diff --git a/seg_digit.scad b/seg_digit.scad index df4120d..7f9b2d1 100644 --- a/seg_digit.scad +++ b/seg_digit.scad @@ -3,19 +3,26 @@ * * Author : Jose Ignacio Croce Busquets * - * Date : 08-DEC-2013 + * Date : 15-FEB-2014 * * Usage * The module contains the following public methods * - * digit7_str(s, h, on) - * Writes a string from "0123456789ABCDEFabcdef" chars - * as a 7 digit display of the specified height. - * on = on-relief/low-relief flag - * digit7_int(v, h) Writes an integer value in decimal representation - * as a 7 digit display of the specified height. - * digit7_float(v, h) Writes a floating point value in decimal representation - * as a 7 digit display of the specified height. + * segment_a(size, on = true) + * segment_b(size, on = true) + * segment_c(size, on = true) + * segment_d(size, on = true) + * segment_e(size, on = true) + * segment_f(size, on = true) + * segment_g(size, on = true) Write the corresponding segment from a 7 + * segment display + * size = segment size + * on = on-relief/low-relief flag + * + * segment_dp(digit_size, on = true) + * Write the decimal point for a 7 segment display + * digit_size = whole digit size + * on = on-relief/low-relief flag */ /* Segment length based on digit height */ @@ -30,85 +37,115 @@ function segment_radius(seglen) = seglen / 10; /* Position (horiz) for next digit based on digit length */ function digit_spacing(height) = segment_length(height) * 1.5; -/* - * Creates a 7 segment display for the given string - * s String to display. Characters should be within "0"-"9", "A"-"F", - * "a"-"f" ranges. Otherwise nothing is shown. - * h digit height +/* Draws A segment (top) + * size segment size * on on-relief/low-relief flag */ -module digit7_str(s, h, on = true) +module segment_a(size, on = true) { - for(i = [ 0 : len(s) ]) - { - translate(v = [ i * digit_spacing(h), 0, 0 ]) - put_digit7(s[i], h, on); - } + translate(v = [ 0, digit_height(size), 0 ]) + segment(size, on = on); } -/* - * Creates a 7 segment display for an integer value (decimal) - * v Value to display - * h digit height - * on on-relief/low-relief flag +/* Draws B segment (right top) + * size segment size + * on on-relief/low-relief flag */ -module digit7_int(v, h, on = true) +module segment_b(size, on = true) { - digit7_str(str(v), h, on); + translate(v = [ 0, size, 0 ]) + segment_c(size, on = on); } -/* - * Creates a 7 segment display for a float value - * v Value to display - * h digit height - * on on-relief/low-relief flag +/* Draws C segment (right bottom) + * size segment size + * on on-relief/low-relief flag */ -module digit7_float(v, h, on = true) +module segment_c(size, on = true) { - s = str(v); - if (search(".", s)[0] == undef) { - digit7_str(s, h, on); // integer value - } else { - for (i = [ 0 : search(".", s)[0] - 1 ]) { - translate(v = [ i * digit_spacing(h), 0, 0 ]) - put_digit7(s[i], h, on); - } - translate(v = [ search(".", s)[0] * digit_spacing(h), 0, 0 ]) - segment_dp(h, on); - for (i = [ search(".", s)[0] : len(s) ]) { - translate(v = [ (i - 1) * digit_spacing(h) + segment_length(h) * 0.5 - , 0 - , 0 ]) - put_digit7(s[i], h, on); - } - } + translate(v = [ size, size, 0 ]) + rotate(a = [ 0, 0, 270 ]) + segment(size, on = on); +} + +/* Draws D segment (bottom) + * size segment size + * on on-relief/low-relief flag + */ +module segment_d(size, on = true) +{ + segment(size, on = on); +} + +/* Draws E segment (left bottom) + * size segment size + * on on-relief/low-relief flag + */ +module segment_e(size, on = true) +{ + rotate(a = [ 0, 0, 90 ]) + segment(size, on = on); +} + +/* Draws F segment (left top) + * size segment size + * on on-relief/low-relief flag + */ +module segment_f(size, on = true) +{ + translate(v = [ 0, size, 0 ]) + segment_e(size, on = on); +} + +/* Draws G segment (middle) + * size segment size + * on on-relief/low-relief flag + */ +module segment_g(size, on = true) +{ + translate(v = [ 0, size, 0 ]) + segment_d(size, on = on); } /* - * Creates a 7 segment display for the given character - * c Character to display. Should be within "0"-"9", "A"-"F", "a"-"f" - * ranges. Otherwise nothing is shown. - * h digit height - * on on-relief/low-relief flag + * Draws a decimal point + * digit_size whole digit size + * on on-relief/low-relief flag */ -module put_digit7(c, h, on = true) +module segment_dp(digit_size, on = true) { - if (c == "0") digit7_0(h, on); - if (c == "1") digit7_1(h, on); - if (c == "2") digit7_2(h, on); - if (c == "3") digit7_3(h, on); - if (c == "4") digit7_4(h, on); - if (c == "5") digit7_5(h, on); - if (c == "6") digit7_6(h, on); - if (c == "7") digit7_7(h, on); - if (c == "8") digit7_8(h, on); - if (c == "9") digit7_9(h, on); - if (c == "A" || c == "a") digit7_A(h, on); - if (c == "B" || c == "b") digit7_B(h, on); - if (c == "C" || c == "c") digit7_C(h, on); - if (c == "D" || c == "d") digit7_D(h, on); - if (c == "E" || c == "e") digit7_E(h, on); - if (c == "F" || c == "f") digit7_F(h, on); + radius = segment_radius(segment_length(digit_size)); + if (on) + { + polyhedron(points = [ [ 0, 0, 0 ] + , [ 0, 2 * radius, 0 ] + , [ 2 * radius, 2 * radius, 0 ] + , [ 2 * radius, 0, 0 ] + , [ radius, radius, radius ] + ] + , triangles = [ [ 0, 1, 4 ] + , [ 1, 2, 4 ] + , [ 2, 3, 4 ] + , [ 0, 4, 3 ] + , [ 0, 3, 1 ] + , [ 1, 3, 2 ] + ]); + } else { + polyhedron(points = [ [ 0, 0, 0 ] + , [ 0, 2 * radius, 0 ] + , [ 2 * radius, 2 * radius, 0 ] + , [ 2 * radius, 0, 0 ] + , [ radius, radius, -radius ] + ] + , triangles = [ [ 0, 1, 4 ] + , [ 1, 2, 4 ] + , [ 2, 3, 4 ] + , [ 0, 4, 3 ] + , [ 0, 3, 1 ] + , [ 1, 3, 2 ] + ]); + cube(size= [ 2 * radius, 2 * radius, radius ], center = false); + } } //--------------------------------------------------------------------------- @@ -116,14 +153,14 @@ module put_digit7(c, h, on = true) //--------------------------------------------------------------------------- /* Draws a single segment - * h segment length + * size segment size * r segment radius (default = segment_radius(h)) * on on-relief/low-relief flag */ -module segment(h, r = 0, on = true) +module segment(size, r = 0, on = true) { - radius = (r == 0) ? segment_radius(h) : r; - length = (h > 2 * radius) ? h - 2 * radius : 0; + radius = (r == 0) ? segment_radius(size) : r; + length = (size > 2 * radius) ? size - 2 * radius : 0; if (on) { polyhedron(points = [ [ 0, 0, 0 ] @@ -183,365 +220,61 @@ module segment(h, r = 0, on = true) } } -/* - * Draws a decimal point - * h Digit height - * on on-relief/low-relief flag - */ -module segment_dp(h, on = true) -{ - radius = segment_radius(segment_length(h)); - if (on) - { - polyhedron(points = [ [ 0, 0, 0 ] - , [ 0, 2 * radius, 0 ] - , [ 2 * radius, 2 * radius, 0 ] - , [ 2 * radius, 0, 0 ] - , [ radius, radius, radius ] - ] - , triangles = [ [ 0, 1, 4 ] - , [ 1, 2, 4 ] - , [ 2, 3, 4 ] - , [ 0, 4, 3 ] - , [ 0, 3, 1 ] - , [ 1, 3, 2 ] - ]); - } else { - polyhedron(points = [ [ 0, 0, 0 ] - , [ 0, 2 * radius, 0 ] - , [ 2 * radius, 2 * radius, 0 ] - , [ 2 * radius, 0, 0 ] - , [ radius, radius, -radius ] - ] - , triangles = [ [ 0, 1, 4 ] - , [ 1, 2, 4 ] - , [ 2, 3, 4 ] - , [ 0, 4, 3 ] - , [ 0, 3, 1 ] - , [ 1, 3, 2 ] - ]); - cube(size= [ 2 * radius, 2 * radius, radius ], center = false); - } -} - -/* Draws A segment (top) - * h segment length - * on on-relief/low-relief flag - */ -module segment_a(h, on = true) -{ - translate(v = [ 0, digit_height(h), 0 ]) - segment(h, on = on); -} - -/* Draws B segment (right top) - * h segment length - * on on-relief/low-relief flag - */ -module segment_b(h, on = true) -{ - translate(v = [ 0, h, 0 ]) - segment_c(h, on = on); -} - -/* Draws C segment (right bottom) - * h segment length - * on on-relief/low-relief flag - */ -module segment_c(h, on = true) -{ - translate(v = [ h, h, 0 ]) - rotate(a = [ 0, 0, 270 ]) - segment(h, on = on); -} - -/* Draws D segment (bottom) - * h segment length - * on on-relief/low-relief flag - */ -module segment_d(h, on = true) -{ - segment(h, on = on); -} - -/* Draws E segment (left bottom) - * h segment length - * on on-relief/low-relief flag - */ -module segment_e(h, on = true) -{ - rotate(a = [ 0, 0, 90 ]) - segment(h, on = on); -} - -/* Draws F segment (left top) - * h segment length - * on on-relief/low-relief flag - */ -module segment_f(h, on = true) -{ - translate(v = [ 0, h, 0 ]) - segment_e(h, on = on); -} - -/* Draws G segment (middle) - * h segment length - * on on-relief/low-relief flag - */ -module segment_g(h, on = true) -{ - translate(v = [ 0, h, 0 ]) - segment_d(h, on = on); -} - -/* Draws 0 in a 7 segment digit - * h digit length - * on on-relief/low-relief flag - */ -module digit7_0(h, on = true) -{ - segment_a(segment_length(h), on); - segment_b(segment_length(h), on); - segment_c(segment_length(h), on); - segment_d(segment_length(h), on); - segment_e(segment_length(h), on); - segment_f(segment_length(h), on); -} - -/* Draws 1 in a 7 segment digit - * h digit length - * on on-relief/low-relief flag - */ -module digit7_1(h, on = true) -{ - segment_b(segment_length(h), on); - segment_c(segment_length(h), on); -} - -/* Draws 2 in a 7 segment digit - * h digit length - * on on-relief/low-relief flag - */ -module digit7_2(h, on = true) -{ - segment_a(segment_length(h), on); - segment_b(segment_length(h), on); - segment_d(segment_length(h), on); - segment_e(segment_length(h), on); - segment_g(segment_length(h), on); -} - -/* Draws 3 in a 7 segment digit - * h digit length - * on on-relief/low-relief flag - */ -module digit7_3(h, on = true) -{ - segment_a(segment_length(h), on); - segment_b(segment_length(h), on); - segment_c(segment_length(h), on); - segment_d(segment_length(h), on); - segment_g(segment_length(h), on); -} - -/* Draws 4 in a 7 segment digit - * h digit length - * on on-relief/low-relief flag - */ -module digit7_4(h, on = true) -{ - segment_b(segment_length(h), on); - segment_c(segment_length(h), on); - segment_f(segment_length(h), on); - segment_g(segment_length(h), on); -} - -/* Draws 5 in a 7 segment digit - * h digit length - * on on-relief/low-relief flag - */ -module digit7_5(h, on = true) -{ - segment_a(segment_length(h), on); - segment_c(segment_length(h), on); - segment_d(segment_length(h), on); - segment_f(segment_length(h), on); - segment_g(segment_length(h), on); -} - -/* Draws 6 in a 7 segment digit - * h digit length - * on on-relief/low-relief flag - */ -module digit7_6(h, on = true) -{ - segment_a(segment_length(h), on); - segment_c(segment_length(h), on); - segment_d(segment_length(h), on); - segment_e(segment_length(h), on); - segment_f(segment_length(h), on); - segment_g(segment_length(h), on); -} - -/* Draws 7 in a 7 segment digit - * h digit length - * on on-relief/low-relief flag - */ -module digit7_7(h, on = true) -{ - segment_a(segment_length(h), on); - segment_b(segment_length(h), on); - segment_c(segment_length(h), on); -} - -/* Draws 8 in a 7 segment digit - * h digit length - * on on-relief/low-relief flag - */ -module digit7_8(h, on = true) -{ - segment_a(segment_length(h), on); - segment_b(segment_length(h), on); - segment_c(segment_length(h), on); - segment_d(segment_length(h), on); - segment_e(segment_length(h), on); - segment_f(segment_length(h), on); - segment_g(segment_length(h), on); -} - -/* Draws 9 in a 7 segment digit - * h digit length - * on on-relief/low-relief flag - */ -module digit7_9(h, on = true) -{ - segment_a(segment_length(h), on); - segment_b(segment_length(h), on); - segment_c(segment_length(h), on); - segment_f(segment_length(h), on); - segment_g(segment_length(h), on); -} - -/* Draws A in a 7 segment digit - * h digit length - * on on-relief/low-relief flag - */ -module digit7_A(h, on = true) -{ - segment_a(segment_length(h), on); - segment_b(segment_length(h), on); - segment_c(segment_length(h), on); - segment_e(segment_length(h), on); - segment_f(segment_length(h), on); - segment_g(segment_length(h), on); -} - -/* Draws b in a 7 segment digit - * h digit length - * on on-relief/low-relief flag - */ -module digit7_B(h, on = true) -{ - segment_c(segment_length(h), on); - segment_d(segment_length(h), on); - segment_e(segment_length(h), on); - segment_f(segment_length(h), on); - segment_g(segment_length(h), on); -} - -/* Draws C in a 7 segment digit - * h digit length - * on on-relief/low-relief flag - */ -module digit7_C(h, on = true) -{ - segment_a(segment_length(h), on); - segment_d(segment_length(h), on); - segment_e(segment_length(h), on); - segment_f(segment_length(h), on); -} - -/* Draws d in a 7 segment digit - * h digit length - * on on-relief/low-relief flag - */ -module digit7_D(h, on = true) -{ - segment_b(segment_length(h), on); - segment_c(segment_length(h), on); - segment_d(segment_length(h), on); - segment_e(segment_length(h), on); - segment_g(segment_length(h), on); -} - -/* Draws E in a 7 segment digit - * h digit length - * on on-relief/low-relief flag - */ -module digit7_E(h, on = true) -{ - segment_a(segment_length(h), on); - segment_d(segment_length(h), on); - segment_e(segment_length(h), on); - segment_f(segment_length(h), on); - segment_g(segment_length(h), on); -} - -/* Draws F in a 7 segment digit - * h digit length - * on on-relief/low-relief flag - */ -module digit7_F(h, on = true) -{ - segment_a(segment_length(h), on); - segment_e(segment_length(h), on); - segment_f(segment_length(h), on); - segment_g(segment_length(h), on); -} - //--------------------------------------------------------------------------- // Examples //--------------------------------------------------------------------------- -ex_height = 100; // Digit height for all examples +ex_seglen = 100; // segment length for all examples // Base for on-relief examples -translate(v = [ 0, 0, -2 * segment_radius(ex_height) ]) - cube(size = [ (len("0123456789ABCDEF") + 2) * digit_spacing(ex_height) - , 5 * ex_height - , 2 * segment_radius(ex_height) +translate(v = [ 0, 0, -2 * segment_radius(digit_height(ex_seglen)) ]) + cube(size = [ 2 * digit_spacing(digit_height(ex_seglen)) + , 2 * digit_height(ex_seglen) + , 2 * segment_radius(digit_height(ex_seglen)) ]); // On relief examples -translate(v = [ digit_spacing(ex_height), 3.5 * ex_height, 0 ]) - digit7_str("0123456789ABCDEF", ex_height); - -translate(v = [ digit_spacing(ex_height), 2 * ex_height, 0 ]) - digit7_int(65535, ex_height); - -translate(v = [ digit_spacing(ex_height), 0.5 * ex_height, 0 ]) - digit7_float(123.45, ex_height); +translate(v = [ digit_spacing(digit_height(ex_seglen)) / 2 + , digit_height(ex_seglen) / 2 + , 0 ]) +{ + segment_a(ex_seglen); + segment_b(ex_seglen); + segment_c(ex_seglen); + segment_d(ex_seglen); + segment_e(ex_seglen); + segment_f(ex_seglen); + segment_g(ex_seglen); + translate(v = [ digit_spacing(digit_height(ex_seglen)), 0, 0 ]) + segment_dp(digit_height(ex_seglen)); +} // Low relief examples // Low relief effect is performed by substracting from the base -translate(v = [ 0, -5 * ex_height, 0 ]) +translate(v = [ 2 * digit_spacing(digit_height(ex_seglen)), 0, 0 ]) difference() { // Base for low-relief examples - translate(v = [ 0, 0, -2 * segment_radius(ex_height) ]) - cube(size = [ (len("0123456789ABCDEF") + 2) * digit_spacing(ex_height) - , 5 * ex_height - , 2 * segment_radius(ex_height) + translate(v = [ 0, 0, -2 * segment_radius(digit_height(ex_seglen)) ]) + cube(size = [ 2 * digit_spacing(digit_height(ex_seglen)) + , 2 * digit_height(ex_seglen) + , 2 * segment_radius(digit_height(ex_seglen)) ]); - translate(v = [ digit_spacing(ex_height), 3.5 * ex_height, 0 ]) - digit7_str("0123456789ABCDEF", ex_height, on = false); - - translate(v = [ digit_spacing(ex_height), 2 * ex_height, 0 ]) - digit7_int(65535, 100, on = false); - - translate(v = [ digit_spacing(ex_height), 0.5 * ex_height, 0 ]) - digit7_float(123.45, 100, on = false); + translate(v = [ digit_spacing(digit_height(ex_seglen)) / 2 + , digit_height(ex_seglen) / 2 + , 0 ]) + { + segment_a(ex_seglen, on = false); + segment_b(ex_seglen, on = false); + segment_c(ex_seglen, on = false); + segment_d(ex_seglen, on = false); + segment_e(ex_seglen, on = false); + segment_f(ex_seglen, on = false); + segment_g(ex_seglen, on = false); + translate(v = [ digit_spacing(digit_height(ex_seglen)), 0, 0 ]) + segment_dp(digit_height(ex_seglen)); + } } /* EOF : seg_digit.scad */