Based on the Pass the SALT 2018 conference logo.
I'm sharing it mostly for its design process in case other people want to create their own conference badges.
The badges were made at the KULeuven university fablab, with the help of @AlterSid, thanks!
The badges were engraved and cut with a Trotec Speedy 100R with a 60W Iradion 156F CO2 laser on 600x300 3mm MDF panels.
List of attendees
We'll consider a list in a simple text file.
One single line per attendee, two fields separated by a "#" => two lines on the final badges, fields can be empty, e.g.:
Ole André V.#Ravnås
Of course, if # is used in some badge names, choose another separator.
From this list, a few information items are important:
- What is the longest first field? (take the font into account, MMM is larger than III)
- What is the longest second field?
- What are the symbols in use? (this is important to see if the font looks ok for all symbols)
cat attendees.txt |\
tr -d "a-zA-Z#"|\
sort|uniq|tr -d '\n'
Prepare a SVG with Inkscape.
Typical setup is:
- draw black paths to be engraved
- draw red paths to be cut (width of 0.05mm)
Use the longest attendee fields and preview all the symbols in use. Here is an example, with the red path much larger than 0.05mm just to ease the initial preview.
Paths, paths, paths
Remove the test attendee name for now.
Initial logo was made of a stroke with a width, but the engraving laser takes only paths, so strokes must be converted.
- Select all strokes
- Path > Stroke to path
- Path > Union
Text must be also converted to path, but at this point only the text common to all badges gets converted.
- Select text
- Path > Object to path
Then group all, including text and red cut, and make tiles out of it.
- Edit > Clone > Create tiled clones
- Shift X 2% per column
- Shift Y 2% per row
- rows columns: 37 (see how to fill at best the MDF size you'll use)
- Delete first "clone" duplicated on top of original element
Add dummy attendee text on each tile (help yourself with guides).
I'm using numbered fields like this:
Our template. At this point, attendee text is not yet turned into a path.
Time to use our attendees list with our template.
with open("attendees.txt") as f:
l=[[lll.rstrip() for lll in ll.split('#')] for ll in f.readlines()]
for p in range((len(l)+20)//21):
with open("template.svg") as f:
for i,(fn,ln) in enumerate(pl):
t=t.replace("PPPPPPPP%02i" % (i+1), fn)
t=t.replace("NNNNNNN%02i" % (i+1), ln)
with open("badges_%02i.svg" % p, "w") as f:
subprocess.run(["inkscape", "badges_%02i.svg" % p,
The last line automates the final conversion of the attendee text to path.
The produced SVG files can now be "printed" directly on the laser cutter.