Skip to content

iykdw/stickerpacking

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

stickerpacking

Background

I'm a member of a makerspace which recently gained a dye-sublimation printer and heat press. This means that we can make - amongst other things - custom stickers. Our laptops, water bottles, and local lampposts are immeasurably richer for this.

However, it's not without drawbacks. The paper we print on costs 50p per sheet, and the sticker paper is twice that. In the grand scheme of things, that's not much, but - combined with an idle comment by a friend in town for a visit - it was enough to get me thinking.

We also have a Silhouette Cameo 3, which can be used for automated cutting. We run this using an Inkscape extension - at the moment, by generating a document with the registration marks the cutter needs to orient itself, then putting in the stickers we want, creating paths around the boundaries of those stickers that will be used to cut the stickers out, and then printing the stickers, sublimating them on to sticker paper, and putting them through the Cameo.

The final incentive I needed was a night spent making stickers for a protest against the recent UK Supreme Court ruling. Trying to pack as many stickers as possible onto an A4 sheet, then cutting them out using an elderly guillotine cutter, was enough to convince me that there must be a better way.

There must be a better way!

Well, now there is. Or, at least, there is progress towards it.

stickerpacking is a tui application that's my best attempt at a complete toolchain. It guides you through the process of selecting the stickers you want to print, then calculates a reasonable placement for them. It even detects and removes transparent areas of PNGs, and will pack the resulting polygon. And it does all this really inefficiently and in no longer than it takes you to make and drink a cup of coffee!

Anyway, turns out that this is an NP-hard problem, which is strangely freeing to learn of a project after you've already started it. Equipped with this knowledge, I've produced something which is - at minimum - better than packing by hand. However, there's still plenty left to do:

  • overflowing to multiple pages
  • fixing the margin generation, so that it's more intuitive
  • adding a "fill" option for at most one sticker
  • second attempt placing:
    • identify holes in the previously placed stickers and sort by size
    • determine the order of rotational symmetry for each sticker
    • ascend through holes smallest to largest, attempting to place each sticker in 5º increments, stopping at the smallest fit
  • allow SVG imports (which really only means finding the outline of that SVG)
  • depending on how long this makes the run time, consider some significant rewrites (rust?) for speed

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •