diff --git a/src/Mod/Sketcher/App/Sketch.cpp b/src/Mod/Sketcher/App/Sketch.cpp index 509f731f6e..963d14d0ea 100644 --- a/src/Mod/Sketcher/App/Sketch.cpp +++ b/src/Mod/Sketcher/App/Sketch.cpp @@ -1425,6 +1425,22 @@ std::vector Sketch::extractGeometry(bool withConstructionEleme return temp; } +GeoListFacade Sketch::extractGeoListFacade() const +{ + std::vector temp; + temp.reserve(Geoms.size()); + int internalGeometryCount = 0; + for (std::vector::const_iterator it=Geoms.begin(); it != Geoms.end(); ++it) { + auto gf = GeometryFacade::getFacade(it->geo->clone(), true); // GeometryFacade is the owner of this allocation + if(!it->external) + internalGeometryCount++; + + temp.push_back(std::move(gf)); + } + + return GeoListFacade::getGeoListModel(std::move(temp), internalGeometryCount); +} + void Sketch::updateExtension(int geoId, std::unique_ptr && ext) { geoId = checkGeoId(geoId); diff --git a/src/Mod/Sketcher/App/Sketch.h b/src/Mod/Sketcher/App/Sketch.h index 626576b27e..2d60779cfe 100644 --- a/src/Mod/Sketcher/App/Sketch.h +++ b/src/Mod/Sketcher/App/Sketch.h @@ -27,6 +27,7 @@ #include #include #include +#include "GeoList.h" #include "Constraint.h" #include "planegcs/GCS.h" @@ -36,6 +37,7 @@ namespace Sketcher { + class SketcherExport Sketch :public Base::Persistence { TYPESYSTEM_HEADER(); @@ -89,6 +91,8 @@ public: std::vector extractGeometry(bool withConstructionElements=true, bool withExternalElements=false) const; + GeoListFacade extractGeoListFacade() const; + void updateExtension(int geoId, std::unique_ptr && ext); /// get the geometry as python objects Py::Tuple getPyGeometry(void) const;