A few weeks ago, I saw a post on Hacker News about the line art of Wacław Szpakowski. I was instantly fascinated by the art. The simplicity of the concept (a single line on a grid) coupled with the complexity of the result is very appealing to me. Here are a few examples of his work:
After looking at Szpakowski’s art for a while, I wanted to recreate some of it. The single line drawing concept maps well onto 3D printing as a single extrusion path, so I set about trying to turn one of the pieces of artwork into a 3D print.
The first step was creating a digital representation of the line. My first thought was to program it using Logo, an educational programming language that produces single line drawings. I got part way through coding a piece of Szpakowski’s artwork using a Python implementation of Logo called turtle. Then I asked myself if anyone had created digital representations of his work before. A quick search showed that, yes, people have certainly done that. On a website called TurtleStitch (which seems to be a tool for creating patterns for automated embroidery machines), a user called Elaine has recreated many of Szpakowski’s works. Luckily, you can download any of them as an SVG. So that’s what I did.
From the SVG I extracted the points that make up the artwork. Then I wrote a quick python script to take in the points, scale and translate them appropriately and turn them into gcode. I modeled up a backing to print the single line artwork on, sliced it and then manually spliced in the gcode I generated to get the final gcode.
A visualisation of the gcode. The backing is a simple white rectangle and the line is on the backing in black.
It took a few prints to get the settings just right, but once I did. I had a result I was really happy with. I might try a few more of his works as there are many. I’m also considering how to make a version that has a little more depth to it. I have a few ideas, but none that I’m excited about so far. We’ll see how I go. For now, all the files and instructions to reproduce what I have done can be found on Github.
This was the first print and the line is far too fat.
The final result.