Path 3DSurface

From FreeCAD Documentation
Jump to navigation Jump to search
Other languages:
English • ‎français • ‎italiano • ‎română
This is an unfinished experimental feature. Enable Experimental Features

This documentation is not finished. Please help and contribute documentation.

Gui Command explains how tools should be documented. See Draft ShapeString for an example of a well documented tool. Browse Category:UnfinishedDocu to see incomplete pages like this one. See Category:Command Reference for all commands.

See WikiPages to learn about editing the wiki pages, and go to Help FreeCAD to learn about other ways in which you can contribute.

Arrow-left.svg Previous: Path SimpleCopy.svg Simple Copy

Path 3DSurface.svg Path 3DSurface

Menu location
Path → 3D Surface
Default shortcut
Introduced in version
See also


This tool creates a new 3D Surface Operation. The 3D Surface operation uses the entire top surface of the 3D Model to generate G-Code for the Job. Currently, within the operation's settings there is no functionality to select specific areas, faces, or regions of the Job base. The operation is applied to the entire surface of the Job base.

The 3D Surface Tool interfaces to OCL.pyd, a 3rd party Open Source module titled OpenCamLib, that generates tool paths from a 3D Model. OpenCamLib is not integrated directly into FreeCAD to ensure their license is not violated.

Note: In order to use the 3D Surface operation you must:

  1. Properly install OpenCamLib.
  2. Enable Experimental Features for the Path Workbench.


Usage instructions for multiple variations of the 3D Surface operation are presented here.

Basic Operation

  1. Press the Path 3DSurface.svg 3D Surface icon, or select the 3D Surface tool from the Path menu.
  2. Select the tool controller for the Operation from the Tool controller dialogue pop up window.
  3. Adjust the operation depths as needed in the Depths tab: Start Depth, Finish Depth, Step Down.
  4. Make adjustments in Heights tab if needed.
  5. Configure settings in the Operations tab:
    1. Select an operation algorithm: OCL Dropcutter or OCL Waterline.
    2. Choose the BoundBox: Stock or BaseBoundBox
    3. Add additional BoundBox Extra Offset to X and Y as desired
    4. Set the Drop Cutter Direction: X or Y. This is the linear direction the cutter(spindle) will travel.
    5. Add a Depth Offset value if you wish to leave a specified thickness of material on the surface.
    6. Set the Sample Interval used for the OCL scan.
    7. Set the Step Over value as a percentage of the diameter of the Tool.
    8. Optimize Output is enabled by default. It is only a linear path optimization. Disabling will yield a longer gcode result and likely increase cut time.
  6. If you wish to preview the result before accepting the settings, click Apply
  7. Click OK button to confirm and generate paths.

To achieve different, or more complex, effects, adjust additional operation properties within the Data tab of the Properties View for the operation.

Multi-pass Scan

This variation is based on the DataStep Down property. It produces the layering effect - removing material in layers.

  1. Create a Basic Operation as described above. Multi-pass is available for both Algorithms.
  2. Select the new operation in the object tree in the Combo View.
  3. Locate the Algorithm section, In the Data tab in the Properties View of the operation.
  4. Toggle the DataLayer Mode property to Multi-pass to achieve the layering(step-down, multi-pass) effect.

Rotational Scans (4th-axis)

  1. Create a Basic Operation as described above using the OCL Dropcutter algorithm.
  2. Locate the Data tab and Properties View for the new 3D Surface operation.
    It is recommended that you set the desired rotation properties all at once before recomputing. This is done by clicking the ENTER key immediately after changing a property setting. This process will allow you to change and save multiple properties before recomputing the operation.
  3. In the Rotation section set DataEnable Rotation to the correct setting.
  4. Adjust the following settings as needed:
    • In the Algorithm section, change DataDrop Cutter Dir to the axis of travel for the cutter(spindle).
    • In the Algorithm section, set DataLayer Mode to single or mulit-pass.
    • In the Rotation section, set DataRotation Axis to the desired axis.
    • In the Rotation section, adjust DataStart Index to start index(angle) [0-360].
    • In the Rotation section, adjust DataStop Index to stop index(angle) [0-360].
    • In the Rotation section, set DataCutter Tilt to the offset index(angle) [0-90]. (Used for ball mill cutters)
  5. With rotation-related properties set as needed, in the Algorithm section change the DataScanMode from Planar to Rotational.
  6. Click the View-refresh.svg Recompute icon in the tool bar.
  7. Wait for the results...
Notes About Rotational Scans
  • Rotational scans require much more time and processing than Planar scans. Factors affecting processing time include: Sample Interval, Step Over, tool diameter, and model size. Again, rotational scans can take a long time. Some might take 3, 5 or 10 minutes or longer.
  • For time purposes, it is better that you not recompute a rotational scan after every property change; rather, consider one of the following:
    • use the ' change all settings with ENTER key ' technique mentioned in Step 2 above, then View-refresh.svg Recompute the operation.
    • deactivate the operation with the Path OpActive.svg Active toggle tool, make your changes to the operation's properties, then click the Path OpActive.svg Active icon again to re-activate the operation - which triggers a recompute internally.
  • The Path 3DSurface.svg 3D Surface operation is still considered an experimental feature as of 2019-06-25. As such, it may contain a few bugs yet to be clearly identified. Please report bugs and issues in the FreeCAD Path/CAM Forum.
  • The OCL Waterline algorithm does not support rotational scans.
  • The built in Path Simulator.svg CAM Simulator does NOT support 4th-axis simulation. You will need to use a third party simulator to inspect or verify paths visually. See the Resources section below for suggestions.
  • You will likely see red rotational lines around your model in the viewport. This is normal in FreeCAD for the time being.

