CAM FAQ

How many axes can CAM Workbench handle?

CAM Workbench generates 3-axis toolpaths for all operations. Since 26.3, when a Machine with rotary axes is assigned to the Job, operations can be oriented to a non-Z-up Workplane (3+2 indexed machining) and the required A/B/C positioning moves are emitted automatically. Continuous 4-axis toolpaths are available from the experimental Rotary Surface operation, the Rotational scan type of the 3D Surface operation and the Axis Map dressup. See CAM fourth axis.

Does CAM support laser or plasma cutting?

Since 26.3, Machine definitions describe the toolhead type (rotary spindle, laser, plasma, waterjet); the machine-based post-processors (for example generic_plasma) use it to emit power or torch commands instead of spindle commands. Machines are managed in the CAM preferences under Assets.

Does CAM workbench support lathe machining?

Currently, CAM workbench does not support lathe operations directly but the Addon TurningAddon can be installed which makes use of Python library LibLathe. More information can be found in this forum thread.

Why does it seem that in some instances, CAM Workbench provides more than one way to specify an Operation?

CAM Workbench provides existing tools to meet many milling operations and because FreeCAD is open source, there is nothing impeding any user from creating their own functionality.

As with 3D modeling, there are often multiple methods available that might be advantageous to use for different Job operations. In some cases, combinations of Operations are used to provide complete milling of the Stock.

One common example is that a Profile cut could be generated from Edges or Faces. In some cases there will be an advantage to one geometric input over another.

Why does Dressing up an Operation change the position in the Job Workplan shown in the Operations list?

All additions to the Job—​including modifications, and Operation copies—​are appended at the end of the Job Workplan. If that disrupts the correct Job sequence, it can be reordered on the Job editor’s Workplan tab using the up and down buttons, or by drag and drop in the tree.

What is the difference between Clearance Height and Safe Height?

More detailed information is available in Heights and depths.

What is the typical use of the SetupSheet?

The SetupSheet is a dedicated spreadsheet contained within a Job, modified in the Property view, accessible only from CAM Workbench. It provides a mechanism for more expert users to configure aspects of their Job by using Values and Expressions contained within the SetupSheet.

Current inputs for Depths, Heights, and Tool Controllers include:

  1. Final Depth Expression (FinalDepthExpression) — OpFinalDepth

  2. Start Depth Expression (StartDepthExpression) — OpStartDepth

  3. Step Down Expression (StepDownExpression) — Defaults to OpToolDiameter. This expression is used for each Operation to calculate its default Step down value based on the diameter of the Tool Bit defined in the associated Tool Controller.

  4. Clearance Height Expression (ClearanceHeightExpression) — StartDepth+SetupSheet.ClearanceHeightOffset

  5. Clearance Height Offset (ClearanceHeightOffset) — Contains value used in Expressions

  6. Safe Height Expression (SafeHeightExpression) — StartDepth+SetupSheet.SafeHeightOffset

  7. Safe Height Offset (SafeHeightOffset) — Contains value used in Expressions

  8. Horizontal Rapid (HorizRapid) — Provides the default value used to initially populate the Horizontal Rapid Feed rate for all Tool Controllers.

  9. Vertical Rapid (VertRapid) — Provides the default value used to initially populate the Vertical Rapid Feed rate for all Tool Controllers.

  10. Coolant Mode (CoolantMode) — default coolant mode for new operations.

  11. Collision Avoidance Strategy (CollisionAvoidanceStrategy) introduced in 26.3 — default linking strategy for Drilling, Helix and MillFacing.

This provides flexibility. For example, default expressions are provided, but can be overwritten by the user. The modification can even reduce the default equation to a Value if that suits the user.

What is the typical use of the Job Templates?

Job templates allow commonly used Job definitions to be saved from a Job for use on subsequent similarly configured Jobs. They store the Job’s Setup Sheet values, Tool Controllers, Stock definition, post-processor settings, a description and since 26.3 the assigned Machine. They are exported with Export Template and selected in the New Job dialog.

How many Base objects does CAM Workbench support?

A Job can reference any number of Models. Select them in the New Job dialog (Model list) or later with the Edit button next to Model on the Job editor’s General tab. Each model is cloned into the Job’s Model group so it can be positioned independently of the design.

Why does an Operation not produce usable output?

A variety of reasons exist that may cause an individual Operation to generate no output.

One common reason is that the Tool Bit geometry defined in the Tool Controller selected for the Operation is too large to fit within the geometry selected on the 3D model for the Operation.

Be aware that this will typically exhibit as a Rapids movement to where the Operation beginning, completed by a Rapid Z movement to the geometry selected to define the Operation, and then a return to Rapid transit height.

Another common misunderstanding is that a Profile operation appears to output nothing when Cut side is set to Inside and the toolpath runs inside the model; toggling the model’s visibility reveals it.

