standard logo    Personal Education

bead set

Bracelet Beads

UPDATE: The first set of alphabet beads were vertical. A corrected set of horizontal letters makes them right for the name on a bracelet. New notes are at the bottom of the page.

While reviewing my projects to write these notes, a new idea popped into my head. BEADS! A nine-year-old neighbor girl is taking a jewelry class at her school. I have not had the chance to talk to her about it much. She's always busy. Still, I want to be prepared for our next chat. I'd like to be able to give her some beads I've made as potential additions for her work.

Most of these shapes are not complex, and I'd encourage you to experiment with your own ideas.

For most of the shapes, I'll let you examine the code from the beads.scad file below, but I'll comment about some of the interesting bits I encountered along the way.


Sharp-corners might stab into your wrist (or neck if you make necklaces), so I used rounded corners where I could. For the first bead, the rotate_extrude command turns a flat, 2D, circle into a smooth torus. The bead combines a small torus for the base and top along with a larger one for the middle of the bead. hull(){...} pulls the three toruses into the solid bead, and the hole through the bead is made with difference(). My initial hole was very small in the final print. The preview in OpenSCAD made it look bigger than the real thing.

module bead1(){
    // base
    rotate_extrude(convexity = 10)
translate([2, 0, 0])
circle(r = 1);
    // center
    rotate_extrude(convexity = 10)
translate([5, 0, 0])
circle(r = 1);
    // top
    rotate_extrude(convexity = 10)
translate([2, 0, 0])
circle(r = 1);



Bead number four has a thin center, and a simple hull around three toruses arranged large-small-large won't work. The hull just goes straight up from bottom to top and makes a cylinder with curved edges, looking exactly like bead number three (which only has a bottom and a top torus).


Bead number five was the most "trouble". My first attempt used a small sphere with nested for() loops to make several spiral segments run up the sides of a cylinder. The spirals were based on code from the expanding, live, online manual. The inner for() loop makes one spiral. The outer loop shifts the next and next loops around the bead. Everything was fine while I did my preview testing. The preview (F5 key) is generated by some quick-running code in OpenSCAD. To make an exportable version, though, a full compile and render are needed (F6 key). The preview took seconds. A compile was a different story. It uses more "expensive" code.

Expensive relates to the demand on the computer's CPU and memory. I ran some tests as I proceeded. I started a compile. After five solid minutes of seeing my CPU pegged at 25% (full use of one of the CPU cores), the compile progress bar shows zero progress. The fan was blowing hard. I decided to cancel. It might be that the computer would complete the compile in an hour or more, but I wasn't willing to wait. Instead, I redesigned the spirals to use a simpler rotated extrusion of a circle. It results in slightly sharper edges at the ends of each bead, but. for me, it was an issue of compilation speed more than anything else. Reading some threads of the OpenSCAD mailing list, it appears that CPU and memory demand are a recognized issue with the rendering code.


The revised spiral bead still takes time to compile, almost three minutes. OpenSCAD reports, "CGAL cache size in bytes: 96508080 Total rendering time: 0 hours, 2 minutes, 53 seconds". CGAL is the compiling tool. The manual tells us, "The acronym CGAL refers to The Open Source Computational Geometry Algorithms Library." Research that on your own. I plan to. If you compile all seven beads at once, it will take longer than three minutes.

The cube (bead 6) is a hull built around eight small spheres at the corners. The seventh bead is a small version of a bead I made in an earlier (as yet unpublished) project. It's a sphere with the top and bottom cut off using difference() taking away cylinders at the top and the bottom.

The diameter of the hole running through each bead is controlled by a variable to make adjustment easier. My original version of the beads had a hard-coded value for the through hole, and the hole was too small for anything but nylon fishing line. By using a variable for the hole radius, you can adjust for different kinds of thread/string for the bracelets you make.

Just when I thought I was done, I realized it would be great to have a version of the cubical bead with letters of the alphabet on four sides. I've seen those in the beading kits at craft stores. Remember that, for me, these projects aren't always practical. If I were making jewelry with a group of children, I'm sure I would start by buying kits of standard beads, and use 3D printing to add shapes not available in the kits. Reinventing the wheel isn't part of the "productivity" process. It is, for me, part of the essential learning experience. Making a design someone else has surely done before me is important as a developmental exercise. I need to do things so that I know how to do them by myself. As much as possible, I avoid reading detailed steps for a project. Instead, I'll start by trying something, all on my own, and resort to reading sections in the manual to help me understand a technique. I try to make the technique "my own".



The neighbor I mentioned is Jewish, and I wondered if I could do Hebrew letters along with the ones we use in English (also known as "Latin" font characters). The answer is both "yes" and "no". Beyond the common Latin font characters, there are many, many other characters that can be accessed using UTF-8 codes. Hebrew, Cyrilic (Russian), and other non-Latin characters can be used by "escaping" the UTF code. That means putting a code like "\u05d0" instead of "A" into the text("A"); command. The "escape" part is the slash and the "u". The slash says that the u will be interpreted as "use unicode here". The "05d0" is the unicode for the Hebrew character "alef". I'll leave it to you to explore your own font passions.

But I cannot let you go quite yet. OpenSCAD has the widely used font "Liberation Sans" built into the code so you can always do basic text work without needing to play with fonts. It is the default font which shows up if you don't have the one that another person has specified in their code. It's a great compromise, but the font implementation does not cover all the UTF codes. You will need to explore the fonts you have installed on your own computer to find the ones which support the character set you need. On my Ubuntu/Kubuntu system, I've installed the Arial font which comes automatically on Windows computers. Arial has the Hebrew characters available.


Alright, alright! I messed up. After finishing these notes last night, I actually printed the name of the neighbor girl. When I set them side-by-side to show them off to my family who are tolerant of my regular calls.

"Come; look at this!"

My wife said, "Oh, very nice, but those won't work if you put them on a string. The letters won't be readable. They're off somehow."

She was, as usual, right. She's good at that. I had made the letters so they looked good while printing, but when rotating them into the position needed for a string of letters, they were not right!




I hope nobody downloaded the files last night, and if they did, that they come back to complain.

A corrected version of the alphabet is now available as and there's also a SCAD file with proper rotations to make a string of letters read properly.

The old vertical style is still available with a new file name. The vertical letters will work for necklace designs with hanging strings on the neck loop.

There are 7 basic beads here and two sets of 26 alphabet beads in STL printable format, so I've decided to package them up in zipped archives. It will save both you and me time. Windows, Mac and Linux can all transparently help you extract the individual files so you can print them. However, you may also generate your own print files if you download the OpenSCAD files.

Available Files:

beads.scad - the seven beads for you to examine, modify and reshare
bead-alpha-horiz.scad - code for horizontal alphabet bead
bead-alpha-vert.scad - code for the alphabet bead - old vertical - zipped archive of the seven basic beads - zipped archive of horizontal-lettered beads (bracelet legible) - zipped archive of 26 letter beads - vertical
GPL3 License