From ShapeOko
Jump to: navigation, search

Note that some CAD programs are able to directly export to G-code, and certain other special purpose CAD tools may serve for CAM functions. Also see Free software section in Wikipedia CAM. See also Interactive G-Code Generators.

A welcome feature would be automatically returning to the origin, say by adding G0 X0 Y0 Z0 at the end of files (prefaced by a G0 Z<safety height>).

Please note that commercial software, as well as otherwise free programs, which have significant licensing limitations have been moved to their own page.

Notes on file formats:

  • dxf --- AutoCAD’s drawing exchange format. Older versions are limited to only straight lines, files are either in Imperial or metric mode
  • stl --- stereo lithography triangle mesh. Often used for 3D printing stl is a general-purpose triangle mesh which may be processed by many CAM programs
  • SVG --- scalable vector graphics are intended for use on screens, so scaling is done in terms of pixels and defining how many pixels there are in a unit of measure is an afterthought, if considered at all. When trying an SVG file from a new drawing program, if possible always include an object of known dimension for scaling purposes.

CAM programs can generate several sorts of tool paths, and some CAM/previewing programs are able to transform one sort of G-code tool path into another as an optimization step. Examples of this include high speed machining (HSM) and proprietary systems such as Volumill [1] Page discussing such:

Some CAM programs will require the selection of a post-processor. The creation/customization of one is described in: G-Code: Post Processors.

Note that GrblGru = Free 3D-Simulation for ShapeOko2 has added CAM functionality as of v2.[2]

Open source computer aided manufacturing algorithms library: Explanations of the algorithmic details at: [3] Used in stl2ngc.cpp listed below.

The ShapeOko 3 (and Nomad 883) include a license for Carbide Create a CAD/CAM program developed by Carbide3D (currently in beta).

Forum Poll


Type Name/Link Description
Hand Coded gcode tutorial Reference material to get you started writing gcode by hand. This is a great point of reference once you get into creating your own gcode, or if you need to modify generated gcode.

There is a list of editors for G-Code (some of which have syntax highlighting) on the Programming page.

Graphical Editor RapR3D Visual GCode Editor Free (beta, donation-ware) graphical tool for Windows allowing point-click-drag editing of G-code files.

2D (Laser or plasma machines)

The simplest use case, software for this may also allow the machine to function as a plotter. Note that Grbl 1.0 and later over-ride M4 to enable lasermode.

A notable example of this potential is the nascent fork of the “MakerBot Unicorn G-Code Output for Inkscape Plugin”: [4]

Type Name/Link Description
2D Laser laser-code Part-cutting software which does a “travelling salesman” routine to determine optimal path.
2D Laser JTech Photonic Inkscape plug-in
2D Laser Raster 2 Laser GCode generator[5]
2D Laser SnapFracturePop's Laser GCode converter Tool to modify G-code for use on a laser.
2D Laser LaserWeb up to version 3: LaserWeb3[6] Node.js based, Windows/Linux/Mac/Raspberry Pi/Vagrant supported, host software for Lasercutters/Engravers running Marlin/Smoothieware/Grbl/LasaurGrbl with integrated parametric Gcode generators, Raster support, as well as Raster and Vector Engraving. SVG and DXF supported for cutting, PNG, BMP, JPEG support for raster engraving.
2D Laser (Windows) Image2Gcode Image to Gcode converter, it is designed for laser engravers based on GRBL.

See also Font to G-Code CNC VB2005E which allows one to directly convert text using any Windows font into G-code which will cut to a specified depth.

See also the Windows tool G-code Optimizer lists on the G-Code Utilities


Kiri:Moto --- combination CAM tool and slicer for FFF, lasercutting and rotary spindles. Noted as working well w/ OnShape.[7]


Note that some 2.5D programs listed in the next section are also able to import images for CAM.

Processing technique: Image_Engraving: The Gold Method

Type Name/Link Description
2.5D Image engraving Scan2 CNC Convert image to G-Code.
2.5D Image engraving Reactor and Halftoner Windows programs (requiring DOT NET 3.5) to engrave pixel maps as either halftones or dot patterns.
2.5D Image engraving (opensource) Dmap2gcode Generates g-code to cut depth

