FreeCAD Logo FreeCAD 1.0
  • English Afrikaans Arabic Belarusian Catalan Czech German Greek Spanish Spanish Basque Finnish Filipino French Galician Croatian Hungarian Indonesian Italian Japanese Kabyle Korean Lithuanian Dutch Norwegian Bokmal Polish Portuguese Portuguese Romanian Russian Slovak Slovenian Serbian Swedish Turkish Ukrainian Valencian Vietnamese Chinese Chinese
  • Features
  • Download
  • Blog
  • Documentation
    Documentation index Getting started Users documentation The FreeCAD manual Workbenches documentation Python coding documentation C++ coding documentation Tutorials Frequently asked questions Privacy policy About FreeCAD
  • Contribute
    How to help Sponsor Report a bug Make a pull request Jobs and funding Contribution guidelines Developers handbook Translations
  • Community
    Code of conduct Forum The FPA GitHub GitLab Codeberg Mastodon Matrix IRC IRC via Webchat Gitter Discord Reddit Twitter Facebook LinkedIn Calendar
  • ♥ Donate

Donate

$
SEPA Information
Please set up your SEPA bank transfer to:
Beneficiary: The FreeCAD project association
IBAN: BE04 0019 2896 4531
BIC/SWIFT: GEBABEBBXXX
Bank agency: BNP Paribas Fortis
Address: Rue de la Station 64, 1360 Perwez, Belgium

While Stripe doesn't support monthly donations, you can still become a sponsor! Simply make a one-time donation equivalent to 12 months of support, and you'll gain access to the corresponding sponsoring tier. It's an easy and flexible way to contribute.

If you are not sure or not able to commit to a regular donation, but still want to help the project, you can do a one-time donation, of any amount.

Choose freely the amount you wish to donate one time only.

You can support FreeCAD by sponsoring it as an individual or organization through various platforms. Sponsorship provides a steady income for developers, allowing the FPA to plan ahead and enabling greater investment in FreeCAD. To encourage sponsorship, we offer different tiers, and unless you choose to remain anonymous, your name or company logo will be featured on our website accordingly.

from 1 USD / 1 EUR per month. You will not have your name displayed here, but you will have helped the project a lot anyway. Together, normal sponsors maintain the project on its feet as much as the bigger sponsors.

from 25 USD / 25 EUR per month. Your name or company name is displayed on this page.

from 100 USD / 100 EUR per month. Your name or company name is displayed on this page, with a link to your website, and a one-line description text.

from 200 USD / 200 EUR per month. Your name or company name and logo displayed on this page, with a link to your website and a custom description text. Companies that have helped FreeCAD early on also appear under Gold sponsors.

Instead of donating each month, you might find it more comfortable to make a one-time donation that, when divided by twelve, would give you right to enter a sponsoring tier. Don't hesitate to do so!

Choose freely the amount you wish to donate each month.

Please inform your forum name or twitter handle as a notein your transfer, or reach to us, so we can give you proper credits!

Job
Sanity
CAM

CAM Post

Menu location
CAM → Post Process
Workbenches
CAM
Default shortcut
P P
Introduced in version
-
See also
None

Description

The CAM Post command exports the selected CAM Job to a G-code file.

Each CNC Controller speaks a specific G-code dialect, requiring a Dialect-correct Postprocessor to translate the final output from the agnostic internal FreeCAD G-code dialect.

Typical functions of the Postprocessor include

  • Using a correct Job output G-code file extension.
  • Selecting the G-code commands. CNC controllers typically support a subset of available G-code commands. The super-set of G-code commands contains powerful and specialized commands that otherwise must be processed using multiple simpler commands. Postprocessors are written to select the best G-code for an Operation, available on the target.
  • Formatting the G-code syntax by reordering the Feed, X, Y, Z, A, and B inputs, and the precision.
  • Inserting a Pre-amble to set units, units format, Work plane, coordinate system, etc...
  • Inserting a Post-amble to park the machine, stop it, process any arguments.
  • Inserting Tool changes, or suppressing them between subsequent operations using the same tool.
  • Formatting the Feed and Speed rate information to revolutions per minute, or per second.
  • Formatting Function Call Naming and Calling.

