Path Workbench

Introduction
The Path workbench is used to produce machine instructions for CNC machines from a FreeCAD model. These produce real-world 3D objects on CNC machines such as mills, lathes, lasercutters, or similar. Typically, these instructions are some kind of G-Code dialect.



The FreeCAD Path Workbench workflow creates these machine instructions as follows:
 * A 3D model is the base object, typically created using one or more of the Part Design, Part or Draft Workbenches.
 * A Job is created in Path Workbench. This contains all the information required to generate the necessary G-Code to process the Job on a CNC mill: there is Stock material, the mill has a certain set of tools and it follows certain commands controlling speed and movements (usually G-Code).
 * Tools are selected as required by the Job Operations.
 * Milling paths are created using e.g. Contour and Pocket Operations. These Path objects use an internal agnostic FreeCAD G-Code dialect which is independent of the CNC machine.
 * Because each CNC Controller speaks a specific G-Code dialect, a Dialect-correct Postprocessor translates from the internal agnostic FreeCAD G-Code. Several Postprocessors are included allowing direct use or as a templates for modification. Postprocessors contain configuration flags and are designed to be tuned by adding G-Codes and M-Codes to provided definitions for:
 * Machine initialization
 * Job finalization
 * Tool-Changes
 * Cooling on /off
 * Etc...

Links for the impatient
Depending on your interest in the Path workbench there are different topics for further reading:


 * If you are a new new user trying to get familiar with Path, you might be interested in a fast walk-through tutorial.
 * If you have a special machine which cannot use one of the available postprocessors you may want to write your own postprocessor
 * As an experienced user you may want to write a macro for the Path Workbench
 * Power users may want to streamline processes.
 * New Developers might want to understand core concepts.

General concepts
The Path Workbench generates G-Code defining the paths required to mill the Project represented by the 3D model on the target mill—in a simple agnostic G-Code dialect which is later translated to the appropriate dialect for the target CNC controller by selecting the appropriate Postprocessor. The G-Code is generated from directives and Operations contained in a Path Job. The Job Workflow lists these in the order they will be executed. The list is populated by adding Path Operations, Path Dressups, Path Partial Commands, and Path Modifications—from the Path Menu, or GUI buttons.

A summary of the contents of the Path Job includes:
 * 1) A list of Tool-Controller definitions, specifying the geometry, Feeds, and Speeds for the Path Operations Tools.
 * 2) A Workflow sequential list of Path Operations.
 * 3) A Base Body—a clone used for offset.
 * 4) A Stock, representing the raw material that will be milled to Path Workbench.
 * 5) A SetupSheet, containing inputs used by the Path Operations, including static values and formulas.
 * 6) Configuration parameters specifying the output G-Code job's destination path, file name, and extension, and the Postprocessor—used to generate the appropriate dialect for the target CNC Controller, and customize Units, Tool Changes, Parking, etc...

The Path Workbench provides a Tool Manager (Library, Tool-Table), and G-Code Inspection, and Simulation tools. It links the Postprocessor, and allows importing and exporting Job Templates.

The Path Workbench has external dependencies including:
 * 1) The FreeCAD 3D model units are defined in the Edit-> Preference...->General->Units tab's Units settings.  The Postprocessor configuration defines the final G-Code units.
 * 2) The Macro file path, and Geometric tolerances, are defined in the Edit->Preferences...->Path->Job Preferences  tab.
 * 3) Colors are defined in the Edit->Preferences...->Path->Path colors tab.
 * 4) Holding tag parameters are defined in the Edit->Preferences...->Path->Dressups tab.
 * 5) That the Base 3D model quality supports the Path WB requirements—passes Check Geometry.

FreeCAD Path Workbench internal G-Code dialect represents Feed rates in Units/Second—what the G-Code Inspection tool will show. The Postprocessor is configured to generate the appropriate Feed rates—either in Units/Second or Units/Minute for the target mill.

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.

How many axes can Path Workbench handle?
At the moment Path Workbench can handle up to 3 axis.

What is the difference between Clearance Height and Safe Height?
You can find more detailed information in depths and heights.

Can Path Workbench perform 3D surface milling?
Yes, Path provides for 3D surface milling Operations. It requires installation in the Macro file path of OpenCamLibrary--a 3rd party Open Source module.

Can I modify an existing, or make my own Postprocessor?
Postprocessors are Python scripts, and are saved in the Macro file path.

The provided Postprocessors are written with comments indicating sections containing Flags, Configuration Variables, and Sections of G-Codes and M-Codes that are to be used by the Postprocessor to configure the output.

Typical Configuration True/False Flags include:
 * 1) OUTPUT_COMMENTS
 * 2) OUTPUT_HEADER
 * 3) OUTPUT_LINE_NUMBERS
 * 4) SHOW_EDITOR
 * 5) MODAL

Typical Configuration Variables include:
 * 1) LINENR
 * 2) UNITS
 * 3) MACHINE_NAME
 * 4) PRECISION

Typical Configuration Sections include:
 * 1) PREAMBLE
 * 2) POSTAMBLE
 * 3) TOOL_CHANGE

How I can set metric/imperial units for my path object?
The 3D model units are defined in the Edit->Preferences...>General->Units tab's User System drop menu.

The Units setting configuring how the the target mill interprets the Job G-Code is set in the output Postprocessor, which inserts a G20, or a G21 G-Code command to indicate inches or millimeters, respectively.

The Postprocessor also is configured for Units/Second, or Units/Minute. If set for Units/Minute, the Path workbench internal G-Code dialect Feed rate is multiplied by 60.

Mismatches between the 3D model and Postprocessor settings are likely culprits for factor of 60 errors in Feed rate, and factors of 25.4 in distance.

How I can simulate my strategies?
A volumetric simulator is provided to view the result of cutting the tool geometries included in the Job Operations against the Stock.

What is the significance of path line colors?
Path line colors are defined in the Edit->Preference...->Path->Path colors tab. Default colors include:
 * 1) Green for normal paths.
 * 2) Red for rapid paths.
 * 3) Yellow for Probed paths.