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.
- Only apply aggressive optimizations to short horizontal moves within
cutter diameter. The safe model STL does not accurately reflect stock
state, so using it for determining long distance move safe heights is
not safe. There would be a high chance of hitting the stock at rapid
speeds.
Thankfully, the vast majority of step-overs tend to be short, so are
still optimized.
- For short moves, only allow completely lift-free transitions when
there is (almost) no Z change, and the min safe travel height does not
rise above the same level.
Otherwise, lift to the max of end points and min safe travel height
first, then move horizontally. A future optimization would be to
directly use the drop scan for transition path generation.
Improve `HandleMultipleFeatures` processing when set to `Collectively` by implementing new class to refine the processing area, attempting to remove common edges between connected face regions.
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.
- Do not show editor when gcode size exceeds 100kb. The poor editor
widget cannot handle that much output, and will hang FreeCAD.
- Avoid quadratic behavior in output accumulator. While Python greater
than 2.7 avoids quadratic behavior in string accumulators, this optimization
is defeated when the string is forced to be materialized to contiguous
memory, as was done by the `.trim()`. As a result, we got quadratic complexity,
ensuring that large jobs would never successfully be post-processed.
Source modules are replaced with pass-through code to send pre-existing profile-based operations to new unified `Profile` operation.
Path: Set line endings to Unix style