==========================================================================
Intercurve fillet uses endpoint constraints for improved accuracy, but before this
commit was only considering a coincident constraint. Now it also considers an endpoint
tangency or perpendicular.
delConstraintOnPoint with coincidentonly=false, was not checking endpoint perpendiculars and
would therefore fail to delete them.
https://forum.freecadweb.org/viewtopic.php?f=3&t=31594&start=30#p265731
=========================================
This commit introduces two functions to operate on all datum constraints exclusively:
- Make all datum constraints driving or not driving, depending on the argument.
- Move all datum constraints at the end of the constraint list.
The practical use an ongoing effort towards improving the block constraint behaviour, that will be defered to 0.19
========================================================================
Centralise the knowledge on whether a constraint is dimensional or not within the constraint
Found via `codespell -q 3 --skip="*.po,*.ts,./.git,./src/3rdParty,./src/CXX,./src/zipios++,./src/Mod/Assembly/App/opendcm,./ChangeLog.txt" -I ../fc-word-whitelist.txt` and `grep`. Excess whitespace auto-removed by Atom editor.
==============================
OCCT Geom2dAPI_InterCurveCurve based intersector does not detect intersection with the endpoint of a tangent line:
https://tracker.dev.opencascade.org/view.php?id=30217
This is a work-around that introduces endpoints of secondary curves as intersections, and uses projection to reject
projections further away than precision::confusion().
fixes#2463
=========================================================
This ensures that the exception back in the c++ that invoked python retains the type of exception and can be properly catched.
====================================================
Part of the geometry was using CADKernelError and part was using RunTimeError exceptions, so unify criteria.
Runtime is very generic and does not need to stem from OCCT.
- Also rename of a typo basic to basis, to be coherent with OCCT terminology
==============================================
Generally, bounded curves require that the curves are coincident at one point, the vertex to be filleted.
Trimmed curves, like combinations of line segments, arcs of conics, do not require it, as they are able to extend the trimmed
curve using the basis curve. However, they work fine when there is such a coincidence.
====================================================
The new hierarchy is as this:
GeomArcOfConic:GeomTrimmedCurve:GeomBoundedCurve:GeomCurve
A bounded curve is one having a start and endpoint, like an arc, a line segment, or a b-spline
A trimmed curve is one arising from trimming a basis curve, line an arc or a line segment, but NOT a b-spline.
An arc of Conic is one arising from a conic section, line an arc, but neither a line segment, nor a b-spline.
This new hierarchy enables a more consistent handling of geometry and it is closer to the OCCT hierarchy.
===============================================
Extrema algorithms sometimes fails when coincident endpoints
I am not sure if it is a bug in OCCT or it is just not intended.
This commits adds an extra check to add endpoints if within tolerance.
https://forum.freecadweb.org/viewtopic.php?f=10&t=31700