
A while ago my mother brought me an enormous vintage drafting table, thinking I would be interested. Of course I was, I’m a sucker for these things. However, I had no use for a 140x80cm drafting table, so I decided to turn it into a pen plotter.
I had previously experimented with using my 3D printer as a pen plotter. The concept is simple – make some GCode (generate it directly in code, or convert a vector drawing to the format) and run in on the 3D printer. This works reasonably well, but it’s slow. Especially lifting and dropping the pen, causing the ink to flow freely in one spot.
The drafting table wasn’t in super good shape, so I did not feel bad for disassembling it. I took the basic idea of the “4xiDraw”, which is inspired in turn by the “Axidraw”. I ordered the required parts, and found a used Raspberry Pi online.
https://www.instructables.com/4xiDraw/
I started by taking measurements and bringing them into blender. I drew in the to-be-3D printed parts, which included end caps that could hold stepper motors, and toolbits that hold the pen.

It took a few iterations, but in the end I got the parts right. The X and Y axis are driven by a stepper motor, which is just powerful enough to move the arm. The cables, which have to run from the Arduino driving the motors all the way to the final servo that lifts the pen, are managed by using an old tape measure.
This tape measure trick is quite neat – the tape wants to be straight and can only bend in one direction. If you run the cables along this metallic strip, and somehow cover it in fabric, you have yourself a cable track. You can see the end of the tape measure in this picture below.

To control the machine I did not want to attach it via USB to my computer – especially since the device is so big and awkward. I ended up writing a little Raspberry Pi server. The full thing consists of the following:
-> A web interface that sends information to, and receives information from:
-> A python server, which takes in uploaded SVG and sends it to a:
-> A Rust GCode generator, https://github.com/sameer/svg2gcode/
-> Back to the python server, it sends the resulting GCode to:
-> An Arduino, which runs a a gcode - to - stepper motor driver


And now for the results. It’s a lot of fun working with generating GCode procedurally, picking pens and papers that go well together, etc.



I’ve uploaded the .blend file. It’s chaotic, unnamed, but perhaps to some use to someone: