AuerNameTag/AuerNameTag.scad

106 lines
3.0 KiB
OpenSCAD
Raw Normal View History

2024-07-18 09:16:59 +02:00
name = "madex";
symbolPre = "";
symbolPost = "";
part = 4; //[1:base,2:text,3:preview,4:colorscad_render]
2024-03-31 22:20:04 +02:00
2024-07-18 09:16:59 +02:00
use <./font/LiberationSans-Bold.ttf>
use <./font/Symbola_hint.ttf>
label_thickness = 1.5;
2024-03-31 22:20:04 +02:00
font = "Liberation Sans:style=Bold";
2024-07-18 09:16:59 +02:00
symbolFont = "Symbola:style=Regular";
2024-03-31 22:20:04 +02:00
font_size = 12;
font_offset = 9;
$fn = 128;
2024-07-18 09:16:59 +02:00
module
tag()
{
2024-08-01 12:47:32 +02:00
difference()
2024-07-18 09:16:59 +02:00
{
2024-08-01 12:47:32 +02:00
linear_extrude(height = 10 + label_thickness / 2)
translate([ 91.62, 9.25 ])
2024-07-18 09:16:59 +02:00
{
2024-08-01 12:47:32 +02:00
difference()
2024-07-18 09:16:59 +02:00
{
2024-08-01 12:47:32 +02:00
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);
2024-03-31 22:20:04 +02:00
}
}
2024-08-01 12:47:32 +02:00
#translate([ 80, 12, 0 ]) cube([ 10, 10, 20 ]);
2024-07-31 19:17:05 +02:00
}
2024-07-18 09:16:59 +02:00
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);
2024-03-31 22:20:04 +02:00
}
2024-07-18 09:16:59 +02:00
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);
2024-05-21 18:38:59 +02:00
}
2024-07-18 09:16:59 +02:00
textSize = textmetrics(str, size = font_size, font = font);
}
2024-03-31 22:20:04 +02:00
}
2024-07-18 09:16:59 +02:00
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);
}
2024-07-31 19:17:05 +02:00
!tag();