{"slug": "experiments-with-plotter-art", "title": "Experiments with Plotter Art", "summary": "A developer repurposed an Ender 3 3D printer as a pen plotter by attaching a fineliner pen with magnets, using Inkscape and the Simple Inkscape Scripting extension to generate generative art. The setup enables procedural drawing techniques, such as flowy abstract shapes, with a Python script that duplicates, rotates, scales, and translates shapes.", "body_md": "[Experiments With Plotter Art]\n\nFor the past couple of weeks I have been trying to learn more about generative (procedural) art.\nI plan to update this post continually when I have more things to write down and share.\n[Hardware](#hardware)\n\nAround five years ago I bought an Ender 3 3D printer. It is capable, but frustrating to configure and picky about the filament. They go second-hand for around €60. For the past couple of years it has been ~~collecting dust~~ stored safely in its original cardboard box.\n\nI have glued two small neodymium magnets to a 0.2mm fineliner pen. The printer head casing is made of metal and the magnets attach to it securely enough. The position of the pen has to be offset in relation to the nozzle – either in the configuration or when preparing the gcode.\n\n[Software](#software)\n\nI have been using Inkscape to generate gcode from vector paths (in Extensions → Gccodetools → Path to Gcode). It runs on the printer without any modifications. Inkscape also comes with some [stroke-based (engraving) fonts](https://en.wikipedia.org/wiki/Computer_font#Stroke-based_fonts), including [Hershey fonts](https://en.wikipedia.org/wiki/Hershey_fonts) (in Extensions → Text → Hershey Text) – with normal fonts, the plotter would draw the outlines of the characters, which doesn’t work very well.\n\nInkscape doesn’t support scripting natively, but there is an extension called [Simple Inkscape Scripting by Scott Pakin](https://github.com/spakin/SimpInkScr) and it is just so fun to use. It is [very well documented](https://github.com/spakin/SimpInkScr/wiki/Shape-construction) – the API feels similar to p5.js, but it is based on SVG paradigms. It’s Python, so it can be used with [Pillow](https://pypi.org/project/pillow/) or [NumPy](https://pypi.org/project/numpy/), which opens up a lot of possibilites.\n\nBecause the set-up is so frictionless, I can spend more time experimenting and learning new techniques.\n\nFor example, I have been enjoying creating these sort of flowy abstract shapes that I learned about from [this article](https://www.generativehut.com/post/create-generative-art-without-coding). The author uses different tooling, but the algorithm is pretty much the same as in my Python implementation:\n\n``` python\nimport mathfor shape in selected_shapes():  for i in range(150):      copy = duplicate(shape)      copy.rotate(i * math.sin(math.radians(i)), \"center\")      copy.scale((i + 1) / 100)      copy.translate((0, i * 0.2))  shape.remove()\n```\n\nIn Inkscape, I draw a shape, select it, and run the script (in Extensions → Render → Simple Inkscape Scripting). I think it’s really interesting that the input for the script can be drawn by hand – it feels very natural and intuitive.", "url": "https://wpnews.pro/news/experiments-with-plotter-art", "canonical_source": "https://sometimes.digital/posts/experiments-with-plotter-art/", "published_at": "2026-08-24 13:21:56+00:00", "updated_at": "2026-08-29 01:48:03.165587+00:00", "lang": "en", "topics": ["generative-ai", "ai-tools", "developer-tools"], "entities": ["Ender 3", "Inkscape", "Simple Inkscape Scripting", "Scott Pakin", "Pillow", "NumPy", "Hershey fonts"], "alternates": {"html": "https://wpnews.pro/news/experiments-with-plotter-art", "markdown": "https://wpnews.pro/news/experiments-with-plotter-art.md", "text": "https://wpnews.pro/news/experiments-with-plotter-art.txt", "jsonld": "https://wpnews.pro/news/experiments-with-plotter-art.jsonld"}}