Clock Face and Hands

The missus has me building a wooden pendulum clock. The parts were laser-cut and came in a kit from Lee Valley. I didn’t like the hands or the numbers that came with it, so I did a little design work and came up with these.

To get the digits to taper from the base to the top surface, I had to write a 3D calligraphy package in openSCAD. It’s not exactly easy to use, but it gives a great deal of control over the shape of the resulting characters. At some point, I’d like to digitize the letter shapes from the Lindesfarne Gospels to get a nice Caroline Minuscule font.

1 Like

Thanks for sharing this. It was inspiring. Now I want to make one for my wife’s daycare.

They’re pretty time-consuming, but if you decide to put one together, you’re welcome to the STLs or the source code

Thanks, but I’m thinking of a non-functioning teaching clock. I just saw your photos and thought that was a project I could do for her classroom.

@LGSGreybeard : You said you had to write a calligraphy package to get tapered fonts. Have you ever just tried stacking a Normal font on it’s Bold equivalent:

module Stacked_Text(Text,FontNormal,FontBold){
color(“BLACK”) cylinder(1,9,9);
color(“PURPLE”) translate([0,.5,1]) linear_extrude(1){
text(Text,halign=“center”,spacing=1,valign=“center”,font=FontNormal);
}
color(“WHITE”) translate([0,.5,1]) linear_extrude(.5){
scale([1,1.05,1]) text(Text,halign=“center”,spacing=1,valign=“center”,font=FontBold);
}
}

FontNormal=“Liberation Sans:style=Regular”;
FontBold=“Liberation Sans:style=Bold”;
color(“WHITE”) cylinder(1,62,62);
for(n=[1:1:12]){rotate([0,0,(9+n)*360/-12]) translate([50,0,0]) rotate([0,0,(9+n)*360/12]) translate([0,0,1]) Stacked_Text(str(n),FontNormal,FontBold);}!

Results in:

I tried a few “stacked” fonts and didn’t find one I liked,. Also, I was after a tapered, rather than stepped profile.
I also want, eventually, to populate it with letters based on Irish Half-Uncials (I’ve never found a font that’s really close enough for my taste)

You might be able to take a font and make two sizes one slightly larger than the other and loft them. This should give you an tapered edge. That or Chamfer the font sides. I think lofting to be simpler.

I’m not quite sure what you mean by “loft them”. If you are referring to stacking them, I tried that. Scaling the fonts doesn’t work (well). You’d think it would, but, if you consider the number “1”, and let’s say it’s 10mm tall by 1mm wide, scaling it by 10% would leave a .5mm shift at the top and bottom but only .05mm at the sides. Even worse, the part of the “1” the top tick of the 1 (whatever it’s technically called) would be shifted downward by about 1mm and could end up overhanging the layer below. I tried this and the results are awful.

That’s when I tired stacking Bold/Normal/Thin versions of the same font, which works quite well. Since you really only need one layer height to achieve the colour highlighting and you can’t chamfer a single layer anyway, I figured: “good enough”.

The real pity is that OpenSCAD doesn’t support font weights. That would have solved everything, and I see there are already calls for that to be added as a new feature.

I’m making my clock into a puzzle for the daycare kids, so, not as fancy as @LGSGreybeard is going for, but it was definitely inspired by his post.

I can’t follow what you mean.
loft command is common to many 3d design software.

I am not at my desk I have yet to get to the lofting the iPad doesn’t have the juice to run lofting it is a bit more extravagant processor usage.

One is fillet the other is chamfer. When I get home next I’ll loft the font.

Loft doesn’t exist as a primitive, although I found some rather elegant code here:

Lofted 1 to scaled 1

Disk to 1

:sunglasses: I don’t know open scad I just used Fusion 360.

I’ve never heard of “loft” as a CAD function. For reference, the last time I used AutoCAD was AutoCAD Release 2, which came on 40 floppies. Even then we were only doing PCB routing.

I’m going to read @LGSGreybeard 's link.

@kitedemon : This is what I meant by what happens when you simply “scale” a font:
side top

Having thought about it for a few minutes, what I’d really like to see added to openSCAD is an ablate() or arcrete() operation. It could be used trivially to do a loft, but would have other uses as well.
It could be written to apply to both 2 and 3 dimensional objects, according to how it is called, and would cause the perimeter (or surface) to advance or retreat by a specified distance along a normal vector.
Of course, you’d only need to implement one of the two, since the amount of accretion/ablation could be negative or positive.
Edit: Actually, it wouldn’t in itself make loft() trivial, but it would make a very useful companion function to it.