Convert vector graphics to g-code for pen plotters, laser engravers, and other CNC machines
Check it out at https://sameer.github.io/svg2gcode. Just select an SVG and click generate!
cargo install svg2gcode-cli
Arguments:
[FILE]
A file path to an SVG, else reads from stdin
Options:
--tolerance <TOLERANCE>
Curve interpolation tolerance (mm)
--feedrate <FEEDRATE>
Machine feed rate (mm/min)
--dpi <DPI>
Dots per Inch (DPI) Used for scaling visual units (pixels, points, picas, etc.)
--on <TOOL_ON_SEQUENCE>
G-Code for turning on the tool
--off <TOOL_OFF_SEQUENCE>
G-Code for turning off the tool
--begin <BEGIN_SEQUENCE>
G-Code for initializing the machine at the beginning of the program
--end <END_SEQUENCE>
G-Code for stopping/idling the machine at the end of the program
-o, --out <OUT>
Output file path (overwrites old files), else writes to stdout
--settings <SETTINGS>
Provide settings from a JSON file. Overrides command-line arguments
--export <EXPORT>
Export current settings to a JSON file instead of converting.
Use `-` to export to standard out.
--origin <ORIGIN>
Coordinates for the bottom left corner of the machine
--dimensions <DIMENSIONS>
Override the width and height of the SVG (i.e. 210mm,297mm)
Useful when the SVG does not specify these (see https://github.com/sameer/svg2gcode/pull/16)
Passing "210mm," or ",297mm" calculates the missing dimension to conform to the viewBox aspect ratio.
--circular-interpolation <CIRCULAR_INTERPOLATION>
Whether to use circular arcs when generating g-code
Please check if your machine supports G2/G3 commands before enabling this.
[possible values: true, false]
--line-numbers <LINE_NUMBERS>
Include line numbers at the beginning of each line
Useful for debugging/streaming g-code
[possible values: true, false]
--checksums <CHECKSUMS>
Include checksums at the end of each line
Useful for streaming g-code
[possible values: true, false]
--newline-before-comment <NEWLINE_BEFORE_COMMENT>
Add a newline character before each comment
Workaround for parsers that don't accept comments on the same line
[possible values: true, false]
-h, --help
Print help (see a summary with '-h')
-V, --version
Print version
svg2gcode-cli examples/Vanderbilt_Commodores_logo.svg --off 'M4' --on 'M5' -o out.gcode
To convert curves to G02/G03 Gcode commands, use flag --circular-interpolation true
.
Output, rendered at https://ncviewer.com
cat out.gcode
The core functionality of this tool is available as the svg2gcode crate.
These go into greater detail on the tool's origins, implementation details, and planned features.
-
Use a 3D printer for plotting: (thanks @jeevank for sharing this) https://medium.com/@urish/how-to-turn-your-3d-printer-into-a-plotter-in-one-hour-d6fe14559f1a
-
Convert a PDF to GCode: follow this guide using Inkscape to convert a PDF to an SVG, then use it with svg2gcode
-
Are shapes, fill patterns supported? No, but you can convert them to paths in Inkscape with
Object to Path
. See #15 for more discussion. -
Are stroke patterns supported? No, but you can convert them into paths in Inkscape with
Stroke to Path
.