This is a pen (or maybe drag-knife (untested)) holder for attaching to a 3D printer head or a CNC (untested). The holder is springy (changing the spring thickness will change just how springy) and highly customizable. It's designed to be moderately low profile to give more drawing space.
You will need some sort of a tool-clip for attaching this to your print head / CNC. I use this one to attach to my XYZ DaVinci 1.0a. The SCAD file will generate holes for M3 screws to attach to the tool-clip. You'll also have to by default drill through the holes for M3 screws for holding the pen (or other tool), as there is a mini-support platform there.
The default pen size is up to 15mm, but you can resize that.
Changing the "wave fraction" from 0.5 to 1 gives you a longer section of a sine wave for the springs.
You can use my gcodeplot.py python script to convert SVG path-only files (just load an arbitrary SVG file into Inkscape, Select All, Object|Object-to-Path, and save) to gcode for this (I've only tested this on a 3D printer -- no idea if it'll work with CNC). I suggest editing gcodeplot.py to change the
xyMin (lowest device coordinates for drawing area),
xyMax (highest ones),
penDownZ (z-coordinate for drawing),
penUpZ (z-coordinate for moving) and
safeUpZ (z-coordinate for parking) parameters at the top of the
Plotter class to match your printer.
Once you have a path-only SVG file, you can do:
python gcodeplot.py filename.svg > filename.gcode
Then send the gcode file with your usual printer control utility (I use Repetier Host). You can also send the gcode directly to the printer with:
python gcodeplot.py --send=portname filename.svg
(On my Windows system, COM3 or COM4 works as the portname; you will also need to install pyserial, e.g., with
pip install pyserial.)
By default colors are shaded with parallel lines according to intensity. In theory, though I haven't tested it yet, you can use the script to switch pens for different colors, by using a pen description file.
The Hello Kitty was taken from here and drawn directly on a sticky note stuck on the print bed. Ideally, the other end would be stuck down with painter's tape, but I didn't bother (and it only resulted in a slight shift in shading in one area).