Since 26.3, when the selected Base Geometry becomes invalid the operation is marked with an error state and the toolpath is cleared; remove the stale entries from the Base Geometry list.

Can CAM Workbench perform 3D surface milling?

Yes. The 3D Surface, Waterline and (experimental) Rotary Surface operations use OpenCAMLib (OCL). OCL must be available to FreeCAD’s Python as the ocl or opencamlib package (bundled with some builds, otherwise installable with pip or conda), and "Enable OCL dependent features" must be checked in Edit  Preferences  CAM  Advanced. A restart is required. OCL is an optional external library and is not compiled into FreeCAD.

What do I do if the default Operation strategies don’t meet my needs?

Profile and Pocket operations have an optional Start Point: check Use start point in the task panel (or set UseStartPoint in the Property view) and pick a point in the 3D view with the Set picked point as start point button (introduced in 26.3). Pocket and Facing Operations provide explicit Climb versus Conventional Cut Mode specification in the Operation tab.

For Profile Operations, the Operation tab has a "Direction" input that may be configured as CW (clockwise), or CCW (counterclockwise), which defines the cut direction. For reference:

  1. Cut Side = Outside, Cut Direction = CCW, Climb Cut

  2. Cut Side = Outside, Cut Direction = CW, Conventional Cut

  3. Cut Side = Inside, Cut Direction = CW, Conventional Cut

  4. Cut Side = Inside, Cut Direction = CCW, Climb Cut

In MillFacing, Pass Extension and Stock Extension extend the passes beyond the face and Axial Stock To Leave keeps material on the floor. Profile has Offset Extra (OffsetExtra), plus Radial stock to leave and multi-pass Number of passes / Pass stepover (introduced in 1.1); Pocket has Extra Offset (ExtraOffset). Positive values leave material, negative values overcut.

These inputs are valuable, allowing functionality including:

  1. Defining Roughing Passes, in conjunction with the Depths input fields.

  2. Specifying overcut for Facing operations

  3. Features smaller than the Tool Bit diameter, that must be faced, can benefit from specifying an Outside Profile cut with a negative Extra Offset value.

Judicious care should be exercised when specifying stock-to-leave values and Offsets, at the risk of undesired cuts into the Stock.

What do I do if an Operation generates more Vertical movements than my Job can tolerate?

Profile and Pocket operations have a Retract Threshold property: moves shorter than this distance are made at the current depth instead of retracting to Safe Height (user-settable since 26.3). Drilling keeps a Keep Tool Down option, and Drilling, Helix, MillFacing, Engrave and Deburr offer a Linking Mode with collision-avoidance strategies (retract height, clearance height, line of sight, tool diameter or tool shape) introduced in 26.3.

How can I leave tabs to clamp my milled work?

CAM Workbench provides a Tag dressup for just this purpose.

What is a Postprocessor?

The Postprocessor converts the internal toolpath into the G-code dialect of a specific controller. Since 26.3, when a Machine (.fcm) is assigned to the Job, the post-processor named in the machine definition is used and its output options come from the machine; otherwise the post-processor is selected on the Job’s Output tab.

Can I modify an existing, or make my own Postprocessor?

Post-processors are Python files ending in _post.py. The ones shipped with FreeCAD are in Mod/CAM/Path/Post/scripts (legacy ones end in _legacy_post.py). Place your own in the macro directory or the CAM "Default path" folder; add-ons can register further directories. New-style posts subclass Path.Post.Processor.PostProcessor; see Postprocessor Customization.

I only want to use one Postprocessor—​can I make it the default, or hide other options?

Yes. In Edit  Preferences  CAM  Job Preferences  Post processor, check only the post-processors to show under "Post processors selection" and pick a "Default post processor" and "Default arguments".

How I can set metric/imperial units for my path object?

The model units come from the document unit schema; since 26.3 the New Job dialog lets you pick a schema and highlights per-minute velocity schemas (mm/min, in/min) as recommended, because per-second schemas can produce wrong feed rates.

Output units (G20/G21) are set by the post-processor: by the Machine’s output units for machine-based posts, or by arguments such as --inches for legacy posts. Feed rates are converted to units per minute by the post-processor.

Mismatches between the document unit schema and post-processor settings are likely culprits for factor of 60 errors in Feed rate, and factors of 25.4 in distance.

How I can simulate my milling strategies?

Two simulators are provided: the CAM Simulator (default, shortcut P N, opened as a separate view in the main window since 26.3) and the Legacy CAM Simulator (P M). Both cut the Stock with the Tool Shapes of the Job’s Tool Controllers. If the CAMotics integration is installed and OCL features are enabled, a CAMotics simulation command is also shown.