based on a gray scale image darkness or lightness.

2.5D Image engraving LoboCNC LoboLitho.exe Very basic Windows program for converting bitmap images (.bmp files) to G-Code for carving lithophanes. C++ source inlcuded

See also:

Hole Tolerance [10]


Type Name/Link Description
2.5D web based MakerCAM[11] Open source and web based software in Flash based on PartKam. Hosted and maintained by Edward Ford.
2.5D PathCAM Open Source Toolpath generation software, available for Windows and Ubuntu. Supports .stl .obj .dae files. Sends GCode to GRBL v8.0c.
2.5D jscut[12] Converts SVG files to CNC cutting paths. GPL, source available on github.
2.5D web based CAD + CAM Easel Browser-based CAD + CAM + Machine Control app made by Inventables that lets you design, generate toolpaths, preview in 3D and send the job to your machine from one web app. Online help. Able to run on Raspberry Pi.[13]

How to uninstall on Mac OS X

2.5D pocketing and PCBs BCAM - offline foss CAM Open source and is written in python. Project at packaged for ubuntu utopic Uses
2.5D CAM/engraving (opensource) Gcodetools Inkscape plug-in.
2.5D engraving (opensource) F-Engrave Python program for generating G-code from outline fonts (w/ algebraic analysis of outlines to vary depth when using a v-shaped bit and the ability to place text on an arc), (some) dxf files, pbm graphics (using potrace).

Blog post w/ an Intro to V Carving @

2.5D engraving (Lithophanes) Image to Lithophane Online app to generate lithophanes as .stl files
2.5D engraving (Lithophanes) CNC Lithophane Toolpath Generator Program Lithophanes obtain their shading by having different thicknesses of translucent material to perform shading, and then are back lit.
2.5D engraving (Lithophanes) Free, stand-alone, Windows based application for producing Lithophanes and 3D Reliefs.[14]

See also:



Note that CamBam has an old version which is freely available as noted on the Commercial Software page.


Type Name/Link Description
3D modeling GSimple Program to design 3D objects and generate the G-code for them. Made for Windows but runs on Linux with Wine. Not capable of true 3D, better suited for steel, G-code needs post-processing.[15]
3D modeling HeeksCNC A CAD/CAM application for Windows or Linux that can help you produce NC code. How to use different operations in HeeksCNC. When importing DXF from Inkscape, only check "use ROBO-Master type of spline output" and set the base unit as mm.[16]
3D modeling PhlatScript Google SketchUp plugin for generating G-code.
3D modeling FreeMill Free 3D Machining with very easy to use wizard. Accepts .stl files.[17] Post-processor][18]
3D CAM PyCAM A toolpath generator for 3-axis CNC machining. It loads 3D models in STL format or 2D contour models from DXF or SVG files. The stable release is working but extremely slow and uses a lot of RAM for complex models in 3D. The development release is much faster and should be prefered. MacOS install. PyCAM.
3D CAM GCAM GNU 3-Axis CAM with a simple interface for making bolt holes, drill holes, sketches, templates, and more.
3D CAM cl-mill BSD-licensed milling application generating G-Code, built in Common Lisp.
3D CAM Blender CAM Open source solution for artistic CAM, a g-code generation tool, an extension for the free open-source Blender 3D package.
3D CAM OpenSCAD2CNC Tool written in C# that generates toolpaths from OpenSCAD code instead of STL files. --- STL to G-Code converter in C++[19]

Note that GrblGru v3.5 is able to slice an STL into layers so as to create a stair-stepped version of an STL.[20] --- combination CAM tool and slicer for FFF, lasercutting and rotary spindles.

3D Slicing for Additive Manufacturing

See: 3D Printing: Software

Multiple Axis

