Files opened by running `freecad xxxx.FCStd` or similar relative paths could not
be saved because of new code introduced to create parent directories. See
https://github.com/FreeCAD/FreeCAD/pull/4996#issuecomment-922370077 and
https://forum.freecadweb.org/viewtopic.php?f=13&t=62319&p=534156#p534156.
This commit resolves the issue by ensuring the parent path is absolute while
saving. We would probably like to make sure the file name is itself stored with
absolute path, but there's a few problems
1. There may be other occurences where files are loaded with relative paths. So
having a check here is a good idea.
2. Files opened by `freecad xxxx.FCStd` somehow don't have the issue where
renaming parent directory throws an exception on save. Instead the file is saved
in the new location.
- handle custom direction like all other directions
- allow to view the direction vector for all directions, but only to edit for custom
- fix enabling of the length alongNormal option
- also fix a translation issue
===============================================================
Forum test and comments:
https://forum.freecadweb.org/viewtopic.php?p=536445#p536390
What?
Showing/hidding a large amount of constraints is very time consuming
Why?
Because SketchObject Constraints property was being set for each individual constraint
Solution is to use the new setVirtualSpace overload taking a list or a tuple, so that all the
constraints are set in a single operation.
In a Debug system with the test of the forum the time taken by the operation is reduced
from 7 minutes to around 2-3 seconds.
This buffer application was removed in PR #4978 with removal of rotational code.
The buffer is required to provided adequate significant digit or rounding in later processing of envelope in Path.Area().
NOTE: I suggest separate `removalshape` envelopes be created without the necessary `buffer` adjustment to allow for usage of the `removalshape` for subsequent REST type operations.
Main goal is to improve user-friendlyness for several locales
Substitution of dot is performed :
* Always if dot is neither decimal nor group/thousand separator of current locale
* Only on NUMPAD dot if dot is not decimal but is group separator of current locale