CAM

In this wiki-page we aim for listing all the available Free and Open Source CAM software. Please note that proprietary software have been moved to their own page. Also see Free software section in Wikipedia CAM. See also Interactive G-Code Generators.

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 Page discussing such: http://www.cnccookbook.com/CCCAMToolpaths.htm

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

File formats
Notes on file formats:

2D

 * 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.

3D

 * STEP-->step/stp Standard for the Exchange of Product model data
 * IGES-->iges/igs Initial Graphics Exchange Specification
 * X3D
 * PHIGS-->(Programmer's Hierarchical Interactive Graphics System)
 * ACIS
 * VRML wrl-->Virtual Reality Modeling Language vector file
 * COLLADA dae
 * STL Stereolithography file format (binary and ANSI structure) surface triangulations, Standard Triangulated Language
 * OBJ Wavefront

Machine languages

 * G-code: gcode tutorial is a good reference material to get you started writing g-code by hand. This is a great point of reference once you get into creating your own gcode, or if you need to modify generated g-code. There is a list of editors for G-Code (some of which have syntax highlighting) on the Programming page.
 * OpenSBP
 * HPGL (Hewlett-Packard Graphics Language)
 * Cutter Location (CL) Data, APT

Post-processor
One common need for many CAM applications is a post-processor to convert from and internal G-code representation to a particular variant. Effort to collect them here: https://www.mycampost.com/ (note that it may include some commercial post-processors)

Tool-path generators
Note that some CAD programs are able to directly export to G-code, FreeCAD for example has added a Path Workbench which is particularly capable, and certain other special purpose CAD tools may serve for CAM functions.

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”: https://github.com/Emerica/inkscape-shapeoko3

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

http://cammill.github.io/ https://github.com/cammill/cammill

http://hci.rwth-aachen.de/visicut

https://www.reddit.com/r/cad/comments/43acik/dxf_tool_for_laser_cutting_needed/

https://github.com/lansing-makers-network/thlaser-inkscape-plugin

http://www.hci.rwth-aachen.de/visicut --- https://github.com/t-oster/VisiCut

K40 Whisperer: Control software for the stock K40 Laser controller with M2nano controller board --- alternative to the the Laser Draw (LaserDRW) program that comes with the cheap Chinese laser cutters available on E-Bay and Amazon. Reads SVG and DXF files interprets the data and sends commands to the K40 controller to move the laser head and control the laser accordingly.

c.f., https://github.com/mbugert/laserscad (interface for OpenSCAD.


 * http://laser.woutvdd.be/ --- laser support for Carbide Create

Plasma
http://plas.mx/ --- open-source pure javascript CAM for plasma cutters

Multi-function
Kiri:Moto https://grid.space/kiri --- combination CAM tool and slicer for FFF, lasercutting and rotary spindles. Noted as working well w/ OnShape.

https://cam.openbuilds.com/ --- https://github.com/OpenBuilds/cam --- based on: https://github.com/LaserWeb or maths it leverages off Clipper https://sourceforge.net/p/jsclipper/wiki/Home%206/ openjscad may be used for parametric work.

http://fabmodules.org/

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

http://rastercarve.live/  https://github.com/built1n/rastercarve

Also see: CAD: Image Depth Maps

Processing technique: Image_Engraving: The Gold Method

Another option is to start with a 3D model, and then render that into a grayscale pixel image: https://www.reddit.com/r/CNC/comments/63eayp/how_to_create_this_type_of_gray_scale_image_for/dfuac1m/

See also:


 * https://fwei.tk/blog/opening-black-boxes.html
 * bmp2cnc --- command line program to convert bitmaps to g-code, that runs in Linux, DOS and Windows http://www.mr-soft.net/en/bmp2cnc.html
 * imagecarve --- takes a PGM image and outputs a G-code program that carves that image
 * Image-to-gcode and Image-to-gcode modified --- mills "depth maps"
 * DXF Halftone 2.1 --- GPL program to convert a halftone to a .dxf.
 * OpenVoronoi --- conceptual code on GitHub
 * Experiment with pointilism source code: CNCStipple.zip
 * http://clonerbox.com/image_3D_converter.php --- image to stl converter
 * http://3dp.rocks/lithophane/ --- Lithophane : images (greyscale) to 3d print or CNC mill as low relief ("bas-relief") or lithophane

Matlab

 * https://www.dropbox.com/sh/a7uknxazwlkekcp/AAC2kRnseymtWMLjjmDCzKfBa?dl=0 --- Matlab code to generate G-code from image.

Dovetails
https://github.com/razeh/gcode-boxes

Hole Tolerance
https://castirony.github.io/tolliver/

Toolpath strategies
Overview of terminology: https://www.cnccookbook.com/3d-cnc-milling-machining-cam-toolpaths/ (written by Robert Grzesek, author of MeshCAM, it is excellent as an overview of terminology used in that program)

Peel milling

 * https://makeitfrommetal.com/trochoidal-and-peel-milling/

Trochoidal milling

 * https://www.cnccookbook.com/trochoidal-milling-feeds-speeds/
 * https://www.cnccookbook.com/high-speed-machining-trochoidal-milling-hsm-speeds-and-feeds/
 * https://www.harveyperformance.com/in-the-loupe/introduction-trochoidal-milling/
 * https://www.aero-mag.com/a-trochoidal-milling-boost/
 * https://www.wnt.com/uk/news-about/the-new-evolution-in-trochoidal-milling-853.html
 * https://www.sandvik.coromant.com/en-us/knowledge/milling/milling-holes-cavities-pockets/pages/slicing-trochoidal-milling.aspx
 * https://www.practicalmachinist.com/vb/cnc-machining/trochoidal-milling-other-milling-technique-paths-267045/
 * https://www.sciencedirect.com/science/article/pii/S0924013616300310
 * https://www.sciencedirect.com/science/article/pii/S0890695506001891
 * https://link.springer.com/article/10.1007/s00170-018-1967-0
 * http://catiadoc.free.fr/online/pmgug_C2/pmgugrf0170.htm
 * https://community.plm.automation.siemens.com/t5/Discussion-Forum-NX-Manufacturing/trochoidal-milling/td-p/325052

2.5D
See also:
 * https://github.com/tmpvar/text2gcode --- command line tool under the MIT license to use a TrueType font to create the G-code to cut a given text w/ user-specified parameters
 * DeskEngrave --- converts text set in TrueType fonts, saves as DXF or G-code. Also available from: http://yertiz.com/cnc/text2.htm

Nascent: https://github.com/nathanielstenzel/bucket_mill

Forked:


 * http://gcam.js.cx/wiki/Main_Page
 * https://github.com/blinkenlight/GCAM

Note that LaserWeb now supports CNC milling and has extensive documentation: http://cncpro.co/index.php

See also http://www.artcam.com/free/index.asp

2D CAD to tool-path
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).

