The keychains we shipped first were all the same thing underneath: a small tag with a hole, something to clip onto your keys. Building five of them taught us that the hole was the only part that had to be there. Take it off and the same flat printed plate becomes a door sign. Put a loop on top and it is an ornament. Add a spike and it stands up in a plant pot.
So we built one engine that makes all of them. Five new products came out of it: a door sign, a desk name plate, an ornament, a fridge magnet, and a plant marker. None of them needed a new geometry engine. They needed presets.
One builder, five presets
Every keychain already shares a pipeline: design in the browser, generate a .3mf when you add to cart, store it, and move it onto the WooCommerce order at checkout. We wrote that up in How we built the keychain configurator. The new products plug into the same pipeline. What changed is the builder that turns your text into a plate.
The new builder takes one or more lines of text, centres each one, sets them on a rounded plate, and offers three ways to hold it: nothing at all, a punched hole, or a raised loop. A door sign is that plate with a hole. A desk plate is the same plate with no hole and a cleaner font. An ornament is the plate with a loop and a colour that suits a tree. Each product is a short list of saved settings, not its own branch of code, so adding the whole line cost about four kilobytes in the bundle.
Stacking more than two lines
The name keychain only ever needed two lines: a name, and maybe one word under it. A door sign wants “The Smiths” across the front, or three lines for a room and a floor. So the text layout had to stop assuming two.
It now reads each line on its own (lineToText hands back the outline and the bounding box), centres it across the plate, and stacks the lines from the top down with a gap you can set. Then it measures the full block of text and grows the plate to fit, with padding on every side. One line or six, the plate sizes itself around what you typed. The old code wrote line two below line one by hand; the new code loops.
Once the hole was optional, a keychain was just a small nameplate. The rest was presets.
– Jame
A spike instead of a loop
The plant marker was the one product that needed real new geometry. A loop or a hole is a shape you add to the edge of the plate. A garden stake is a long leg dropping out of the bottom, and it has to print as one solid piece with the sign or it snaps at the join.
We extrude a rounded bar down from the plate’s lower edge and merge it into the same outline before any of it becomes a 3D shape. One mesh, one colour, nothing glued on later. You set the stake length in millimetres; 35 mm is enough to push past the soil and still read above the rim of a small pot.
How do you 3D-print a fridge magnet?
This one has a catch worth admitting. A printed plastic plate is not magnetic, and no filament fixes that. The “magnetic” PLA you can buy is iron-filled, so it sticks to a magnet, but a fridge door is not a magnet. It is plain steel. Two things that aren’t magnets won’t hold each other. A fridge magnet needs a real magnet somewhere in the part.
So the magnet is the one product that isn’t finished when the printer stops. The plate comes off with a flat back, and the magnet goes on after: a self-adhesive magnetic sheet cut to the shape, or a small disc set into a recess. The plate is the easy half. The magnet is the half you can’t print.
Make one
Type your text, pick your colours, and watch the plate size itself around the words. If you want a custom product like this running in your own shop, that is what disip builds.