`Cut Side` value was hard-coded to reset when Base Geometry was empty. This disallowed retention of the current value with changes to selected Base Geometry involving the clearing thereof.
Also restored fixed visibility to `Cut Side` option in Task panel editor per forum mention.
This `ns` fix might need further attention after testing. The section to which it pertains deals with optimizing rotations between ops with similar rotational axes.
Existing code to determine if shape volume indeed existed, failed.
Added additional pre-check for existing edges in shape to determine if shape geometry indeed exists.
In forum:
[Ticket #4411 - Can only generate pocket once for this shape, then it fails.](https://forum.freecadweb.org/viewtopic.php?style=3&f=15&t=49035).
In this path dressup a bogus machine position is used to get an initial edge, this results in a path element which does reflect the input path data and can lead to a tool crash. This PR checks whether X and Y actually come from the input path data and prevent new path elements being added until true machine position has been set.
Forum thread: https://forum.freecadweb.org/viewtopic.php?f=15&t=42820
Generalize the `extractFaceOffset` method to `getOffsetArea`, which can
handle both face offsetting and projection. Another difference is that
the new method exposes Area's ability to preserve internal holes,
defaulting to preserving. The method is moved to the PathUtils module,
reflecting its generality and fairly wide used across Path.
This method is then used to provide a drop-in alternative to
`FindUnifiedRegions` via a small wrapper in PathSurfaceSupport. The Area
implementation is generally quick, but can fail (throw) in some cases,
so the wrapper is trying the Area method as an optimization first, and
falls back to the full `FindUnifiedRegions` logic if that fails.
- Arc and circular slots available using single edge selection.
- `ExtendRadius` property to allow for tool compensation.
- Extend path start and end is available. Value is measured along the arc, not linear.
- Includes collision check for arc and circular slots.
- Add `CutPattern` feature, defaulting to `ZigZag`.
- Change inter-pass retractions to SafeHeight for multi-pass operations.
- Fix division by zero instance for particular Perpendicular use case.
- Synchronize property values with inputs in both the Property View and Tasks Editor windows.
- Change `LayerMode` default value to `Multi-pass`.
- Improve debug messaging.
- Consolidate code and remove unused code.
Path: fix exception thrown
New slotting operation:
- Accepts selection of up to two features.
- Selectable features include: faces, edges, and vertices.
- User may select a single face or edge, or a pair of features.
- The path may be extended at the start and end.
- The path may be reversed.
- The path may be altered to the perpendicular in some cases.
- A unique Slot icon is included.
- Includes simple collision detection with warning message.