https://github.com/fenrus75/FenrusCNCtools

See also http://www.dewittindustries.com/cgibin/metavector/ and http://www.lindsayengraving.com/other_interests/gcode/index.html

http://reprap.org/wiki/Builders/Replath

http://paulrowntree.weebly.com/topo.html

https://cloudconvert.com/eps-to-dxf

https://cloudconvert.com/svg-to-dxf

https://github.com/lemgandi/3mf2stl --- 3mf to stl converter for Linux

3D
Merging the boundaries between 2D and 3D, CAD and CAM, there's http://www.flatfab.com/ Fabrication Design Software that helps you design and fabricate 3D objects. Ideate and draw in 2D, fabricate in 3D.

https://github.com/koppi/stl2ngc/blob/master/stl2ngc.cpp --- STL to G-Code converter in C++

Note that GrblGru v3.5 is able to slice an STL into layers so as to create a stair-stepped version of an STL.

https://grid.space/kiri --- combination CAM tool and slicer for FFF, lasercutting and rotary spindles.

Flatcam (see PCBs below) is noted as being generally useful.

https://github.com/ahmetcemturan/SFACT --- formerly Skeinforge (also known as SF-ACT), Python

http://opencam.sourceforge.net/

3D Slicing for Additive Manufacturing
See: 3D Printing: Software

Multiple Axis
http://genericcam.sourceforge.net/ --- multi-axis, reads STL, GTS and DXF

http://cncsimple.wordpress.com/download/ --- also listed on CAD page since it includes CAD functionality, includes lathe support

Ezilathe: http://www.cnczone.com/forums/uncategorised-cam-discussion/263938-cnc-forum.html

CNC Wrapper is a commercial program which has a number of free utilities associated with it: https://www.cncwrapper.com/freeware/ which are useful for 4th axis and lathe work.

See also Aptos on the Programmatic G-Code Generators page

Fonts
StickFont v1.1 http://ncplot.com/freetools.htm --- converts text to G-Code (or DXF) using a single stroke font.

The Hershey fonts are supported by Inkscape

https://nationalparktypeface.com/ being based on a router template is especially well-suited to being cut out by the machine.

