- MSVC always kind of "stumbled" over this file, therefore it was on my ToDo lost to let run MSVC's syntax unification over this file
- still many MSVC warnings, but now some less
- Bug fix: Fix crasher in discretize() when the edge to discretize is
not a 3d curve, and a nullptr is returned when trying to access the
underlying curve. This change essentially removes an older work-around
for QuasiUniformDeflection, which is no longer needed since we are
using UniformDeflection. This change is tested with the original test
case from https://forum.freecadweb.org/viewtopic.php?f=15&t=42628, as
well as my own crasher test case.
- WireJoiner robustness: Support passing in a tolerance into
WireJoiner::findCloseWires(), and initialize this to
AreaParameter.Tolerance. In testing, this significantly improves the
ability to join projected areas in complex 3d surface path models.
- Area::project() robustness: Pass the work plane down into the
projection area instance, so that it does not need to be derived from
shapes. This avoids crashing out on "shapes are not coplanar" from
getPlane, when lenient processing was requested via the Coplanar
parameter.
Found via `codespell -q 3 -L aci,ake,aline,alle,alledges,alocation,als,ang,anid,ba,beginn,behaviour,bloaded,byteorder,calculater,cancelled,cancelling,cas,cascade,centimetre,childs,colour,colours,commen,currenty,dof,doubleclick,dum,eiter,elemente,feld,freez,hist,iff,indicies,initialisation,initialise,initialised,initialises,initialisiert,ist,kilometre,lod,mantatory,methode,metres,millimetre,modell,nd,noe,normale,normaly,nto,numer,oder,orgin,orginx,orginy,ot,pard,pres,programm,que,recurrance,rougly,seperator,serie,sinc,strack,substraction,te,thist,thru,tread,uint,unter,vertexes,wallthickness,whitespaces -S ./.git,*.po,*.ts,./ChangeLog.txt,./src/3rdParty,./src/Mod/Assembly/App/opendcm,./src/CXX,./src/zipios++,./src/Base/swig*,./src/Mod/Robot/App/kdl_cp,./src/Mod/Import/App/SCL,./src/WindowsInstaller,./src/Doc/FreeCAD.uml`
* Relaxed valid base shape requirement, as long as it can return a
shape using part.getShape()
* Improve ViewProviderPath performance by sharing the same selection
observer
* Relocate libarea binary installation
Self intersected wire may cause a loop, and BRepBuilderAPI_MakeWire may
mistakenly consider the wire to be closed. And this makes
BrepTools_WireExplorer unhappy and cause it to skip edges. We now use
ShapeAnalysis_FreeBounds to connect edges to wires.
'start' used to mean the initial resting position of the tool. Now it
is changed to mean the feed start position.
fromShape() has also improved to automatically guess 'retraction' and
'resume_height' parameters if not given, based on input shape boundary.
* Fixed non-circular curve orientation handling
* Section changed to use Part::CrossSection, because it seems
BRepAlgoAPI_Section has trouble with non-circular curves (LastParameter
becomes huge which causes discretization to produce many many points)
* Exposed Area.makeSections() to section with variable heights
* Modified Area.setPlane() to accept non-planar shape
* Exposed Area.getPlane() to obtain current workplane
* Exposed Area.Shapes attribute to return the current holding children
shape.
* Path.fromShapes can now convert any number of shapes to Path with
optimzied travel distances. It internally uses Path.sortWires to
minimize travel distances, and also sort wires by its Z height in case
of sectioned wires.
* The above python function is impelmented in Path::Area class.
* Path::FeatureShape is rewrote to take advantage of these two
functions.
* Add Path::FeatureAreaView to partially display a Path::FeatureArea's
sections.