name="madex"; symbolPre=""; symbolPost=""; part=3; //[1:base,2:text,3:preview] 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() { 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); } } 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([20, 3, 4 + label_thickness/2]); translate([30, 15, 0]) cube([20, 3, 4 + label_thickness/2]); } 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); echo (symbolPreSize); translate([symbolPreSize.size[0]+symbolPreSize.advance[0],0,0]){ text(str, size=font_size, font = font); echo(textSize); translate([textSize.advance[0],0,0]) text(symbolPost,font_size,symbolFont); } textSize=textmetrics(str, size=font_size, font = font); } } difference() { if(part==1)tag(); color("black")name(name); } if(part==3)color("limegreen")tag();