Remove all first-draft rotational-related code from Path workbench to make way for more stable, long-term integration of a rotational indexing capability.
Fix MillFace div by zero error reported in forum at https://forum.freecadweb.org/viewtopic.php?f=15&t=51415.
Rotational-related variables were exposed to non-rotational code block. They have been moved into correct rotational code block.
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).
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.
Avoid spurious diffs from inadvertent newline changes by letting git
normalize newlines in the path module as well, just as a list of other
modules including Draft already do.
This effectively standardizes all checked-in code to Unix newlines, but
checkouts might use CRLF if that is the user preference.
lazy_loader is copied to Ext now, modified external imports to lazy_load
add a few more imports to be lazy loaded, think the install path is correct now
[TD]"<" symbol embedded in html
revert changes to path modules for testing
use lazyloader in PathAreaOp.py
add back in deferred loading
temp change to print error message in tests
temp change to print error message in tests
add _init__.py to lazy_loader
make install in CMakeLists.txt one line
PathAreaOp: Add SetupProperties() function
PathPocketBase: Modify SetupProperties() function to include return from same in PathAreaOp.
PathPocketShape: remove blank indents
PathProfileBase: Modify SetupProperties() function to include return from same in PathAreaOp.
PathProfileFaces: fix `EnableRotation` issue
Fix rotational orientation of pockets. Need to apply same fix to ProfileFaces.
Fix final depth issue based upon error in rotational orientation fixed here.
Add property, `LimitDepthToFace` to facilitate easier pockets and face profiling on rotational-enabled operations.
Hide rotational support properties when operations do not use rotation.
Remove unnecessary property, `B_AxisErrorOverride`, and delete dead code that used it.
Open edges, exterior or interior, can now be used to generate paths.
The new feature behaves as though the parent face is vertically oriented (standing). It is preferred that the user select upper (top) edges. Selecting bottom edges in some cases may not produce a path.
Path ends calculations might need slight adjustment in the code. Path ends are *near* perpendicular to ends of edge.
Cut direction seems sporadic, but the `Direction` property will switch the direction of cut. The `CW` and `CCW` direction labels might not align with the actual direction. Additional algorithm modification is necessary to enforce fidelity to the labels.
Existing properties, `UseComp` and `OffsetExtra` are observed with open faces. Negative values for `OffsetExtra` have not been tested - only zero and positive.
Manual entries of FinalDepth values are now respected, even if below the calculated bottom of selected geometry.
Affected modules include PathPocketShape, PathPocket, PathCircularHoleBase, and PathAreaOp-based operations.
Fix format syntax issues
apply algorithms to some pockets to eliminate air milling and adapt start and finish heights and paths to top and bottom of certain pockets.
Depth correction & flake8 formatting
use list to track successive cuts so variations of settings are tracked and applied correctly
Apply faceType specific depth calculations
Planar face requires one depth source, non-planar requires a different source.
orientation == 'Z' was failing in some cases due to undefined "axis" variable. "axis" declaration was commented out in an earlier commit. Declaration now restored for all orientations.
Thanks @mlampert and @sliptonic for assisting in tracking down the error via unit test analysis.
FreeCADGui usage has to be behind an 'if FreeCAD.GuiUp:` test
Clean up code, improve comments, improve user feedback.
Improve temp clone management.
Correct depth issue with self.finDep
Add comment descriptions for new methods
Clean up comments and contribution information
Initiate recognition of type()==SurfaceOfExtrusion
Adopt standard PathGeom.isRoughly() and .Tolerance rather than idependent precision settings