Online
http://www.microtechstelladata.com/TextToNCcode.aspx --- tool to create G-Code for single line text

PCB
http://community.carbide3d.com/t/pcb-eagle-plugin-pcb-gcode-3-6-0-4/149/9

http://cirqwizard.org/ --- cross-platform open source software designed to control PCB prototyping machines. Gerber to GCode converter, also controls the machine and guides a user through the processes of PCB manufacture.

http://www.pentalogix.com/viewmate.php --- ViewMate Gerber Viewer

gcam --- Software for generating gcodes from gerber files https://github.com/bubbapizza/GCAM forked into a 2.5D program

See also:


 * http://woodworkerb.com/home/pcb-isolation-routing/tool-width-calculator/
 * opt-qt

Tutorials:


 * PCB designing and isolation milling using only free Software by ähöüokul


 * http://frankpiesik.org/2014/11/24/my-pcb-milling-toolchain/


 * http://community.carbide3d.com/t/great-results-milling-pcbs-from-eagle-with-the-nomad/283

Leveling
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: http://martin2250.blogspot.de/2014/12/grbl-height-probing-tutorial.html and https://github.com/synthetos/TinyG/wiki/ChiliPeppr-PCB-Auto-Level as well as bCNC.

PCB probing software

bCNC also has a facility for this. https://github.com/vlachoudis/bCNC/wiki/AutoLevel

http://www.decarpentier.nl/adding-auto-leveling

Thread Cutting
Note that this may require a special "threadmill" endmill.

See the forum discussion thread milling with shapeoko2?.


 * Guhring ThreadMillCNC CNCGenerator.


 * Example code for 20 threads per inch.


 * http://www.varmintal.net/alath.htm --- includes gears calculating Visual BASIC programs.

Youtube: Nomad 883 Drill and Tap with Threadmill

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

https://github.com/vlachoudis/bCNC/wiki/Plugins:-Drag-Knife

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.

Fret cutting
http://efguitars.s3.amazonaws.com/fretboard-generator.html

Nesting
https://deepnest.io/

http://svgnest.com/ https://github.com/Jack000/SVGnest

http://shinyprints.com/cnc/

http://www.mynesting.com/

https://sourceforge.net/projects/ctmc/

https://www.cutlistoptimizer.com/ --- has a free mode

MakerCAM

Note that there are opensource scripts for some commercial apps, see the Commercial Software page.

Discussion of techniques: http://www.packomania.com/

Cut lists

 * https://jonathan.overholt.org/projects/cutlist
 * http://workshop-buddy.com/index.html
 * http://www.maxcutsoftware.com/ --- commercial program with free version --- also does nesting

Other programs
https://github.com/svenhb/GRBL-Plotter https://www.youtube.com/results?search_query=grbl-plotter https://github.com/svenhb/GRBL-Plotter/wiki/Image-import

http://camlab.sienci.com/camlab

https://www.freecadweb.org/wiki/Path_Workbench

http://simple2dcadcam.sourceforge.net/

https://github.com/arpruss/gcodeplot --- Generate 3-axis plotter gcode (or HPGL) from HPGL or an SVG subset. See http://www.instructables.com/id/Use-3D-Printer-As-a-Plottercutter/

https://github.com/evil-mad/stipplegen/releases/tag/v2.31 example image at: http://www.shapeoko.com/forum/viewtopic.php?f=30&t=8211&p=64435#p64433

http://www.students.tut.fi/~syvajar3/

http://nraynaud.github.io/webgcode/text.html

http://mync.sourceforge.net/

http://www.codeproject.com/Articles/1857/CAM-simulator

http://sourceforge.net/projects/verot/

http://kokompe.cba.mit.edu/ --- 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

https://github.com/1944GPW/ptap2dxf https://github.com/1944GPW/ptap2dxf/blob/master/Documentation/PTAP2DXF_User_Manual_v1.0.pdf --- generates DXFs for cutting workable 8-level, 5-level and other-level paper tapes using a normal home CNC craft stencil cutting machine

Testing
https://github.com/onekk/eurocam

Other
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 ).

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

Open source computer aided manufacturing algorithms library: https://github.com/aewallin/opencamlib Explanations of the algorithmic details at: http://www.anderswallin.net/category/cnc/cam/ Used in stl2ngc.cpp listed above.

The ShapeOko 3 (and Nomad 883) are directly supported by Carbide Create a CAD/CAM program developed by Carbide3D (available under a free license).

Toolpaths: https://www.cnccookbook.com/3d-cnc-milling-machining-cam-toolpaths/

Forum Poll