106 lines
3.0 KiB
OpenSCAD
106 lines
3.0 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()
|
|
{
|
|
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();
|