Sketcher: Geometry Extension for Internal Alignment Geometry

============================================================

This commit extends SketchGeometryExtension to store within a Geometry if it is an internal aligment geometry
and which type.
This commit is contained in:
Abdullah Tahiri
2020-11-21 07:28:50 +01:00
committed by abdullahtahiriyo
parent 2b35a7eec4
commit 858d29f163
4 changed files with 79 additions and 4 deletions

View File

@@ -31,19 +31,21 @@
using namespace Sketcher;
//---------- Geometry Extension
constexpr std::array<const char *, InternalType::NumInternalGeometryType> SketchGeometryExtension::internaltype2str;
TYPESYSTEM_SOURCE(Sketcher::SketchGeometryExtension,Part::GeometryExtension)
// scoped within the class, multithread ready
std::atomic<long> SketchGeometryExtension::_GeometryID;
SketchGeometryExtension::SketchGeometryExtension():Id(++SketchGeometryExtension::_GeometryID)
SketchGeometryExtension::SketchGeometryExtension():Id(++SketchGeometryExtension::_GeometryID),InternalGeometryType(InternalType::None)
{
}
SketchGeometryExtension::SketchGeometryExtension(long cid):Id(cid)
SketchGeometryExtension::SketchGeometryExtension(long cid):Id(cid),InternalGeometryType(InternalType::None)
{
}
@@ -63,7 +65,8 @@ void SketchGeometryExtension::Save(Base::Writer &writer) const
if(name.size() > 0)
writer.Stream() << "\" name=\"" << name;
writer.Stream() << "\" id=\"" << Id << "\"/>" << std::endl;
writer.Stream() << "\" id=\"" << Id
<< "\" internalGeometryType=\"" << (int) InternalGeometryType << "\"/>" << std::endl;
}
void SketchGeometryExtension::Restore(Base::XMLReader &reader)
@@ -71,6 +74,7 @@ void SketchGeometryExtension::Restore(Base::XMLReader &reader)
restoreNameAttribute(reader);
Id = reader.getAttributeAsInteger("id");
InternalGeometryType = (InternalType::InternalType) reader.getAttributeAsInteger("internalGeometryType");
}
std::unique_ptr<Part::GeometryExtension> SketchGeometryExtension::copy(void) const
@@ -78,6 +82,7 @@ std::unique_ptr<Part::GeometryExtension> SketchGeometryExtension::copy(void) con
auto cpy = std::make_unique<SketchGeometryExtension>();
cpy->Id = this->Id;
cpy->InternalGeometryType = this->InternalGeometryType;
cpy->setName(this->getName()); // Base Class