Path Workbench

Introduction
The Path workbench is used to produce machine instructions for CNC machines from a FreeCAD model. This can be used to produce real-world 3D objects on machines like mills, lathes, lasercutters or alike. Usually these instructions are some kind of GCode dialect.

The FreeCAD process to create these machine instructions is as follows:
 * You create a 3D model of your object, probably using one ore several of Part Design], [[Part Workbench|Part or Draft workbench
 * You create a Job in Path Workbench, the job uses a certain set of tools.
 * You create milling paths using e.g. Contour and Pocket operations. These Paths have a slightly abstract GCode represention which is independent from the machine
 * Finally, since each type of machine often speaks a different G-Code dialect, you use a machine dependent post processor to create GCode which. This translates the FreeCAD G-Code into the particular flavor recognized by your machine. There are several postprocessors included which you can use directly or use as a template for creating your own.

Move the following to a new page about Path objects
The basic object of the Path workbench is the Path object. A Path object describes the movement that a machine head must perform in order to cut through a block of material, in the case of CNC machines. Path objects can contain not only movement information, but also other instructions for the machine, such as the rotation speed that the cutter must have, or which tool must be used.

Path objects can be created in many ways, by giving them manually the points through which they must pass, or deriving them from a wire-shaped FreeCAD object, or, more interestingly, by deriving them automatically from an existing 3D object, or parts of it. This is a complex task, and the tools below are there to do this, or part of this, in different ways. It requires some use to know them all, and choose which one is more suited to the particular task you need. Sometimes, you might also prefer to build your paths step-by-step, using partial tools, instead of using the more complex tools.

Path objects can also be combined into Compounds or Arrays, allowing you to use different tools to do different parts of the whole cutting operation, and join them into one final path.

Project objects, finally, allow you to manage different cutting operations that have to be performed by a same machine, and add machine-specific information such as a table of cutting tools available on the machine, with their characteristics. Some Path tools will then be able to refer to that table to obtain information like the diameter of a certain cutting tool.

FreeCAD is also able to import G-Code files, for which a pre-processing script can also be used.

The Principles of the Process
The bracket for the various path elements is the Job. You can think of it as a job you have to do at a real mill: The mill has a certain set of control codes (usually GCode), you use a certain set of tools, you have some stock material, and you start to mill by using the different tools. You can use the same tool for different paths, e.g. milling different pockets.

Scripting
The Path workbench offers a broad python scripting API. With it, you can create and modify paths from python scripts, or extend the available functionality of the workbench.