Available Tool (Cutter) Shapes

This 3D Surface op currently uses OpenCamLib [OCL] to extract paths from the part base. As such, a tool setting translation is required between the FreeCAD tool controller and OCL in order to complete the scan with your chosen tool(cutter) shape.

These tool shapes are respected and available for this 3D Surface operation:

  • End mill
  • Ball end mill
  • Bull nose end mill
  • Chamfer bit
  • Engraver

Should you choose to run the path simulator in the Path Workbench, it only uses the standard end mill to simulate paths. Therefore, you will not see tool-shape-specific material removal. Material removal is shown using the end mill shape.

NOTE: As of May 2019, only the End Mill has any type of testing to determine accuracy of the FreeCAD-to-OCL tool settings translation. Please post any feedback for non-end-mill usage to the Path/CAM section in the FreeCAD forums.


Note : Not all of these Properties are available in the Task Window Editor. Some are only accessible in the Data tab of the Properties View panel for this Operation.


  • DataAlgorithm: The library to use to generate the path
  • DataBoundBox: Should the operation be limited by the stock object or by the bounding box of the base object
  • DataDrop Cutter Dir: The direction along which dropcutter lines are created
  • DataDrop Cutter Extra Offset: Additional offset to the selected bounding box - use sub-properties to set values
    • DataX: x distance value
    • DataY: y distance value
    • DataZ: z distance value
  • DataLayer Mode: The completion mode for the operation: single or multi-pass
  • DataScan Type: Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan.


Note: It is suggested that you do not edit the Placement property of path operations. Rather, move or rotate the Path Job model as needed.

  • DataPlacement: Overall placement[position and rotation] of the object - with respect to the origin (or origin of parent object container)
    • DataAngle: Angle in degrees applied to rotation of the object around Axis property value
    • DataAxis: Axis(one or multiple) around which to rotate the object, set in sub-properties: x, y, z
      • DataX: x axis value
      • DataY: y axis value
      • DataZ: z axis value
    • DataPosition: Position of the object, set in sub-properties: x, y, z - with respect to the origin (or origin of parent object container)
      • DataX: x distance value
      • DataY: y distance value
      • DataZ: z distance value
  • DataLabel: User-provided name of the object (UTF-8)


  • DataClearance Height: The height needed to clear clamps and obstructions
  • DataFinal Depth: Final Depth of Tool- lowest value in Z
  • DataSafe Height: The above which Rapid motions are allowed.
  • DataStart Depth: Starting Depth of Tool- first cut depth in Z
  • DataStep Down: Incremental Step Down of Tool


  • DataActive: make False, to prevent operation from generating code
  • DataComment: An optional comment for this Operation
  • DataCut Mode: The direction that the toolpath should go around the part: Climb(ClockWise) or Conventional(CounterClockWise)
  • DataTool Controller: Defines the Tool controller used in the Operation
  • DataCut Pattern: Clearing pattern to use
  • DataCutter Boundary: Identify cutter boundary for operation.
  • DataUser Label: User assigned label


  • DataAlt Depth Calc:
  • DataAttempt Inverse Angle: Automatically attempt Inverse Angle if initial rotation is incorrect.
  • DataCutter Tilt: Set the cutter (spindle) tilt angle.
  • DataEnable Rotation: Enable rotation to gain access to pockets or areas not normal to Z axis.
  • DataFixed Index: Set fixed index for rotation.
  • DataIndexing Mode: Select indexing mode: auto = automatic angle detaction; fixed = user set angle.
  • DataInverse Angle: Inverse the angle of the rotation. Example: change a rotation from -22.5 to 22.5 degrees.
  • DataReverse Direction: Reverse orientation of Operation by 180 degrees.
  • DataRotation Axis: Set the axis for model rotation.
  • DataStart Index: Start index(angle) for rotation
  • DataStop Index: Stop index(angle) for rotation


  • DataDepth Offset: Z-axis offset from the surface of the object
  • DataOptimize: Enable optimization which removes unnecessary points from G-Code output
  • DataSample Interval: The Sample Interval. Small values cause long wait times
  • DataStep Over: Step over percentage of the drop cutter path


  • DataIgnore Waste: Ignore areas that proceed below specified depth.
  • DataIgnore Waste Depth: Depth used to identify waste areas to ignore.
  • DataRelease From Waste: Cut through waste to depth at model edge, releasing the model.

Tasks Window Editor Layout

Descriptions for the settings are provided in the Properties list above. This section is simply a layout map of the settings in the window editor for the Operation.

Base Location

  • Add: adds selected element(s) which should be the base(s) for the path(s)
  • Remove: remove the selected item(s) in the Base Location list
  • Edit: clear all items in the Base Location list


  • DataStart Depth
  • DataFinal Depth
  • DataStep Down


  • DataSafe Height
  • DataClearance Height

Rotation (when available)

  • DataEnable Rotation
  • DataRotation Axis
  • DataIndexing Mode
  • DataFixed Index
  • DataStart Index
  • DataStop Index
  • DataCutter Tilt
  • DataReverse Direction
  • DataAlternative Depth Calculation


  • DataAlgorithm
  • DataTool Controller
  • DataBoundBox
  • DataBoundBox extra offset X
  • DataBoundBox extra offset Y
  • DataDrop Cutter Direction
  • DataDepth Offset
  • DataSample Interval
  • DataStep Over
  • DataOptimize Output Enabled


Arrow-left.svg Previous: Path SimpleCopy.svg Simple Copy