From ShapeOko
Revision as of 12:50, 1 November 2015 by Winder (Talk | contribs)

Jump to: navigation, search

Inkscape is a Free and Open Source vector drawing program oriented towards the creation of SVG (scalable vector graphics). It can export to DXF for use in other CAD/CAM software, or directly to G-code using the Gcodetools extension. It has a broad variety of import and export formats, so is useful to have for conversion, even if one doesn't use it to draw. See pstoedit for further conversion tools.

Be sure to read the section on Bézier Curves at the top of the CAD page.


Inkscape is freely available for Windows, OSX, and Linux from


The only configuration issue documented thus far is reconciling the units used in InkScape with those expected by MakerCAM as noted here and in the discussion "Inkscape to makercam dims off? - Change the preferences!".

Usage Considerations

The default is to include stroke width in object dimensions. It is more straight-forward if such is not included. One can either work w/ objects which have no stroke, but fill only, or change the preference:

Edit | Preferences --- under Tools choose the radio button to use Geometric bounding box (this excludes stroke width from the size, making calculation, placement and sizing easier)

In order to see how the files are actually constructed and will be imported by your CAM tool, do View | Display Mode | Outline[1].

As that view indicates, type, set as type will not be usable, it must be converted to a path using the command:

Path | Object to Path

Ungroup and rework as needed.[2]

Scaling Factor for SVG Files

SVG files will include a statement which notes how many internal (file) units there are per inch. Different programs use different numbers --- most programs on import will ignore this value and instead directly map to their own (possibly different) value. Values for some programs:

  • 90 --- Adobe Illustrator
  • 72 --- Inkscape

MakerCAM has a preference for handling this on import.

Previewing Cuts

  • Dupe the paths: Edit | Select All, Edit | Copy, Edit | Paste in Place
  • offset them in the appropriate direction by half the bit diameter, for profiles this is out (Path | Outset), for pockets, in (Path | Inset) Unfortunately, Inkscape doesn't afford one much control over this --- you'll have to do it multiple times (seems to be 1 pixel each time) until you get close --- draw in an appropriately sized circle first. FYI Dynamic offset is buggy and may be removed.
  • set the stroke to the width of the bit and rounded ends and corners. Object | Fill and Stroke --- set Width appropriately, Join and cap should be the middle (rounded) options.[3]

Useful Extensions for CNC Operators

Listing of Inkscape extensions with commentary:


Homepage: gcodetools

(To be included with versions of Inkscape 0.49 and higher)

Gcodetools provides Inkscape with several operations for generating G-code which you can send to your ShapeOko. Inkscape and Gcodetools together can replace the traditional CAD/CAM workflow entirely.

Warning: When creating G-code to use with GRBL, always choose the "Round all values to 4 digits" Post-processor in the "Preferences" tab! Without this option selected, codes will often exceed the 50- or 70-character-per-line limit present in GRBL, resulting in deformed shapes on the machine.

Esp. see the tutorial (linked below):

Bit angles are handled oddly. Fortunately the default, w, is a 90 degree V-bit.[4]

Source on GitHub:


Homepage: Tabbed Box Maker[5]

This extension generates tabbed pieces for building boxes whose sides interlock together. Visit the link above for a better explanation with pictures.

See also T-Slot Boxmaker which allows the use of screws instead of glue.

Hershey Text

Homepage: Hershey Text

Hershey Text is an extension that generates CNC-friendly text paths using special engraving fonts.

Interface w/ OpenSCAD

Please note that there is a tool for Inkscape which will export files to a format suitable for import into OpenSCAD Inkscape gets OpenSCAD converter. (Also available here.)

Export to TikZ

There is an extension which will export from Inkscape to TikZ, a programmatic diagramming language, which will allow re-use of InkScape paths: Inkscape to TikZ exporter

Export to DXF

Modifications of Better Better DXF Output,[6] Big Blue Saw's DXF Export For Inkscape. Fixes for v0.91:

See also Better DXF Output.

Note that DXF export must resolve Inkscape using Bezier curves while DXF uses NURBS, requiring a path approximation for anything but perfect circles and arcs.[7]

Import DXF --- A dxf to svg converter. Can be used to create pure svg files or Inkscape svg files with extra information like layers.

Gcode Extension

Simplistic extension which will directly maps the points on paths to straight lines, necessitating that one add additional points to approximate curves:

MakerBot Unicorn G-Code Output for Inkscape Plugin


Fork: [8]


Vinyl cutting utility for Inkscape Win32.


Plugin to generate g-Code for a 2D wirecutter with a turning table .

Utility programs for SVG files --- will remove / clear empty paths

Tutorials and Examples

A game to learn about forming Bézier curves:

A Primer on Bézier Curves

Brief notes for new users

Files which come in from .dxfs will often be separate, discrete paths, as opposed to closed paths. In some instances this can be fixed by selecting everything and choosing Path | Combine.[9]

Only closed paths are suitable for use w/ profile and pocket commands in most CAM programs.

Combining overlapping objects

To combine over-lapping objects (this includes text in script fonts)

  • Path | Object to Path <control>C (that includes a <shift>)
  • Path | Union

You can verify what MakerCAM will see using:

  • View | Display mode | Outline

That's an important view for vector work --- usually one shifts in and out of it constantly.

Path commands

The Path commands are even more important and one needs to understand all of the options:

  • Union
  • Difference
  • Intersection
  • Exclusion
  • Division
  • Cut path

work and how stacking order interplays w/ them in order to accomplish anything non-trivial w/o going to a lot of unnecessary work.