diff --git a/src/Mod/Sketcher/App/SketchGeometryExtension.cpp b/src/Mod/Sketcher/App/SketchGeometryExtension.cpp index 3ee98a66c9..f75be5983d 100644 --- a/src/Mod/Sketcher/App/SketchGeometryExtension.cpp +++ b/src/Mod/Sketcher/App/SketchGeometryExtension.cpp @@ -34,6 +34,7 @@ using namespace Sketcher; //---------- Geometry Extension constexpr std::array SketchGeometryExtension::internaltype2str; +constexpr std::array SketchGeometryExtension::geometrymode2str; TYPESYSTEM_SOURCE(Sketcher::SketchGeometryExtension,Part::GeometryExtension) @@ -121,3 +122,21 @@ bool SketchGeometryExtension::getInternalTypeFromName(std::string str, InternalT return false; } +bool SketchGeometryExtension::getGeometryModeFromName(std::string str, GeometryMode::GeometryMode &type) +{ + auto pos = std::find_if( SketchGeometryExtension::geometrymode2str.begin(), + SketchGeometryExtension::geometrymode2str.end(), + [str](const char * val) { + return strcmp(val,str.c_str())==0;} + ); + + if( pos != SketchGeometryExtension::geometrymode2str.end()) { + int index = std::distance( SketchGeometryExtension::geometrymode2str.begin(), pos ); + + type = static_cast(index); + return true; + } + + return false; +} + diff --git a/src/Mod/Sketcher/App/SketchGeometryExtension.h b/src/Mod/Sketcher/App/SketchGeometryExtension.h index b4896be63f..51571d5813 100644 --- a/src/Mod/Sketcher/App/SketchGeometryExtension.h +++ b/src/Mod/Sketcher/App/SketchGeometryExtension.h @@ -103,6 +103,8 @@ public: static bool getInternalTypeFromName(std::string str, InternalType::InternalType &type); + static bool getGeometryModeFromName(std::string str, GeometryMode::GeometryMode &type); + private: SketchGeometryExtension(const SketchGeometryExtension&) = default;