AuerNameTag/AuerNameTag.scad

97 lines
2.7 KiB
OpenSCAD

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()
{
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([ 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);
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);
}
}
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);
}