Postprocessor Customization

If you want to write your own postprocessor, have a look at the CAM Postprocessor Customization page.

Note: Several provided Postprocessors generate suitable code for many CNC controllers, or can be used as 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...

Postprocessors use FreeCAD's internal G-code dialect in conjunction with the Postprocessor configuration definitions, to generate Dialect-Correct G-code for target machines. This allows the CAM workbench to generate correct G-code to target various CNC machine controllers by invoking different Postprocessors.

CNC Machine Controller types include:

  • CNC mills
  • CNC lathes
  • 3D Printers
  • DragKnife Cutters
  • Laser Cutters
  • Engravers
  • Plasma Torch Cutters
  • Wire Benders
  • EDM Cutters
  • Etc...

If only one CNC machine is used, or if all CNC machines share a common Postprocesor, the CAM workbench would need to include only a single Postprocessor. If a single Postprocessor is inadequate to output G-code for all target CNC controllers, then multiple Postprocessors must be installed.

Usage

  1. Select a CAM Job in the Tree View.
  2. There are several ways to invoke the command:
    • Press the Post Process button.
    • Select the CAM → Post Process option from the menu.
    • Use the keyboard shortcut: P then P.
  3. Confirm the Output File name and directory

Options

Output file and Postprocessor properties can be set in the Job, at any time, prior to invoking the Postprocessor.

The provided Postprocessors are written with comments indicating areas 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:

  • OUTPUT_COMMENTS (True = Allow, False = Suppress): Used to insert Text Comments in the output G-code file.
  • OUTPUT_HEADER (True = Allow, False = Suppress): Used to insert Text Headers in the output G-code file.
  • OUTPUT_LINE_NUMBERS (True = Allow, False = Suppress): Used to insert Line Numbers in the output G-code file.
  • SHOW_EDITOR (True = Allow, False = Suppress): Used to show the output G-code in a Pop-up window when invoking the Postprocessor.
  • MODAL (True = Allow, False = Suppress): Used to reduce the number of output G-code lines by stripping Mode information when the Mode is not changing.

Typical Configuration Variables include:

  • LINENR (Line Number): Used to Set the Line Number index.
  • UNITS (G20 or G21): Used to explicitly communicate to the target CNC controller what Units to use to interpret the final output file.
  • MACHINE_NAME (Name of Target CNC Mill): Used to Insert a machine name label in the final output file.
  • PRECISION: Used to Set the number of digits to include after the decimal place in final output file

Typical Configuration Sections include:

  • PREAMBLE: Code configuration inserted at beginning of the Job.
  • POSTAMBLE: Code configuration appended to the Job, providing for parking the machine, etc...
  • TOOL_CHANGE: Code inserted with each tool change in the Job.

The Edit → Preferences → CAM → Job Preferences → Post Processor tab → Post Processor is used to set the default Postprocessor selected on Job creation. This allows CAM workbench to be configured to only display desired Postprocessors, and to set a default.

Post-processing settings can be taken either from the Job's selected postprocessor or from a selected machine configuration. If a machine configuration is used, it can define the postprocessor and related output options.

Included Postprocessors are saved in FreeCAD/Mod/CAM/CAM/Post/scripts by default:

  • centroid
  • comparams
  • dxf
  • dynapath
  • grbl, including support for bCNC header blocks using Job output argument --bcnc
  • jtech (laser)
  • linuxcnc
  • mach3_mach4
  • nccad
  • opensbp
  • phillips
  • refactored* (These postprocessors are works-in-progress and will be changing a lot)
  • rml
  • smoothie
  • uccnc

Limitations

  • Do not use the File → Export menu option for export to G-code, it will produce damaged G-code!


Job
Sanity
CAM

This page is retrieved from https://wiki.freecad.org/CAM_Post

Get in touch!
Forum GitHub Mastodon Matrix IRC Gitter.im Discord Reddit Twitter Facebook LinkedIn

© The FreeCAD Team. Homepage image credits (top to bottom): ppemawm, r-frank, epileftric, regis, rider_mortagnais, bejant.

This project is supported by: , KiCad Services Corp. and other sponsors

GitHubImprove this page on GitHub