The behavior of the Draft_SelectGroup command was a bit cryptic. Layers were also regarded as groups. And the selection result was not the same if a nested object, instead of the group that object was in, was selected. The new version selects all objects in the `Group` property of the selected groups (or group-like objects). Nested groups are selected, but their contents is not.
* 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.