* PartDesign: Improve orientation behavior for conical helices
As identified in the forum
https://forum.freecadweb.org/viewtopic.php?f=3&t=65136
The Freenet orientation mode does not give expected results for helices with cone angle.
By using an auxiliary helix that is axially offset it is guaranteed that the orientation frame
is always consistent with a cylindrical coordinate system.
Results will be the same as before when cone angle is 0.
===============================================================================
Problem:
- While SketchObject inhibits intermediate updates during internal command execution, sometimes
a change in the selection (clear selection) in an intermediary step triggers an spurious update colour.
- There will be a final draw and this update colours at the end of the internal command.
- If the types of the constraints changed during the intermediary steps, it may happen that the constraint
coin nodes at a given position no longer correspond to the constraint type in the SketchObject property. This
may cause a attempt to access to a non-existing node or static casting a existing node to the wrong type.
Solution:
- Check the type of the constraint against the cached type. If not matching, cancel the color update.
* if determining the normal raises an exception then fall back to a default value
* when handling a Base::Exception then call its ReportException() function to get as much information as possible
- bring back intended behavior as in FC 0.19:
- if 2 lengths, then midplane is invisible
- if reversed checked, then no symmetric and if symmetric then no reverse
- unify the code for Pad and Pocket (reversed is always visible)
- fix a typo in a bool name
all done by MSVC
I do this since on one hand the readability is in this case really improved and because whenever I made a change, MSVC tries to fix the style and then the diffs are unnecessarily large. Also the MSVC style is almost what we use as the "standard" coding style.
Path Simulator produces out of trace artifacts while milling curves with small radius.
In VolSim.cpp the branch for curve radius smaller then tool radius is not implemented yet.
In this condition the simulator produces artifacts of higher radius while milling path using G2 or G3.
There is an implementation of G2 and G3 in python level.