Intent vs Strategy - sliptonic/FreeCAD GitHub Wiki

Intent, Strategies, and Operations

This page is an attempt to disambiguate ideas that are implied by the 'operation' concept in CAM systems like FreeCAD/Path.

Intent

Intention is not a formal concept in the Path workbench but it is useful to discuss it because it includes both what the user wants to do and also how he wants to do it.

An intent encapsulates the machinists goal to perform a discrete unit of work which makes the stock more closely approximate the model. Very often the machinist has a specific tool in mind.

An intent is often related to a feature of the model but there is not always a 1:1 relationship. For example the machinist might center drill, drill, and ream a hole. Likewise, he might set up an operation to drill multiple holes at one time.

Examples:

  • Use an endmill to clear a pocket area
  • Use an endmill to profile around a feature
  • Use an endmill to cut a shape from the surrounding stock
  • us an endmill to make a circular hole
  • Use a drill to make several circular holes
  • Use a reamer to enlarge a hole

It is the operators job to express their intent by configuring one or more operations

Operation

An operation is a discrete unit of work within a job. It identifies the geometry to be acted on, the tool to use, and the strategy to employ with that tool to accomplish the intent.

If the user has selected several features to be acted on by the operation eg multiple holes to be drilled, then the operation is the aggregation point for those actions.

Strategy / Path Generator

The strategy is the method employing a specific tool to achieve an intent on a single feature. It is reasonable to assume the user may switch strategies while keeping everything else about an operation unchanged.

It takes as input:

  1. Tool
  2. Input Geometry
  3. configuration settings

It returns one or more Path Blocks. A Block is a set of Path Commands which must be processed as a unit and cannot be further decomposed. A blocks returned from a generator must be processed in the order that they were returned but may be interleaved with blocks from other runs from the generator (or even other operations).

A user should be free to change strategy to produce a different(valid) toolpath but the change should not invalidate any of those inputs. e.g. User may switch from drilling a hole to a helical bore strategy

A strategy or path generator has no user interface independent of the operation. It is has a well-defined interface and its 'execute' method is easily scripted/tested.

Geometry

Operations work on the model or parts of the model. The user must express which parts ofthe model are to be acted on. It's useful to distinguish several different kinds of geometry. Not all of these are implmented in Path.

User Selection

What the user selects from the model to communicate intent

InputGeometry

The shape which is the input to the path generator. The BaseGeometry may be either material to remove or material to avoid depending on the operation context. For example, the BaseGeometry of a pocket will be the material the user wants to remove but the BaseGeometry of a Profile might be the entire model. The input geometry is a single element (solid, face, edge, etc) Operations may contain a list of input geometries but Path Generators will only accept a single input geometry.

The BaseGeometry inherently includes:

RemovedShape

The shape of the material successfully removed by an operation. Calculating the actual RemovedShape is difficult but an important goal. Removedshape as a concept only makes sense for volume removal operations.

RemainderShape

The shape of the material left over after an operation has completed. It is material the user wished to remove but which the operation was not able to remove. The RemainderShape and the RemovedShape together should equal the inputShape for volume removal operations

This section describes user intent as commonly described by 'operations' It's broken into machining types for clarity.

Lampert Types:

  • VC -- Volume Clearing
  • LF -- Line Following
  • S -- Spot

Job Types 2D. XY movement and spindle on/off (eg laser, waterjet, plasma) 3D XYZ movment. Includes both traditional 2.5D cuts and 3D surfacing 45I 4th and 5th axis indexed cutting. 3D + indexed AB rotations. Lathe

Op Class Strategy job type Input Geometry solid face Wire
Volume Removal 3D/4A solid
Adaptive
Pattern Pocket
Vcarve
Waterline
Dropcutter
PlungeMill
Area Clearing 2D/3D/4A face
Adaptive
Pattern Pocket
PlungeMill
Face Decoration 2D/3D/45I face
Pattern fill
Jewel
Engrave
Data Engrave
Edge Profile 2D/3D/45I Wire
Profile
Aligned knife
Deburr
Solid Profile 2D/3D/45I solid
Profile
Aligned knife
Deburr
Pencil 3D/45I Wire
Pencil
CircularHole 3D/45I Edge
Drill
Bore
Helix
counterbore
annular
thread
Ream
Slot slot 2D/3D/45I Wire
Chamfer Chamfer 3D/45I Wire
Stop any None
Custom any None
Comment any None
Probe Probe 3D/45I Face
Lathe Center Lathe Edge
Center Drill
Drill
Ream
Tap
Lathe Bore Lathe Edge
Internal Thread
Bore
Lathe contour Lathe Solid
Rough
Finish
External thread
Lathe Face Lathe Face
Trepan
Face
Deburr
Lathe Parting Lathe solid
Part
⚠️ **GitHub.com Fallback** ⚠️