name = "madex"; symbolPre = ""; symbolPost = ""; part = 4; //[1:base,2:text,3:preview,4:colorscad_render] use <./font/LiberationSans-Bold.ttf> use <./font/Symbola_hint.ttf> label_thickness = 1.5; font = "Liberation Sans:style=Bold"; symbolFont = "Symbola:style=Regular"; font_size = 12; font_offset = 9; $fn = 128; module tag() { difference() { linear_extrude(height = 10 + label_thickness / 2) translate([ 91.62, 9.25 ]) { difference() { union() { for (a = [0:180:180]) rotate(v = [ 0, 0, 1 ], a = a) { polygon([ [ 1, 1 ], [ 10.9, 2 ], [ 10.2, 7.5 ], [ 0, 4 ] ]); polygon([ [ 0, 0 ], [ -10.3, 5 ], [ -10.2, 8.1 ], [ -5, 8.3 ] ]); } } circle(d = 16.1, h = 15); } } #translate([ 80, 12, 0 ]) cube([ 10, 10, 20 ]); } translate([ 88.7, 9.25, 0 ]) cube([ 181, 20, label_thickness ], center = true); translate([ 157.5, 12.6, 0 ]) cube([ 17, 5, 4 + label_thickness / 2 ]); translate([ 150.8, 4, 0 ]) cube([ 3, 10, 4 + label_thickness / 2 ]); translate([ 156.2, 4, 0 ]) cube([ 3, 10, 4 + label_thickness / 2 ]); translate([ 2, 1.1, 0 ]) cube([ 60, 3, 10 + label_thickness / 2 ]); translate([ 2, 15, 0 ]) cube([ 60, 3, 10 + label_thickness / 2 ]); translate([ 2, 3.6, label_thickness / 2 ]) rotate([ 0, 90, 0 ]) cylinder(r = label_thickness, h = 60); translate([ 2, 15.5, label_thickness / 2 ]) rotate([ 0, 90, 0 ]) cylinder(r = label_thickness, h = 60); } module name(str) { translate( [ -9 + 15, font_offset + font_size / 2, -label_thickness / 2 + 0.29 ]) rotate(v = [ 1, 0, 0 ], a = 180) linear_extrude(0.3) { text(symbolPre, font_size, symbolFont); symbolPreSize = textmetrics(symbolPre, font_size, font); translate([ symbolPreSize.size[0] + symbolPreSize.advance[0], 0, 0 ]) { text(str, size = font_size, font = font); translate([ textSize.advance[0], 0, 0 ]) text(symbolPost, font_size, symbolFont); } textSize = textmetrics(str, size = font_size, font = font); } } if (part < 4) { difference() { if (part == 1) tag(); color("black") name(name); } if (part == 3) difference() { color("limegreen") tag(); color("black") name(name); } } else { color("limegreen") difference() { tag(); name(name); } color("black") name(name); } !tag();