=======================================================
fixes#2275https://freecadweb.org/tracker/view.php?id=2275
Deletion of coincidents rely on selected vertex. The original code was trying to delete a coincident without checking whether one was there.
The implementation now relies on checking whether a coincident is present.
========================================================================================
Users generally expect that validate Sketch checks the visible part, perhaps because it is not called from the sketcher's edit view, but from the 3D view, perhaps
because that part is relevant for further construction.
On the other hand the tool's name is Validate Sketch and construction geometry belongs to the sketch.
So a new checkbox is introduced, by default enabled to ignore construction, but still allowing the user to make it operate in one direction or the other.
See:
https://forum.freecadweb.org/viewtopic.php?f=3&t=26139&p=208582#p208693
======================================
The sketch validation tool offers the functionality to detect missing coincidences. It is a problem that internal geometry causes detected missing coincidences.
Additionally, the tool only shows the visible profile and not the construction geometry.
This commit introduces the ignoring of construction geometry, which "fixes" the two behaviours indicated above.
fixes#3298
================================================================================
When transfering constraints to coincident points on deletion of geometry, a tangency/perpendicular constraint
cannot be blindly transfered as the destination edge may not be tangent/perpendicular leading to unexpected behaviour.
However, the user does expect that something that was coincident with such end-to-endpoint constraint (which implicitly includes a coincident constraint)
remains coincident after deletion. Therefore, the change of type to coincident.
This implicitly solves the problem of representation of constraints leading to a crash in coin3d.
fixes#3291
==============================================
Expressions for remapping of geometry where simply wrong.
Surprisingly no bug reports were filed for this one.
=============================================================
Just amazed it was working "so well" without never reseting to zero this.
It might bring advantages and close bugs... who knows!
===========================================================================
Cleaning up ViewProviderSketch, as relative mode is never used for points.
Adapting the recalculation of the initial solution only to non-relative cases.
For relative movement cases (movePoint with relative=true) no cases where such a solution will be advantageous have been identified
and applying a similar solution involves changing the current behaviour too much, as to run the risk of introducing further bugs.
Decision to be revised if such cases where an advantage can be found are discovered.
=====================================================================
fixes#1734
Upon dragging, the initial solution is first calculated and them DogLeg is left with the work of solving for a solution next to the initial solution.
When the change is too big and the gradients are no longer accurate to continue dragging, the dragging flips and jumps.
The solution offered here is, not to update always the solution, as this also creates artifacts, but update it if the dragging goes beyond 20 times the initial dragging distance.
https://forum.freecadweb.org/viewtopic.php?f=3&t=7589#p203580https://forum.freecadweb.org/viewtopic.php?f=3&t=7589#p203712
======================================================
fixes#3091
Autoconstraints did not check whether the arc was CW or CCW, as such the autoconstraint on the second position was sometimes assigned to the start point.
======================================================================
Fixes#3154
About the fix:
- If a non-zero vector is passed to seekAutoConstraint, it will suggest a vertical/horizontal constraint, which does not
make sense in the construction method.
- Passing a zero vector enables to treat it like a point, so for example point on object will be suggested, but not vertical/horizontal constraints.