diff --git a/src/Mod/Sketcher/App/ExternalGeometryFacade.h b/src/Mod/Sketcher/App/ExternalGeometryFacade.h index 9f6cb94063..fecc6e46f0 100644 --- a/src/Mod/Sketcher/App/ExternalGeometryFacade.h +++ b/src/Mod/Sketcher/App/ExternalGeometryFacade.h @@ -80,6 +80,9 @@ public: inline virtual long getId() const override {return getGeoExt()->getId();} virtual void setId(long id) override {getGeoExt()->setId(id);} + virtual InternalType::InternalType getInternalType() const override {return getGeoExt()->getInternalType();} + virtual void setInternalType(InternalType::InternalType type) override {getGeoExt()->setInternalType(type);} + // Geometry Extension Information inline const std::string &getSketchExtensionName () const {return SketchGeoExtension->getName();} inline const std::string &getExternalExtensionName () const {return ExternalGeoExtension->getName();} diff --git a/src/Mod/Sketcher/App/GeometryFacade.h b/src/Mod/Sketcher/App/GeometryFacade.h index ce4d162ea3..b134969c92 100644 --- a/src/Mod/Sketcher/App/GeometryFacade.h +++ b/src/Mod/Sketcher/App/GeometryFacade.h @@ -122,6 +122,9 @@ public: inline virtual long getId() const override {return getGeoExt()->getId();} virtual void setId(long id) override {getGeoExt()->setId(id);} + virtual InternalType::InternalType getInternalType() const override {return getGeoExt()->getInternalType();} + virtual void setInternalType(InternalType::InternalType type) override {getGeoExt()->setInternalType(type);} + // Geometry Extension Information inline const std::string &getExtensionName () const {return SketchGeoExtension->getName();} diff --git a/src/Mod/Sketcher/App/GeometryFacadePy.xml b/src/Mod/Sketcher/App/GeometryFacadePy.xml index fdb1aa5bc4..2ace52a7c8 100644 --- a/src/Mod/Sketcher/App/GeometryFacadePy.xml +++ b/src/Mod/Sketcher/App/GeometryFacadePy.xml @@ -23,6 +23,14 @@ + + + + returns the Id of the SketchGeometryExtension. + + + + Performs the symmetrical transformation of this geometric object diff --git a/src/Mod/Sketcher/App/GeometryFacadePyImp.cpp b/src/Mod/Sketcher/App/GeometryFacadePyImp.cpp index b89460a005..ba32dd7197 100644 --- a/src/Mod/Sketcher/App/GeometryFacadePyImp.cpp +++ b/src/Mod/Sketcher/App/GeometryFacadePyImp.cpp @@ -92,6 +92,38 @@ void GeometryFacadePy::setId(Py::Long Id) this->getGeometryFacadePtr()->setId(long(Id)); } +Py::String GeometryFacadePy::getInternalType(void) const +{ + int internaltypeindex = (int)this->getGeometryFacadePtr()->getInternalType(); + + if(internaltypeindex >= InternalType::NumInternalGeometryType) + throw Py::NotImplementedError("String name of enum not implemented"); + + std::string typestr = SketchGeometryExtension::internaltype2str[internaltypeindex]; + + return Py::String(typestr); +} + +void GeometryFacadePy::setInternalType(Py::String arg) +{ + std::string argstr = arg; + + auto pos = std::find_if( SketchGeometryExtension::internaltype2str.begin(), + SketchGeometryExtension::internaltype2str.end(), + [argstr](const char * val) { + return strcmp(val,argstr.c_str())==0;} + ); + + if( pos != SketchGeometryExtension::internaltype2str.end()) { + int index = std::distance( SketchGeometryExtension::internaltype2str.begin(), pos ); + + this->getGeometryFacadePtr()->setInternalType((InternalType::InternalType)index); + return; + } + + throw Py::ValueError("Argument is not a valid internal geometry type."); +} + PyObject* GeometryFacadePy::mirror(PyObject *args) { PyObject* o;