A variety of utilities for creating pen-plotter based artwork

14 releases

0.2.2 Sep 26, 2022
0.2.1 Sep 5, 2022
0.1.11 Jul 23, 2022
0.1.5 Jun 15, 2022
0.1.3 May 31, 2022

#145 in Visualization

Download history 25/week @ 2023-10-28 4/week @ 2023-11-04 2/week @ 2023-11-11 16/week @ 2023-11-18 58/week @ 2023-11-25 15/week @ 2023-12-02 2/week @ 2023-12-09 14/week @ 2023-12-16 28/week @ 2023-12-23 14/week @ 2024-01-06 12/week @ 2024-01-20 57/week @ 2024-01-27 62/week @ 2024-02-10

131 downloads per month

MIT license



Package Documentation

This library contains a variety of tools used to make pen-plotter based art. While it focuses on a combination of nannou and geo/geo_types for now, it will likely expand into other areas as I find the need for my own creations. Based (extremely roughly) on shapely for Python for the geographic functions, with a splash of VSK.

CAUTION: This isn't even Alpha quality yet, and I am poking away at it on my days off. May spontaneously explode, might take your plotter with it.


  • 0.2.2. Bugfixens! The regular_poly_native function was duplicating points, resulting in invalid geometries.
  • 0.2.1. Optimizations and plotters:
    • Add optimization to toolpaths/line-ordering so that we don't waste valuable time traversing empty space when plotting.
    • Add simple serial-plotter support
  • 0.2.0. We made it!!!!
    • Typography module. It's buggy and ugly, but we can now place simple text on the sketches.
    • Performance improvements; particularly on complex overlapping geometries
    • Truchet tiles (Carlson Smith)
    • Example of using a UI in Nannou to customize a sketch
  • 0.1.11. Added the first "element" (reusable sketch component) in the form of the elements::CarlsonSmithTruchet, which provides tileable and scalable truchets which make for some very interesting patterns. Think of them as the "goto 10" tiles on steroids. Also added a to_geos trait which makes it easy to convert back and forth from geo_types without fancy and unpredictable From/Into magic. Also added a geo_types::shapes module which provides some additional primitives (arc, polygons, circles). Added the geo_types::boolean::BooleanOp trait to allow for boolean operations directly against geo_types.
  • 0.1.10. Getting close to having to do a 0.2 release. Added the 'flatten' method to context::Context so that you can merge all your pen strokes that live on the same layer. Good for merging overlapping polygons. Layer is defined as "exact same color, pen, and fill configuration"
  • 0.1.9. Add masking to context: You can now mask the drawable area with any geo_types::Geometry variant and only areas under the mask will actually render. Also changed some performance and accuracy related optimizations so that clipped items look clean. Also added the final Generative Artistry examples. I'll miss implementing those :(
  • 0.1.8. Add a bunch of new features to Context, including regular polygons and tesselated polys (stars of various point counts). Circles are now somewhat simpler as well.
  • 0.1.7. Another big change. Added the Context drawing library, which is HUGE, and contains way too much functionality to discuss here.
  • 0.1.6. Various changes:
  • 0.1.5. Add SVG generation features.
  • 0.1.4. Add the geo_types::hatch::Hatching submodule.
  • 0.1.3. Breaking change to GCode POST again; use an enum to define the the input geometry so that we can add new geometry source types, like svg2polyline polylines, or even multilayer geo with tool changes.
  • 0.1.2. Mostly documentation improvements. Made MIT license explicit.
  • 0.1.1. Breaking change to the GCode POST function to use geo_types in order to be consistent with everywhere else in the library. Also changed the Turtle/TurtleTrait to just be mutable.
  • 0.1.0. Initial commit

License: MIT


~1M SLoC