AuerNameTag/AuerNameTag.scad

60 lines
1.8 KiB
OpenSCAD

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();