tilegen turns artwork into Framework Desktop front-panel
tiles: the artwork is carved into the tile face as a recess, and a
matching insert fills it exactly. You print the two in different filaments and
get a crisp, flush, multi-color tile.
Everything happens in your browser. Your artwork is never
uploaded anywhere.
Start here
- Pick an SVG (sharpest results) or a PNG/JPG.
- Leave everything at its defaults and press Generate.
- Download the
.3mf and open it in Bambu
Studio or OrcaSlicer.
- Set filament 1 to your tile color and filament 2 to your artwork color.
Slice.
The .3mf is the file you want. It contains both
parts with their filaments already assigned. The individual .stl
files behind the fold are there if you would rather assemble it yourself.
What comes out
| File | What it is |
NAME.3mf |
Both parts as one object, filaments assigned. Use this. |
NAME_body.stl |
The tile, with the artwork pocketed out of its face |
NAME_ink_N_#RRGGBB.stl |
The insert that fills that pocket exactly |
Body and inserts share the same boundary surface, so there is no gap and no
overlap: together they reconstruct the original tile to within
2 × 10-5 mm³.
The options
Columns & rows
How many tiles the artwork is split across. 1 × 1
is a single tile; the full Framework Desktop panel is
3 × 7, and the use it link fills that
in along with the settings that suit it.
Margin
Keep-out from each tile edge, in millimeters. Use 0 for
artwork spanning several tiles so it runs across the seams; use
2–3 for a single centered logo.
Depth
How deep the artwork is recessed. 0.6 mm is three
layers at 0.2 mm, which is opaque with most filaments. Go deeper for
white-on-black, where three layers can still show through.
Past 1.6 mm the pocket breaks into the retention hook
cut-outs on the back of the tile. tilegen warns you when you cross that line.
Fit
contain | the whole artwork fits inside the grid |
cover | fills the grid and crops the overflow |
stretch | distorts to fit exactly |
Tile base
What the artwork is carved into.
| Base | Face |
blank | solid — the default, and what you want most of the time |
horizontal | horizontal stripes |
cross | diagonal stripes |
grid | crossed stripes |
frame | no face at all, just the border |
The four non-blank bases have open faces. Artwork over an
opening has no material to carve, so it does not print there, and what
remains is split into one fragment per opening. That is the effect —
but check the preview, which shows exactly what survives.
Nozzle
Drives the thin-feature warnings. tilegen checks two things people get
caught by: artwork strokes thinner than the nozzle, and gaps
thinner than the nozzle. The second is the sneaky one — a logo with fine
counters prints as a blob not because the ink is too thin but because the
spaces between it are.
Min gap
Widens every body-colored gap narrower than this, by trimming the ink on
either side of it. Gaps already this wide are left exactly as drawn, and two
ink colors that touch never get a gap put between them. 0
turns it off.
Set it to your slicer's first-layer line width, not the
nozzle size: the artwork prints face down, so every gap is on the first layer,
and a gap narrower than one line fills with ink from both sides. Bambu Studio's
default for a 0.4 mm nozzle is 0.5 mm. The default here, 0.6 mm, is that plus
some room: a logo whose curves measured 0.50–0.55 mm still sliced with
ink specks along them. Raise it if yours still do; lower it (or set 0) if the
artwork's fine gaps matter more than a clean first layer.
Colors & background
Colors (images only) is how many colors to quantize a photo
down to. Region 1 becomes filament 2, region 2 becomes
filament 3, and so on.
Background is the color the tile itself is printed in, so
it costs no inlay at all — saving a filament and all of its purge.
auto picks the color around the outside of the artwork,
#rrggbb names one, and none prints every color as
inlay.
It applies to SVGs too. A two-color logo on a full-bleed backdrop is the
case it is for: leave it on auto and the backdrop becomes the tile,
with only the second color carved and inlaid. Set it to none and
you get a pocket the size of the whole tile plus an insert to fill it.
auto only ever picks a color that owns the outside edge of the
artwork, and it never drops the only color there is, so a logo floating on
nothing keeps everything it has.
Blank tile for every empty cell
On by default. Ask for 3 × 7 and you get 21 tiles, including
the cells your artwork never reaches — a panel needs all of them to be
physically complete. Turn it off to get only the tiles that carry artwork.
Set filament colors in the 3MF
Writes your colors into the file so the slicer opens with them already
assigned instead of bare slot numbers. Ink colors come from the artwork; tick
also set the body color to name the spool you will load for the tile
itself.
Mirror
Only if you print the tile face-up. By default the decorated face is at
z = 0 with the hooks rising above it, which is the orientation you
want.
Printing
- Print face down. The model already sits that way. The
artwork lands in the first few layers against the build plate, which
gives the crispest color boundary and a smooth finish.
- Two colors, two nozzles. On a dual-nozzle printer,
assigning body and ink to separate nozzles avoids a purge tower
entirely. Three or more colors pulls from an AMS and purges normally.
- Body is filament 1. Inks are 2, 3, 4… in the
order listed in the console.
- A tile is 28.5 mm square; all 21 fit a 256 mm plate at once.
Why 28.60 mm?
The tile pitch is measured from Framework's own released CAD: the openings
step by exactly 28.60 mm in both axes. Several community projects use
28.5, which drifts about 0.6 mm over seven rows. The whole tile face is
visible — the smaller openings deeper in the cover are for the retention
hooks, not a window over the face — so artwork runs across tile
boundaries nearly unbroken, with only a ~0.15 mm seam.
Not in the browser
The command-line version in the repository has a few extras: rotating and
scaling artwork, bleed, inverting, plate layout, and re-rendering the tile
bases from source with OpenSCAD.
Credits & licensing
The tile base is the work of Marcin Raczkowski
(Marmot.Tech), licensed
CC BY-SA 4.0, from
jermicide/desktoptiles. It is used unmodified
— vendored as a git submodule, so no copy of his work lives in this
project. All tile body geometry is his: the frame, the retention hooks, the
constraints, the raised edges, and the hook cut-outs that make the slicer build
proper walls. tilegen only adds artwork to it.
His tile follows Framework's published
tile specification.
Tiles you generate are derivative works of
his tile. If you publish or sell them — on Printables,
MakerWorld, Etsy, anywhere — CC BY-SA 4.0 asks you to:
- credit Marcin Raczkowski (Marmot.Tech) and link
his project,
- license the tiles CC BY-SA 4.0 as well, and
- state that the work was modified.
Keeping the tiles to yourself? Nothing to do.
tilegen's own code is Apache 2.0. The two licenses are
not compatible in either direction and cannot be merged, which is why they are
kept separate — and the tile base was never ours to relicense anyway. The
full notices say which license covers
which file.