From 0331b8a0ab7c04bacded030e9361816dde719b9a Mon Sep 17 00:00:00 2001 From: Abdullah Tahiri Date: Tue, 7 Dec 2021 14:03:33 +0100 Subject: [PATCH] Sketcher: SketchObject - method to getCompleteGeometry as GeometryFacade ======================================================================== 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. --- src/Mod/Sketcher/App/SketchObject.cpp | 16 +++++++++++++++- src/Mod/Sketcher/App/SketchObject.h | 2 ++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/Mod/Sketcher/App/SketchObject.cpp b/src/Mod/Sketcher/App/SketchObject.cpp index 3a78b58e6d..8fed9f1a16 100644 --- a/src/Mod/Sketcher/App/SketchObject.cpp +++ b/src/Mod/Sketcher/App/SketchObject.cpp @@ -7035,11 +7035,25 @@ void SketchObject::rebuildExternalGeometry(void) std::vector SketchObject::getCompleteGeometry(void) const { - std::vector vals=getInternalGeometry(); + std::vector vals = getInternalGeometry(); vals.insert(vals.end(), ExternalGeo.rbegin(), ExternalGeo.rend()); // in reverse order return vals; } +std::vector> SketchObject::getCompleteGeometryFacade(void) const +{ + std::vector> facade; + facade.reserve( Geometry.getSize() + ExternalGeo.size() ); + + for(auto geo : Geometry.getValues()) + facade.push_back(GeometryFacade::getFacade(geo)); + + for(auto rit = ExternalGeo.rbegin(); rit != ExternalGeo.rend(); rit++) + facade.push_back(GeometryFacade::getFacade(*rit)); + + return facade; +} + void SketchObject::rebuildVertexIndex(void) { VertexId2GeoId.resize(0); diff --git a/src/Mod/Sketcher/App/SketchObject.h b/src/Mod/Sketcher/App/SketchObject.h index 85cf90e6ab..5811e6567d 100644 --- a/src/Mod/Sketcher/App/SketchObject.h +++ b/src/Mod/Sketcher/App/SketchObject.h @@ -194,6 +194,8 @@ public: /// retrieves a vector containing both normal and external Geometry (including the sketch axes) std::vector getCompleteGeometry(void) const; + std::vector> getCompleteGeometryFacade(void) const; + /// converts a GeoId index into an index of the CompleteGeometry vector int getCompleteGeometryIndex(int GeoId) const;