Type Name/Link Description
4 and 5 Axis simplemultiaxiscam Very simple, yet well documented program to generate G-Code for 4 and 5 axis CNC machines.
4th axis pyturn Simple python code generator for CNC lathe programs
4th axis CNC G Code Wrapper Program Wraps an XY plane toolpath around the A Axis.
4th axis G-Code Ripper Map linear axis to rotary axis.
4th axis GCodeMapper Maps simple g-code programs (G0, G1, G2, G3 movements) from a plane to a cylinder.
4th axis Spherical Turning Program Use your parting tool to do spherical turning.
4th axis Wrapper Wrapper (wrap a toolpath around a cylinder for those who have a lathe as a 4th Axis).
multiple axis The CNC Toolkit Collection of utilities to help users produce, edit, import and export the machine control codes for general automation, mechatronic, hexapod, robotic and animatronic applications. Source code.
multiple axis CAMVOX Open source application designed for producing multi-axis toolpaths. Features: CSG (Constructive Solid Geometry), High resolution voxel space , Full 3D milling with 4 or 5-axis, Collision avoidance.[21]

See also Aptos on the Programmatic G-Code Generators page


Type Name/Link Description
PCB Python script for creating G-Code files for isolation milling and drilling. Tutorial
PCB FlatCAM Open-source PCB CAM. Includes Viewer, Isolation Routing, support for Double-sided boards [22]
PCB Visolate Application for calculating machining toolpaths (G-code) for manufacturing printed circuit boards (PCBs) by isolation milling. As an outstanding feature, this calculation is done on the computer's screen, using the features of 3D graphics drivers.
PCB drl2ngc Bash script to convert Excellon drill files (.drl) to g-code (.ngc) files.[23]
PCB PCB-Gcode Script for generating G-code for milling a PCB out an Eagle PCB layout. See also Stencil-Gcode for generating an SMD stencil. Yahoo group(from this helpful post)
PCB FreePCB A free, open-source PCB editor for Microsoft Windows, released under the GNU General Public License.
PCB Line Grinder Gerber to GCode Isolation Milling. MIT. Windows.
PCB pcb2gcode Imports standard gerber RS274-X and Excellon files, and creates fully EMC2-compatible RS274-NGC files. Will not run on Windows, includes Voronoi region analysis.
PCB (Mac OS X 10.8 or later) Otherplan Imports Eagle (.brd), Gerber (.gtl and .grb), G-Code (.nc and .tap), PCBmodE (.svg) --- intended for use w/ the OtherMill, but outputs standard G-code.
PCB (online generator) Online tool to generate G-Code from board design files.
PCB (online generator) SimpleGCoder Online tool to build circuit boards, which generates G-Code for CNC.
PCB (previewer) gerbv Free/Open Source Gerber Viewer. --- ViewMate Gerber Viewer

gcam --- Software for generating gcodes from gerber files forked into a 2.5D program[24]

See also:



An interesting alternative to tramming or flattening one's workarea is instead to use special software to modify G-code to match one's bed: Autoleveller Hackaday: Mill Warped PCB Blanks On An Uneven Bed. Also: and as well as bCNC.

PCB probing software[27]

bCNC also has a facility for this.

Thread Cutting

Type Name/Link Description
Right hand threads CNC Thread Milling G Code Generator Program Internal and external thread milling.

See the forum discussion thread milling with shapeoko2?.

Guhring ThreadMillCNC CNCGenerator. Example code for 20 threads per inch. --- includes gears calculating Visual BASIC programs.

Youtube: Nomad 883 Drill and Tap with Threadmill

Drag Knife Support

Type Name/Link Description
Drag Knife Optimizer for G-Code Donek Tools Swivel Program Excel spreadsheet which will optimize G-Code for cutting with a drag knife.

Note that dxf2gcode (see below under Conversion programs) has added support for drag knives.

If a design will accommodate rounding all of the corners, one can cut it without the need for special cornering action moves. Without them, any CAM software should give you a workable result with a Drag Knife. Simply use an engraving style (follow) toolpath which follows the line in your design which you would wish to have cut.[28]


See also Section 6.2, Practical part geometries: Creating spur gears of the Guerrilla guide to CNC machining, mold making, and resin casting.

There is an Excel spreadsheet for clockwork calculations: [29] [30]

Type Name/Link Description
Gears Involute Spur Gear Builder Browser based utility for calculating and drawing involute spur gears, fully accounts for undercuts. Blog announcement.[31] [32]

