=============================================
Angle constraints are internally coded using the diverging points of the segments (PointPos != none) in normal 2 segment angle constraints.
This creates a problem with the mechanism to transfer enpoints on angle deletion.
fixes#3589
Apart for the inclusion of the Analysis functionality, SketchObject has been improved to provide:
- A fast painless deleteAllConstraints() function
- A fast painless constraint group deletion, delConstraints(std::vector<int> ConstrIds, bool updategeometry)
=================================================
With the support for external geometry during carbon copy, it was introduced a way for creating inter-part/inter-body links. See:
https://forum.freecadweb.org/viewtopic.php?f=10&t=27700&p=223736#p223736
This commit closes this door, while still allows carbon copy with external geometry support within the same body.
=======================================================
set/get/toggle python interface to enable to set the virtual space status of a constraint via SketchObject.
================================================================================
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
=============================================================
Just amazed it was working "so well" without never reseting to zero this.
It might bring advantages and close bugs... who knows!
========================================================================================================================================
Motivation:
- Improve notifications of redundancy in the solver (Bonus effect, now the sketcher refuses to add a redundant datum constraint)
- Initialize all solver information, so that it is accurate also in corner cases.
- Provide different return codes for the different solver status/conflicting/redundant/overconstraint (also looking forward for a future refactoring)
Impact:
- Python users that are currently using the return code of solve() for detecting overconstraint/conflicting/solver error, if any, might have to adapt their scripts.
Those who are just checking for zero/non-zero will have to do nothing.