62 lines
1.6 KiB
OpenSCAD
62 lines
1.6 KiB
OpenSCAD
// Test - only blue layer from main template
|
|
name = "Bennett";
|
|
oval_width = 96;
|
|
oval_height = 30;
|
|
blue_thickness = 1;
|
|
white_thickness = 1.5;
|
|
base_text_size = 13;
|
|
|
|
name_length = len(name);
|
|
text_size = name_length <= 3 ? 18 :
|
|
name_length <= 5 ? 13 :
|
|
name_length <= 8 ? 11 :
|
|
11;
|
|
|
|
border_width = 2;
|
|
hole_diameter = 4;
|
|
hole_clearance = 4;
|
|
|
|
total_width = oval_width + border_width*2;
|
|
total_height = oval_height + border_width*2;
|
|
hole_x = -(total_width/2) + (hole_diameter/2) + hole_clearance;
|
|
|
|
module oval(width, height, depth) {
|
|
scale([width/2, height/2, 1])
|
|
cylinder(h=depth, r=1, $fn=100);
|
|
}
|
|
|
|
module bold_text() {
|
|
for (x = [-0.3, 0, 0.3]) {
|
|
for (y = [-0.3, 0, 0.3]) {
|
|
translate([x, y, 0])
|
|
linear_extrude(height=blue_thickness + 0.1)
|
|
text(name,
|
|
size=text_size,
|
|
font="Fordscript",
|
|
halign="center",
|
|
valign="center");
|
|
}
|
|
}
|
|
}
|
|
|
|
// Blue layer only
|
|
color("RoyalBlue")
|
|
difference() {
|
|
oval(total_width, total_height, blue_thickness);
|
|
|
|
// Cut out the border ring channel
|
|
translate([0, 0, -0.05])
|
|
difference() {
|
|
oval(total_width, total_height, blue_thickness + 0.1);
|
|
oval(oval_width, oval_height, blue_thickness + 0.2);
|
|
}
|
|
|
|
// Cut out text channels
|
|
translate([0, 0, -0.05])
|
|
bold_text();
|
|
|
|
// Cut out hole
|
|
translate([hole_x, 0, -0.05])
|
|
cylinder(h=blue_thickness + 0.1, d=hole_diameter, $fn=50);
|
|
}
|