Intent vs Strategy - sliptonic/FreeCAD GitHub Wiki
This page is an attempt to disambiguate ideas that are implied by the 'operation' concept in CAM systems like FreeCAD/Path.
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
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.
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:
- Tool
- Input Geometry
- 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.
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.
What the user selects from the model to communicate intent
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:
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.
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 |