Gears GGGears [33] Tool for creation and calculation of gear transmission finite element models. Consists of a geometry and mesh generator based on GMSH and a finite element model based on GETFEM++.
Gears pyGear Built on top of pythonOCC, OpenCascade, numpy and scipy, serves as an CAE/CAD-preprocessor generator of involute gears.
Sprockets Sprocketeer (online) Windows and information Generate gcode or a CAD (DXF) drawing for sprockets.
Gears GearGCoderV1.0 (Windows) Generate gcode for a gear based on inputting Diameter (150mm --- values in parentheses are samples suggested by the developer), teeth (20), width ratio (3), feed rate (1000), tooth height (13mm), depth (9mm), add mounting holes (Y), number of holes (5), distance from center (50mm).[34]
Gears GearMaker (Windows) Program that will produce the tooth profile of a gear as a dxf drawing. Video tutorial on finishing.
Gears GearDXF (Windows) Outputs a DXF file containing a 2D outline of a spur gear using specified parameters. The tooth face is a true involute curve, but the base gaps between teeth are rough.[35]
Gears gears (Java) Involute gear milling generator and G-code viewer[36]

For information on wooden gears, see, esp. the Gear template generator. See also Github: SVG generating interactive gear maker.

Extensive tutorial at:


Inkscape has an extension for gears: Effects | Render | Gear...[37]

Creating Involute Bevel Gears in Autodesk Inventor Using the Zweerink-Snider Process

Gear generator for Solidworks (Straight / Helix / Herringbone)


Fret cutting

Type Name/Link Description
Guitar LoboCNC Fretboard.exe Free Windows application written by Jeff Kerr for cutting blind fret slots in guitar or other instrument fret boards using a small diameter end mill (~0.023"). C++ source included.

Conversion programs

See also the PostScript to G-Code conversion tool ps2gc, listed under Programmatic G-Code Generators.

See also dxf 1.1.1 a Python library to generate DXFs and DXF Halftone 2.1 mentioned above. Cf. Using AutoCAD file formats with open source libraries (IBM Developer Works article).

Type Name/Link Description
DXF to DXF DXF File Z Axis Deletion Program Takes DXF file and collapses all Z dimensions to zero.
HPGL to DXF HPGL to DXF Translation Program Accomodates the basic set of HPGL-1 commands and translates them into a DXF file.
DXF to G-Code Ace Converter Open-source freeware (GPL) utility to convert two dimensional DXF files to g-code.
DXF to G-Code flatcam Ruby command-line tool to generate gcode from a dxf-file.
DXF to G-Code CNC Code Generator Open-source software to generate NC code for machining operations like end-milling, drilling, turning, etc. generates the NC code by extracting features from a 2D DXF file.
DXF to G-Code dxf2gcode Graphical Python program to convert a 2D dxf drawing to CNC machine compatible G-Code, including preview window. Now includes drag knife support[38]. (Formerly hosted on Google Code)
DXF to G-Code Gcode2000 for Windows 95/98/2000/XP/Vista /Windows 7, reads Lines,Arcs,Rect,Circle,PolyLines,LWPolylines, Ellipse, Sorts object by size. Reads and writes DXF files.
DXF and Gerber files to G-Code gCncCam GNU Cam Processor Graphical program to convert DXF-Files and GERBER NC-Files (Drill-Files) to G-Code (RS-274) NC-Files for the Linux EMC2 cnc. Features include:
  • Creating of Tool Properties
  • Creating of Milling Properties (Layer Properties) for different Layers of the DXF-Cad Drawing
  • Saving of Tool Properties and Layer Properties to Template files
PCB to G-Code Convert Excellon Drill File to G-Code
SVG to G-Code svg2gcode A command line utility for converting SVG to G-Code using Gcanvas and canvg.
HPGL to G-Code hp2xx Opensource tool to convert vector-oriented graphics data given in Hewlett-Packard's HP-GL plotter language to a variety of formats including G-code.

See also and [39] --- 3mf to stl converter for Linux[40]

Nesting [41] [42] [43]


Other programs --- Generate 3-axis plotter gcode (or HPGL) from HPGL or an SVG subset. See example image at: --- set of software tools for personal fabrication, intended for use with machines common to fab labs, includes Tools to design 2D and 3D objects, Functions to generate 2D and 3D toolpaths, GUIs workflow from design files to machine commands

Testing [44]