// Size of rendered letters scale = 18; // Height/depth of the letters height = 1.5; // Wall thickness wall = 0.16; // Spacing between letters space = 11; //font = "Alfa Slab One"; //font = "Bowlby One:style=bold"; //font = "Rubik One:style=bold"; //font = "Titan One:style=bold"; //font = "Acme:style=bold"; // Font to use font = "Rubik Mono One"; // Feet offset applied to all feets feet_offset = 0.1; // Extra foot offset per number feet_offset_num = [0,0,0,0,0.8,0,0,0,0,-0.2]; // Lenght of the feet feet_length = height*2; // Radius of feet feet_radius = height/2; // Inner radius of feet feet_radius_inner = height/3; $fa = 0.2; $fs = 0.5; module number(n, f) text(str(n), 10, f,valign="bottom",halign="center"); module foot() rotate(90, [1,0,0]) translate([0,height/2,-wall]) difference() { color("blue") cylinder(h=feet_length,r=feet_radius,$fs = 0.1); color("red") translate([0,0,wall*2]) cylinder(h=feet_length,r=feet_radius_inner,$fs = 0.1); } module letter_outline(height,n, f) linear_extrude(height) minkowski() { number(n, f); circle(r=wall); } module letter_inline(height,n,f ) color("red") translate([0,0,wall]) linear_extrude(height) number(n,f ); module n_offset(n) translate([feet_offset+feet_offset_num[n],0,0]) children(); module letters(f) scale([scale,scale,scale]) for (n = [0:9]) { translate([n*space,0,0]) { difference() { difference() { letter_outline(height,n, f); letter_inline(height,n, f); } hull() n_offset(n) foot(); } difference() { n_offset(n) foot(); letter_inline(height,n,f); } } } letters(font);