=======================================================================
In uncommon situations, the analysis of QR decomposition leads to full rank, but the result does not converge.
We avoid marking a sketch as fully constrained when no convergence is achieved.
* [TD] remove unused headers
- also some sorting
- also improve readability by not using an abbreviation (we consistently don't abbreviate class names)
- in DimensionValidators.h the declarations must not be with TechDrawExport
- add missing precompiled headers
- also fix too long lines (fixed by clang)
- also some re-sorting
- also remove unused headers
- correct interpretation of True vs Projected
- handle long subelement names in references
- fix "too small" value condition
- better error messages for bad dimension geometry
- separate validation, geometry and reference handling into
individual files
- improve 3d reference geometry handling
- eliminate duplicate dim creation code
- add Dimension reference repair dialog
- Refactor formatting out of DrawViewDimension
- move dimension repaint control to ViewProvider
======================================================================
1. Instead of excluding internal alignment constraints from popularity candidate selection, exclude them from the group altogether. This
ensures no group is non-empty with uneligible candidates, which prevents an infinite loop in uncommon circumnstances (when DoFs collapse).
2. Ensure no internal alignment constraint is identified when conflict ensues.
* Replacing the static_cast with a dynamic_cast in 668adaacdf is a regression because it cannot be guaranteed that the linked object is a sketch.
In fact it can also be a shape binder which is explicitly allowed.
Forum: https://forum.freecadweb.org/viewtopic.php?f=19&t=74939
* Move initialization of some variables into the if-statement
* QString::indexOf() is now marked as [[nodiscard]]
* QApplication::fontMetrics() is deprecated, use the constructor of QFontMetricsF
* fix -Wunused-result
* fix -Wunused-but-set-variable
Incorporating feedback; now using f-strings all over.
Incorporating changes from feedback.
Incorporated more refactoring feedback.
Changes for Path refactoring.