feat: Implement feature graph and JSON document save/load

Co-authored-by: aider (gemini/gemini-2.5-pro) <aider@aider.chat>
This commit is contained in:
2026-02-09 17:16:32 -07:00
parent bc851585f7
commit d2d49726d6
9 changed files with 340 additions and 0 deletions

44
src/SketchFeature.cpp Normal file
View File

@@ -0,0 +1,44 @@
#include "SketchFeature.h"
SketchFeature::SketchFeature(const QString& name)
: Feature(name)
{
}
QString SketchFeature::type() const
{
return "Sketch";
}
void SketchFeature::setPlane(SketchPlane plane)
{
m_plane = plane;
}
SketchFeature::SketchPlane SketchFeature::plane() const
{
return m_plane;
}
void SketchFeature::read(const QJsonObject& json)
{
Feature::read(json);
if (json.contains("plane") && json["plane"].isString()) {
QString planeStr = json["plane"].toString();
if (planeStr == "XY") m_plane = SketchPlane::XY;
else if (planeStr == "XZ") m_plane = SketchPlane::XZ;
else if (planeStr == "YZ") m_plane = SketchPlane::YZ;
}
}
void SketchFeature::write(QJsonObject& json) const
{
Feature::write(json);
QString planeStr;
switch (m_plane) {
case SketchPlane::XY: planeStr = "XY"; break;
case SketchPlane::XZ: planeStr = "XZ"; break;
case SketchPlane::YZ: planeStr = "YZ"; break;
}
json["plane"] = planeStr;
}