It was deemed that scipy is too heavy a requirement for FreeCAD just for
this little feature. Fortunately it was possible to extract the k-d tree
module from scipy with just minor modifications - it is quite
self-contained.
Now, only numpy is required.
====================================================
Creation of solver geometry definitions from Part::BSpline geometries and update of solved geometry back.
=============================================
multiplicities, degree and periodic are left as non-parameters of the solver, while still allowing certain manipulations to be effected from the solver
in certain situations (for example modifying the multiplicity of start/end nodes when applying G1,G2,G3 constraints between BSplines).
==============================================================
1) Basic set/get interface for poles, weights, knots and multiplicities
2) Introduction of GeomBoundedCurve class replicating OCC hierarchy. Why? To provide seamless start/end point interface for any bounded curve, i.e. Bezier, BSpline,
Note: The ArcOfConic start/end point interface relies on GeomTrimmedCurve, and introduces CCW/CW correcting code which relies on Axis. Axis are introduced in GeomConic and are
not part of GeomBounded.
Note 2: In the future, it may be thought to make GeomArcOfConic (the equivalent of GeomTrimmedCurve) deriving from GeomBoundedCurve, as to fully replicate OCC hierarchy. GeomBoundedCurve
defines the functions as virtual to allow seamless integration.
The previous code assumed the user's unit system was MKS. The updated code uses
schemaTranslate() to convert from screen units to the user's chosen system.
Renamed the original DraftGeomUtils.findWires() to findWiresOld2(). The
original findWires() has a bug which may cause missing edge(s).
Besides, using C++ implementation of Part.sortEdges will have better
performance.
Unlike Part.__sortEdges__ which only return a list of connected edges,
and discard the rest. Part.sortEdges return a list of list of
connected edges, which includes all input edges.