This fixes error when attempting to profile loop of vertical faces, thus maintaining original Profile Faces behavior by default for vertical looped face set.
Error discovered during recent troubleshooting of Pocket_Shape with rotation.
Initial application of new operation yields path, but subsequent changes and applications failed due to `if ...` statement removed here for the fix.
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.
Two new properties, `ExpandProfile` (length) and `ExpandProfileStepOver` (percent) added for new feature.
New feature converts the normal single offset profile into a compound profile containing multiple increasing/decreasing offsets.
The new feature clears a each layer completely before stepping down to the next layer.
Adjust sorting procedure in PathAreaOp due to `ExpandProfile` modifications to open edges code.
The 0.25 constant used might need to be modified later. Or, the entire `_makeIntersectionTags()` method might need to be improved if other micro-edge use cases cause failure.
Open-edges will now work in simple cases where user selects bottom edge, without requiring adjustment to Final Depth. This will speed up procedural usage of the operation for open edges by re-enabling the `select-edge_create_OK` work flow.
The guessing procedure for Final Depth based on Base Geometry selected is fixed in `UpdateDepths()` method.
Improvements to user messages.
Remove unnecessary code and comments.
Improve debugging feedback.
Sheet tag placement not including the sheet offset
contour not using sheet attributes
Engraving not using sheet attributes
Profile not using transform.
old spinboxes were not aware of units so I substituted in the custom FreeCAD Gui:InputField on countour, profile, profile edges, and pocket operations.