===============================================
New convenience for the user. If the first pole is radius length constraint, then any newly exposed internal geometry is created with equality constraint to the first pole.
This is really convenient in the case the user is working with polynomic bsplines, as any operation involving losing/gaining a pole (for example increase in multiplicity of a knot).
=================================================================
Very important remark:
Until now, points could not be construction = true.
For now on, if a point is construction = true, the solver will ignore it.
Modifying a check in SketchObject::validateExternalLinks() for datums.
Hopefully will not cause trouble.
There is still a problem where if the check fails, all constraints will
be lost!
===============================================
This commit changes the behaviour of expose internal geometry for bsplines and makes it converge with the implementation for other complex forms.
This functionality now does not introduce constraints (the DoF is not affected by its execution).
BSplines, when created, are still created as polynomic. However, exposing previously deleted or otherwise hidden (increase of degree) poles does not
constraint them.
why?
While a priori the old behaviour is advantageous for the user in many situations, it severely breaks NURBS-ized shapes and gets in the way of bsplines after
increasing the degree of the bspline.
===============================================================
The implementation of BSpline differs from previous complex forms.
The BSpline is created constraint to be polynomic (non-rational), with radius of first circle and equality constraints.
Hide unused internal geometry considers as unused the following constraints:
- A pole which has equality constraints with another pole of the same bspline
- Any radius constraint on a pole
Deletion of a BSpline will delete the internal geometry that is unused as per the definition above.
If there is another constraint (other than the Internal alignment constraint) it will leave the internal geometry having such constraint undeleted.
===================================
An additional index for internal geometry elements is introduced, to be stored only Internal Aligment constraint and backwards compatible.