A curated list of code and resources for pen plotters and other robots that draw.
Contributions are very welcome. Please see CONTRIBUTING and CODE-OF-CONDUCT for details.
- AxiDraw – pen plotter from Evil Mad Scientist, very popular on #plottertwitter
- Line-us – a cute little kickstarted robotic drawing arm
- Makeblock XY Plotter – hackable XY plotter kit (possibly discontinued)
- Drawing Robot – 3d-Printable AxiDraw clone w/ Arduino CNC Shield controller running grbl firmware
- WaterColorBot – XY art robot and software to plot with watercolor paints
- EggBot – pen plotter for egg-shaped and spherical objects
- HP Pen Plotters – vintage desktop and floor-standing pen plotters from the creator of the HPGL standard. Model 7475A is very common and can usually be found on eBay
- Roland Pen Plotters (YouTube) – vintage flatbed HPGL pen plotters. Search eBay for "roland dxy"
- grblShield – all the stepper motor control hardware needed to turn an Arduino into a G-code-based motion controller using the grbl firmware (adafruit)
- TinyG – more featureful and robust 6-axis G-code-based motion control hardware (adafruit)
- Arduino CNC Shield – grbl-compatible stepper motor control shield for Arduino, similar to the grblShield
- Raspberry Pi CNC Hat – Raspberry Pi add-on board w/ stepper controllers and a microcontroller running grbl. Interfaces with the Pi's serial pins
- WiFi232 – wifi to RS-232 serial via a DB25 plug. Control your serial plotter wirelessly
- Plotter Cable Pinout (PDF) – schematic for a plotter cable that will work for most HP and Roland plotters. Search eBay or Amazon for
DB9 to DB25 Serial Null Modem Cable
or similar to find them for sale
- Sharpie Fine Point Plotter Adapter – 3d-printed adapter to fit a standard Sharpie in an HP-GL plotter
- Parametric 3d-Printable Plotter Pen Adapter – adjustable model to print adapters for various pens
- Plotter Pen STL Models – accurate STL models of both short and long standard plotter pens
- TODO: pen recommendations
HPGL is a serial/text-based protocol used by most old pen plotters, and even many new vinyl cutters.
- Chiplotle (web site) – Python library for generating HPGL and interfacing with serial plotters
- HPGL Reference Guide – HTML-based HPGL Reference
- HP 7475A Interfacing and Programming Manual – scanned PDF manual that contains a full HPGL reference
- djipco/hpgl – A Node.js library to communicate with HPGL-compatible plotters and printers
- hp2xx – GNU tool to convert HPGL into other vector and raster formats. Can also be used as a previewing in X11
G-code is a text-based standard for controlling CNC machines. Though it was designed for industrial machines, its use in many hobbyist 3d printer firmwares has made it ubiquitous in small-scale DIY projects as well.
- grbl – a high-performance G-code interpreting firmware for the Atmega 328 microcontroller and Arduino
- cncjs – a web-based interface controlling CNC machines running grbl, TinyG, or other G-code-based firmware
- node-gcode – Node.js-based G-code interpreter and similator
- svg2gcode – Node.js-based command line utility for converting SVG to G-code
- svg2gcode – Python-based utility for fast SVG to G-code conversion
- Universal-G-Code-Sender – Java-based grbl-compatible cross-platform G-code sender
- ChiliPeppr Hardware Fiddle – modular web-based workspaces to visualize G-code and control hardware
Software that is specific to a particular plotter or controller.
- axidraw – official AxiDraw extensions for Inkscape
- axi – unofficial Python library for the AxiDraw v3
- xy – utilities for the Makeblock XY Plotter Robot Kit
- LaserGRBL – laser-optimized Windows GUI for grbl controllers. Could be repurposed for DIY pen plotters that use a solenoid for pen up/down movements
- Line-us Inkscape Plugin – sends drawings to the Line-us plotter directly from Inkscape
- Line-us API Examples – example code for the Line-us plotter's G-code-based API
- PenPlotter - Polar graph controller that uses repetier firmware. Inspired by work at http://www.polargraph.co.uk
- Makelangelo-firmware - Code in the brain of the Makelangelo robot
Tools to create vector artwork from scratch or by conversion from other formats.
- Inkscape – popular cross-platform open source vector graphics editor
- p5.js – "javascript library that makes coding accessible for artists, designers, educators, and beginners"
- Paper.js – "The Swiss Army Knife of Vector Graphics Scripting"
- ln – vector-based 3D renderer written in Go
- autotrace – converts bitmap images to vector graphics
- stipplegen – creates intereting stippled drawings from bitmap images (blog post)
- SquiggleDraw – "SquiggleDraw will create a SVG file from an image, using the brightness to change the amplitude of sine waves"
- svgurt – web-based PNG to SVG creative noodler
- maptrace - produce watertight polygonal vector maps by tracing raster images
- venation - modeling and visualisation of leaf venation patterns
- Drawbot_image_to_gcode_v2 - creates G-code for use on drawbots
- blackstripes - turns a PNG image into a SVG line drawing
- Ribbon - ribbon diagrams of proteins in #golang
- penplot – a development environment for plotter art in JavaScript
- penkit – a Python library for creating line-based SVG graphics
Tools to manipulate and optimize vector-based file formats.
- svgsort – path planning for plotting SVG files, reduces time spent moving with the pen up
- svgo – Node.js-based tool for optimizing SVG files
- Polargraph Optimizer - optimize drawing plan for a polargraph
- penkit-optimize – an SVG optimizer that uses a vehicle routing solver to minimize plot time.
Single-line vector fonts or "engraving fonts".
- Hershey Vector Font –
.fnt
format of vector fonts from the 60s. Includes a good overview of the original data format of the fonts - hershey-fonts – C library and original font data for the Hershey fonts
- OneLineFonts.com – commercial site with some single-line fonts available for purchase
Blog posts, articles, tutorials, galleries, videos, et cetera.
- An Intro to Pen Plotters – good info on getting started with old HPGL plotters
- 1980s pen plotters of the future – another intro to vintage pen plotters
- Pen Plotter Programming: The Basics – some basics of programming vector paths, including sorting, joining, and simplifying
- On Generative Algorithms – nice 13-part walkthrough of interesting algorithms
- Roland DG DXY-990 – quickstart guide for a Roland flatbed plotter
- The Cohen-Sutherland Line Clipping Algorithm – detailed explanation and examples of an interesting algorithm
- Vera Molnár – OG plotter artist
- The Recode Project – "The ReCode Project is a community-driven effort to preserve computer art by translating it into a modern programming language"
- Hektor – the original cable-based drawbot from 2002
- Pen Plotter Art & Algorithms Part I and II – a two-part intro to creating generative graphics for plotting
- Surface Projection and Fractal Generation with L-Systems – each introduce techniques for creating line graphics suitable for plotting
Where to find other plotter and drawbot friends.
- #plottertwitter – Twitter hashtag with lots o' plots
- PlotterArt Subreddit
- AxiDraw Subreddit
- Generative Art Subreddit
- Chiplotle-discuss – fairly inactive mailing list for the Chiplotle HPGL Python library with some general plotter talk