diff --git a/src/Mod/Sketcher/App/ExternalGeometryFacade.h b/src/Mod/Sketcher/App/ExternalGeometryFacade.h
index 788ffbcb0b..bbec6668f7 100644
--- a/src/Mod/Sketcher/App/ExternalGeometryFacade.h
+++ b/src/Mod/Sketcher/App/ExternalGeometryFacade.h
@@ -90,6 +90,9 @@ public:
virtual bool testGeometryMode(int flag) const override { return getGeoExt()->testGeometryMode(flag); }
virtual void setGeometryMode(int flag, bool v=true) override { getGeoExt()->setGeometryMode(flag, v); }
+ virtual int getGeometryLayerId() const override { return getGeoExt()->getGeometryLayerId();}
+ virtual void setGeometryLayerId(int geolayer) override { getGeoExt()->setGeometryLayerId(geolayer);}
+
// Convenience accessor
bool getBlocked() const { return this->testGeometryMode(GeometryMode::Blocked);}
void setBlocked(bool status = true) {this->setGeometryMode(GeometryMode::Blocked, status);}
diff --git a/src/Mod/Sketcher/App/ExternalGeometryFacadePy.xml b/src/Mod/Sketcher/App/ExternalGeometryFacadePy.xml
index 290e9767ce..906f3dea9b 100644
--- a/src/Mod/Sketcher/App/ExternalGeometryFacadePy.xml
+++ b/src/Mod/Sketcher/App/ExternalGeometryFacadePy.xml
@@ -47,6 +47,14 @@
+
+
+
+ Returns the Id of the geometry Layer in which the geometry is located.
+
+
+
+
diff --git a/src/Mod/Sketcher/App/ExternalGeometryFacadePyImp.cpp b/src/Mod/Sketcher/App/ExternalGeometryFacadePyImp.cpp
index adfb68ea05..bc8fdf6bd4 100644
--- a/src/Mod/Sketcher/App/ExternalGeometryFacadePyImp.cpp
+++ b/src/Mod/Sketcher/App/ExternalGeometryFacadePyImp.cpp
@@ -506,6 +506,16 @@ void ExternalGeometryFacadePy::setConstruction(Py::Boolean arg)
getExternalGeometryFacadePtr()->setConstruction(arg);
}
+Py::Long ExternalGeometryFacadePy::getGeometryLayerId(void) const
+{
+ return Py::Long(this->getExternalGeometryFacadePtr()->getGeometryLayerId());
+}
+
+void ExternalGeometryFacadePy::setGeometryLayerId(Py::Long Id)
+{
+ this->getExternalGeometryFacadePtr()->setGeometryLayerId(long(Id));
+}
+
Py::String ExternalGeometryFacadePy::getTag(void) const
{
std::string tmp = boost::uuids::to_string(getExternalGeometryFacadePtr()->getTag());
diff --git a/src/Mod/Sketcher/App/GeometryFacade.h b/src/Mod/Sketcher/App/GeometryFacade.h
index dea75d0fdf..c243dcc418 100644
--- a/src/Mod/Sketcher/App/GeometryFacade.h
+++ b/src/Mod/Sketcher/App/GeometryFacade.h
@@ -147,6 +147,9 @@ public:
virtual bool testGeometryMode(int flag) const override { return getGeoExt()->testGeometryMode(flag); }
virtual void setGeometryMode(int flag, bool v=true) override { getGeoExt()->setGeometryMode(flag, v); }
+ virtual int getGeometryLayerId() const override { return getGeoExt()->getGeometryLayerId();}
+ virtual void setGeometryLayerId(int geolayer) override { getGeoExt()->setGeometryLayerId(geolayer);}
+
// Convenience accessor
bool getBlocked() const { return this->testGeometryMode(GeometryMode::Blocked);}
void setBlocked(bool status = true) {this->setGeometryMode(GeometryMode::Blocked, status);}
diff --git a/src/Mod/Sketcher/App/GeometryFacadePy.xml b/src/Mod/Sketcher/App/GeometryFacadePy.xml
index 55e299f08a..d9c0fdfb2d 100644
--- a/src/Mod/Sketcher/App/GeometryFacadePy.xml
+++ b/src/Mod/Sketcher/App/GeometryFacadePy.xml
@@ -56,6 +56,14 @@
+
+
+
+ Returns the Id of the geometry Layer in which the geometry is located.
+
+
+
+
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 b99d9a0340..89a94e2f5c 100644
--- a/src/Mod/Sketcher/App/GeometryFacadePyImp.cpp
+++ b/src/Mod/Sketcher/App/GeometryFacadePyImp.cpp
@@ -483,6 +483,16 @@ void GeometryFacadePy::setConstruction(Py::Boolean arg)
getGeometryFacadePtr()->setConstruction(arg);
}
+Py::Long GeometryFacadePy::getGeometryLayerId(void) const
+{
+ return Py::Long(this->getGeometryFacadePtr()->getGeometryLayerId());
+}
+
+void GeometryFacadePy::setGeometryLayerId(Py::Long Id)
+{
+ this->getGeometryFacadePtr()->setGeometryLayerId(long(Id));
+}
+
Py::String GeometryFacadePy::getTag(void) const
{
std::string tmp = boost::uuids::to_string(getGeometryFacadePtr()->getTag());
diff --git a/src/Mod/Sketcher/App/SketchGeometryExtension.cpp b/src/Mod/Sketcher/App/SketchGeometryExtension.cpp
index ef1df0c262..939203d274 100644
--- a/src/Mod/Sketcher/App/SketchGeometryExtension.cpp
+++ b/src/Mod/Sketcher/App/SketchGeometryExtension.cpp
@@ -41,12 +41,16 @@ TYPESYSTEM_SOURCE(Sketcher::SketchGeometryExtension,Part::GeometryPersistenceExt
// scoped within the class, multithread ready
std::atomic SketchGeometryExtension::_GeometryID;
-SketchGeometryExtension::SketchGeometryExtension():Id(++SketchGeometryExtension::_GeometryID),InternalGeometryType(InternalType::None)
+SketchGeometryExtension::SketchGeometryExtension(): Id(++SketchGeometryExtension::_GeometryID),
+ InternalGeometryType(InternalType::None),
+ GeometryLayer(0)
{
}
-SketchGeometryExtension::SketchGeometryExtension(long cid):Id(cid),InternalGeometryType(InternalType::None)
+SketchGeometryExtension::SketchGeometryExtension(long cid): Id(cid),
+ InternalGeometryType(InternalType::None),
+ GeometryLayer(0)
{
}
@@ -58,6 +62,7 @@ void SketchGeometryExtension::copyAttributes(Part::GeometryExtension * cpy) cons
static_cast(cpy)->Id = this->Id;
static_cast(cpy)->InternalGeometryType = this->InternalGeometryType;
static_cast(cpy)->GeometryModeFlags = this->GeometryModeFlags;
+ static_cast(cpy)->GeometryLayer = this->GeometryLayer;
}
void SketchGeometryExtension::restoreAttributes(Base::XMLReader &reader)
@@ -70,6 +75,10 @@ void SketchGeometryExtension::restoreAttributes(Base::XMLReader &reader)
InternalGeometryType = (InternalType::InternalType) reader.getAttributeAsInteger("internalGeometryType");
GeometryModeFlags = GeometryModeFlagType(reader.getAttribute("geometryModeFlags"));
+
+ if(reader.hasAttribute("geometryLayer"))
+ GeometryLayer = reader.getAttributeAsInteger("geometryLayer");
+
}
void SketchGeometryExtension::saveAttributes(Base::Writer &writer) const
@@ -78,7 +87,8 @@ void SketchGeometryExtension::saveAttributes(Base::Writer &writer) const
writer.Stream() // << "\" id=\"" << Id // This is removed as the stored Id is not used and it may interfere with RT's future implementation
<< "\" internalGeometryType=\"" << (int) InternalGeometryType
- << "\" geometryModeFlags=\"" << GeometryModeFlags.to_string();
+ << "\" geometryModeFlags=\"" << GeometryModeFlags.to_string()
+ << "\" geometryLayer=\"" << GeometryLayer;
}
std::unique_ptr SketchGeometryExtension::copy(void) const
diff --git a/src/Mod/Sketcher/App/SketchGeometryExtension.h b/src/Mod/Sketcher/App/SketchGeometryExtension.h
index e51ea8c853..653cc4e0eb 100644
--- a/src/Mod/Sketcher/App/SketchGeometryExtension.h
+++ b/src/Mod/Sketcher/App/SketchGeometryExtension.h
@@ -71,6 +71,9 @@ public:
// Geometry functional mode
virtual bool testGeometryMode(int flag) const = 0;
virtual void setGeometryMode(int flag, bool v=true) = 0;
+
+ virtual int getGeometryLayerId() const = 0;
+ virtual void setGeometryLayerId(int geolayer) = 0;
};
class SketcherExport SketchGeometryExtension : public Part::GeometryPersistenceExtension, private ISketchGeometryExtension
@@ -95,6 +98,9 @@ public:
virtual bool testGeometryMode(int flag) const override { return GeometryModeFlags.test((size_t)(flag)); };
virtual void setGeometryMode(int flag, bool v=true) override { GeometryModeFlags.set((size_t)(flag), v); };
+ virtual int getGeometryLayerId() const override { return GeometryLayer;}
+ virtual void setGeometryLayerId(int geolayer) override { GeometryLayer = geolayer;}
+
constexpr static std::array internaltype2str {{ "None", "EllipseMajorDiameter", "EllipseMinorDiameter","EllipseFocus1", "EllipseFocus2", "HyperbolaMajor", "HyperbolaMinor", "HyperbolaFocus", "ParabolaFocus", "BSplineControlPoint", "BSplineKnotPoint" }};
constexpr static std::array geometrymode2str {{ "Blocked", "Construction" }};
@@ -116,6 +122,7 @@ private:
long Id;
InternalType::InternalType InternalGeometryType;
GeometryModeFlagType GeometryModeFlags;
+ int GeometryLayer;
private:
static std::atomic _GeometryID;
diff --git a/src/Mod/Sketcher/App/SketchGeometryExtensionPy.xml b/src/Mod/Sketcher/App/SketchGeometryExtensionPy.xml
index 6f3619cd4f..4c946d1a76 100644
--- a/src/Mod/Sketcher/App/SketchGeometryExtensionPy.xml
+++ b/src/Mod/Sketcher/App/SketchGeometryExtensionPy.xml
@@ -55,5 +55,13 @@
+
+
+
+ Returns the Id of the geometry Layer in which the geometry is located.
+
+
+
+
diff --git a/src/Mod/Sketcher/App/SketchGeometryExtensionPyImp.cpp b/src/Mod/Sketcher/App/SketchGeometryExtensionPyImp.cpp
index efed2ae53a..833953a63a 100644
--- a/src/Mod/Sketcher/App/SketchGeometryExtensionPyImp.cpp
+++ b/src/Mod/Sketcher/App/SketchGeometryExtensionPyImp.cpp
@@ -173,6 +173,16 @@ PyObject* SketchGeometryExtensionPy::setGeometryMode(PyObject *args)
Py_Return;
}
+Py::Long SketchGeometryExtensionPy::getGeometryLayerId(void) const
+{
+ return Py::Long(this->getSketchGeometryExtensionPtr()->getGeometryLayerId());
+}
+
+void SketchGeometryExtensionPy::setGeometryLayerId(Py::Long Id)
+{
+ this->getSketchGeometryExtensionPtr()->setGeometryLayerId(long(Id));
+}
+
PyObject *SketchGeometryExtensionPy::getCustomAttributes(const char* /*attr*/) const
{
return 0;
@@ -182,3 +192,4 @@ int SketchGeometryExtensionPy::setCustomAttributes(const char* /*attr*/, PyObjec
{
return 0;
}
+