SVG to Gcode converter for GRBL pen plotter
Forked from vishpat/svg2gcode
I found that the plugins for inkscape and illustrator would crash when I tried to convert SVG's with many thousands of lines to gcode.
So I modified this to generate gcode for GRBL based pen plotter
Usage as cli:
python convert.py source.svg destination.gcode
or in bash
copy 's2g' to your path and run from anywhere
s2g source.svg target.gcode
Convert all SVG files in artwork/
Run make from the repository root. Each artwork/name.svg is converted to
gcode/name.gcode. Only files that are newer than their corresponding output
are converted; changes to config.py or svg2gcode.py also rebuild all generated G-code. The
directories and Python command can be overridden, for example:
make ARTWORK_DIR=my-art GCODE_DIR=out PYTHON=python3.
There is a brute force path optimisator algorithm. Very slow for large files, can be disabled in config.py
Conversion raises Python's recursion limit to at least 100,000 as a temporary workaround for long SVG paths. Larger paths may still exceed this limit, and deep recursion can exhaust the stack on some Python versions and platforms.
Illustrator exports in points, not mm regardless of your document settings.
If units are set to points in the config file, we convert to mm on the fly.
There are various settings you can change in config.py. Most notably, you must set an upper and lower position for the z axis.
The preamble is emitted after the header and before the feed rate and drawing
moves. It currently homes with $H, selects millimeters, absolute positioning
and G54, then resets only the G54 Z offset to zero. X/Y offsets are preserved.
The controller or sender must support $H within a job. Regenerate existing
G-code with make and upload the new files to apply this startup sequence.
- zTravel is the height it will move to before traveling to the next stroke
- zDraw should be the height at which the pen will make contact with the paper
- zDraw should be the height at which the pen will make contact with the paper