If the toolpath lines obscure the simulation result, their visibility should be toggled off before simulation.

What is the significance of the path line colors?

Toolpath colors are defined in Edit  Preferences  CAM  GUI  Default Path Colors. Default colors include:

  1. Dark green for feed moves (Default normal path color).

  2. Dark red for rapid moves (Rapid path color).

  3. Yellow for probe moves (Probe path color).

The GUI page also has "Hide first rapid move" and task panel layout options.

How do I Enable/Disable visibility of path lines?

Toggle the Job or individual Operations in the tree with Space. To exclude an operation from post-processing without deleting it use Toggle Operation Active State (also works on the Job and on operation groups since 26.3).

How do I check that my G-Code sequence is correct?

With a Machine assigned (introduced in 26.3) the Post Processing dialog shows the generated G-code (with line numbers) and a Warnings list before you press Save to Disk; for legacy post-processors the "CAM Export Gcode" editor opens when "Show editor before writing G-code" is enabled in the CAM GUI preferences. Use Inspect Toolpath to view the internal G-code of one operation and Sanity Check for a pre-flight report.

Operation order is changed on the Job editor’s Workplan tab with the up/down buttons, or by drag and drop in the tree.

Why am I not getting correct G-Code output from Operations inserted using the Supplemental Commands->Custom command?

Custom G-code (CAM Custom, menu CAM  Supplemental Commands  Custom) is passed through the post-processor unchanged apart from formatting; write feed rates in the units the post-processor expects. Since 26.3, Custom G-code may contain expressions enclosed in @ characters, e.g. G1 Z@-StartDepth@.

Why do changes to Placement values in the Property View not seem to work correctly in CAM Workbench?

The Path feature also holds a Placement property. Changing the value of that placement will change the position of the Feature in the 3D View, although the toolpath information itself won’t be modified. The transformation is purely visual. This allows you, for example, to create a toolpath around a face that has a particular orientation on your model, that is not the same orientation as your cutting material will have on the CNC machine.

However, Path Compounds can apply the Placement of their children; see CAM scripting. To actually move a model for machining, use the Alignment controls on the Job editor’s Setup tab, which move the Job’s model clone.

Why does CAM Workbench on my computer seem to miss functionality that I see in other users forum posts?

Experimental commands are hidden by default. OCL-dependent operations are enabled with Edit  Preferences  CAM  Advanced  Enable OCL dependent features; other experimental commands (Area, Area Workplane, Rotary Surface, Path Shape with Tool Controller) require the boolean parameter EnableExperimentalFeatures under BaseApp/Preferences/Mod/CAM (there is no checkbox for it). See CAM experimental.

Why do Youtube videos posted by CAM Workbench developers appear out of sync with the CAM Workbench?

CAM Workbench shifted dramatically from FreeCAD v0.16 to v0.17, and any videos posted prior to January 1st, 2018, are very likely to contain information that is no longer in sync with v0.17 of FreeCAD CAM Workbench. The workbench was renamed from Path to CAM in 1.0, the tool library dialogs were replaced in 1.1 (Better Tool Library integration), and 26.3 introduced Machine definitions, machine-based post-processing and a redesigned Job dialog, so videos made for earlier versions will differ.

Why are arcs not round, but are made of a set of straight lines?

This is only a matter of displaying the toolpath. Display and computation tolerance is per Job:

  • For new Jobs, set Edit  Preferences  CAM  Job Preferences  General → Default geometry tolerance and Default curve accuracy to small values but not to 0, e.g. to 0.01 mm.

  • For an existing Job, change its Geometry Tolerance property and recompute.

Where are my tool bits and libraries stored?

Tool Bits (.fctb), Tool Libraries (.fctl), Tool Shapes (.fcstd), Job Templates and Machine definitions (.fcm) live in the CamAssets folder (by default under the user application data directory); the location is set in Edit  Preferences  CAM  Assets  Asset Location. Built-in shapes and bits are used as a fallback when the folder is empty. introduced in 1.1

How do I tap holes?

Use Drilling with Strategy set to Tapping, together with a tap Tool Bit; the post-processor emits G84/G74 (or rigid tapping where supported). The separate Tapping operation of 1.1 was merged into Drilling. introduced in 26.3

How do I get dogbone corners for inside pockets?

Apply the Dogbone dressup to a Profile or Pocket operation; it adds T-bone or dogbone incisions in inside corners. The adaptive incision length can be limited since 26.3.

What is a Machine and do I need one?

introduced in 26.3 A Machine (.fcm) describes a controller: axes and limits, toolhead, output units, post-processor and formatting options. It is created in Edit  Preferences  CAM  Assets  Machines or with the New Machine button on the Job’s General tab, and assigned to the Job. Without a Machine the Job falls back to the legacy post-processor selection on the Output tab.