The juicy-gcode package

[maintain]

SVG to G-code converter that aims to support most SVG features. The flavor of the generated G-Code can be influenced providing a configuration file.


[Skip to ReadMe]

Properties

Versions0.1.0.0, 0.1.0.1, 0.1.0.1, 0.1.0.2, 0.1.0.3
Dependenciesbase (==4.9.*), configurator (==0.3.*), lens (==4.14.*), linear (==1.20.*), matrix (==0.3.*), optparse-applicative (==0.13.*), svg-tree (==0.5.*), text (==1.2.*) [details]
LicenseBSD3
Authordlacko
Maintainerdlacko@gmail.com
Stabilityexperimental
CategoryGraphics
Home pagehttps://github.com/domoszlai/juicy-gcode
Bug trackerhttps://github.com/domoszlai/juicy-gcode/issues
Source repositoryhead: git clone https://github.com/domoszlai/juicy-gcode
Executablesjuicy-gcode
UploadedMon Oct 31 19:32:27 UTC 2016 by dlacko

Downloads

Maintainers' corner

For package maintainers and hackage trustees

Readme for juicy-gcode-0.1.0.1

Synopsis

Haskell SVG to G-code converter that aims to support most SVG features. The flavor of the generated G-Code can be influenced providing a configuration file.

Installation and usage

juicy-gcode - The SVG to G-Code converter

Usage: juicy-gcode.exe SVGFILE [-f|--flavor CONFIGFILE] [-o|--output OUTPUTFILE]
                       [-d|--dpi DPI]
  Convert SVGFILE to G-Code

Available options:
  -h,--help                Show this help text
  SVGFILE                  The SVG file to be converted
  -f,--flavor CONFIGFILE   Configuration of G-Code flavor
  -o,--output OUTPUTFILE   The output G-Code file (default is standard output)
  -d,--dpi DPI             Density of the SVG file (default is 72 DPI)

Configuration

The default G-Code flavor configuration file is the following:

gcode
{
   begin = "G17;G90;G0 Z10;G0 X0 Y0;M3;G4 P2000.000000"
   end = "G0 Z10;M5;M2" 
   toolon =  "G00 Z10"
   tooloff = "G01 Z0 F10.00"
}

A new configuration file can be set by the --flavor or -f command line option.

Another configurable property is the resolution of the SVG image in DPI (dot per inch). It can be given by the --dpi or -d command line option. Default value is 72 DPI.

Limitations

Missing features:

Implementation

SVG images are built using the following shapes (all of these are subject of an arbitrary affine transformation):

In contrast G-Code implements only

That means that only lines, circles and some arcs (non-elliptic ones without rotation) can be transleted to G-Code directly. If transformations are also counted, then only lines can be translated to G-Code directly as circles are not invariant under affine transformations. Because of this, the converter is implemented in two stages.

Stage 1

All the SVG drawing operations are translated to a list of MoveTo, LineTo and CubicBezierTo operations as these are invariant under affine transformations. Arcs, circles and ellipses can be easily approximated with bezier curves with a small error.

Stage 2

Cubic bezier curves are approximated with Biarcs using the algorithm described in [1] and explained here.