From eb929ad217b236e8a2a5f1a66d17a9bd25b86fe9 Mon Sep 17 00:00:00 2001 From: Abdullah Tahiri Date: Fri, 20 Nov 2020 14:19:54 +0100 Subject: [PATCH] Sketcher: Extend GeometryFacade and ExternaGeometryFacade to GeometryMode --- src/Mod/Sketcher/App/ExternalGeometryFacade.cpp | 2 +- src/Mod/Sketcher/App/ExternalGeometryFacade.h | 3 +++ src/Mod/Sketcher/App/GeometryFacade.cpp | 2 +- src/Mod/Sketcher/App/GeometryFacade.h | 6 ++++++ src/Mod/Sketcher/App/GeometryFacadePy.xml | 11 ++++++++++- src/Mod/Sketcher/App/GeometryFacadePyImp.cpp | 11 +++++++++++ 6 files changed, 32 insertions(+), 3 deletions(-) diff --git a/src/Mod/Sketcher/App/ExternalGeometryFacade.cpp b/src/Mod/Sketcher/App/ExternalGeometryFacade.cpp index 952c5e0bbf..a60d60e464 100644 --- a/src/Mod/Sketcher/App/ExternalGeometryFacade.cpp +++ b/src/Mod/Sketcher/App/ExternalGeometryFacade.cpp @@ -36,7 +36,7 @@ using namespace Sketcher; -TYPESYSTEM_SOURCE(Sketcher::ExternalGeometryFacade,Part::GeometryExtension) +TYPESYSTEM_SOURCE(Sketcher::ExternalGeometryFacade,Base::BaseClass) ExternalGeometryFacade::ExternalGeometryFacade(): Geo(nullptr), SketchGeoExtension(nullptr), ExternalGeoExtension(nullptr) { diff --git a/src/Mod/Sketcher/App/ExternalGeometryFacade.h b/src/Mod/Sketcher/App/ExternalGeometryFacade.h index fecc6e46f0..960f1e3f1a 100644 --- a/src/Mod/Sketcher/App/ExternalGeometryFacade.h +++ b/src/Mod/Sketcher/App/ExternalGeometryFacade.h @@ -83,6 +83,9 @@ public: virtual InternalType::InternalType getInternalType() const override {return getGeoExt()->getInternalType();} virtual void setInternalType(InternalType::InternalType type) override {getGeoExt()->setInternalType(type);} + virtual bool testGeometryMode(int flag) const override { return getGeoExt()->testGeometryMode(flag); } + virtual void setGeometryMode(int flag, bool v=true) override { getGeoExt()->setGeometryMode(flag, v); } + // 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.cpp b/src/Mod/Sketcher/App/GeometryFacade.cpp index 2b881e9482..439530f48c 100644 --- a/src/Mod/Sketcher/App/GeometryFacade.cpp +++ b/src/Mod/Sketcher/App/GeometryFacade.cpp @@ -36,7 +36,7 @@ using namespace Sketcher; -TYPESYSTEM_SOURCE(Sketcher::GeometryFacade,Part::GeometryExtension) +TYPESYSTEM_SOURCE(Sketcher::GeometryFacade,Base::BaseClass) GeometryFacade::GeometryFacade(): Geo(nullptr), SketchGeoExtension(nullptr) { diff --git a/src/Mod/Sketcher/App/GeometryFacade.h b/src/Mod/Sketcher/App/GeometryFacade.h index b134969c92..a3b726db71 100644 --- a/src/Mod/Sketcher/App/GeometryFacade.h +++ b/src/Mod/Sketcher/App/GeometryFacade.h @@ -125,6 +125,12 @@ public: virtual InternalType::InternalType getInternalType() const override {return getGeoExt()->getInternalType();} virtual void setInternalType(InternalType::InternalType type) override {getGeoExt()->setInternalType(type);} + virtual bool testGeometryMode(int flag) const override { return getGeoExt()->testGeometryMode(flag); } + virtual void setGeometryMode(int flag, bool v=true) override { getGeoExt()->setGeometryMode(flag, v); } + + bool getBlocked() const { return this->testGeometryMode(GeometryMode::Blocked);} + void setBlocked(bool status = true) {this->setGeometryMode(GeometryMode::Blocked, status);} + // 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 2ace52a7c8..db4febce4a 100644 --- a/src/Mod/Sketcher/App/GeometryFacadePy.xml +++ b/src/Mod/Sketcher/App/GeometryFacadePy.xml @@ -26,11 +26,20 @@ - returns the Id of the SketchGeometryExtension. + returns the Internal Type of the Geometry. + + + + returns whether the geometry is blocked or not. + + + + + 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 77b118c0dc..ebc78fd35b 100644 --- a/src/Mod/Sketcher/App/GeometryFacadePyImp.cpp +++ b/src/Mod/Sketcher/App/GeometryFacadePyImp.cpp @@ -117,6 +117,17 @@ void GeometryFacadePy::setInternalType(Py::String arg) throw Py::ValueError("Argument is not a valid internal geometry type."); } +Py::Boolean GeometryFacadePy::getBlocked(void) const +{ + return Py::Boolean(getGeometryFacadePtr()->getBlocked()); +} + +void GeometryFacadePy::setBlocked(Py::Boolean arg) +{ + getGeometryFacadePtr()->setBlocked(arg); +} + + PyObject* GeometryFacadePy::mirror(PyObject *args) { PyObject* o;