========================================================================
As GeometryFacade is provided with more sketcher specific functionality, the demand
for to get GeometryFacades instead of Part::Geometry object increases too. This
addition reflects this increase of demand.
==============================================
Separate struct into own file to avoid having to include all the dependencies of SketchObject in other code that relies on GeoEnum.
==============================
Class for managing internal and external geometry as a single object. This is a light-weight alternative to
passing the whole SketchObject.
It reflects the format used in getCompleteGeometry of SketchObject and Sketch solver facade class, while providing
several convenient conversion functions to map indices.
Internal and external geometries are present in a single geometry vector one after the other.
The index of the geomlist (all layers) and the GeoId can be converted from each other at needed
using the member fuctions (and sometimes the static member functions).
Internal implementation is as a template GeoListModel<T>.
The following types are instantiated. Specialisation is provided where necessary.
GeoList = GeoListModel<Part::Geometry *>;
GeoListFacade = GeoListModel<std::unique_ptr<const Sketcher::GeometryFacade>>;
This enables to use the lighter GeoList were sufficient, while enabling off-the-shelf replacement
when switching to a GeoListFacade is necessary.
=============================================================================================
Use the geometry specific D0 to calculate value at parameter point.
- when a helix is defined in the growth mode it can have a pitch of zero
This commit fixes the resulting division by zero by directly setting the known turns
Introduce an enum to verify the axis depending on the used context.
* For helix no restriction is needed
* For Pad/Pocket the axis must not be parallel with the sketch plane
* For Revolve/Groove the axis must not be perpendicular with the sketch plane
Adds a new type "VERTEX_FOR_PRIMITIVE" that will analyze the direction for vertical/horizontal but not for tangent
If defined, makes use of GeoId item of AutoConstraint struct (instead of last geometry) to apply the horizontal/vertical
constraint. This allow this constraint to be applied on an arbitrary geometry.