refactor: Implement Rectangle tool with snapping and dimensions
Co-authored-by: aider (gemini/gemini-2.5-pro) <aider@aider.chat>
This commit is contained in:
61
src/SketchRectangle.cpp
Normal file
61
src/SketchRectangle.cpp
Normal file
@@ -0,0 +1,61 @@
|
||||
#include "SketchRectangle.h"
|
||||
#include <QJsonArray>
|
||||
|
||||
namespace
|
||||
{
|
||||
void pointToJson(const gp_Pnt& p, QJsonArray& arr)
|
||||
{
|
||||
arr.append(p.X());
|
||||
arr.append(p.Y());
|
||||
arr.append(p.Z());
|
||||
}
|
||||
|
||||
gp_Pnt jsonToPoint(const QJsonArray& arr)
|
||||
{
|
||||
return gp_Pnt(arr[0].toDouble(), arr[1].toDouble(), arr[2].toDouble());
|
||||
}
|
||||
}
|
||||
|
||||
SketchRectangle::SketchRectangle()
|
||||
{
|
||||
}
|
||||
|
||||
SketchRectangle::SketchRectangle(const gp_Pnt& corner1, const gp_Pnt& corner2)
|
||||
: m_corner1(corner1), m_corner2(corner2)
|
||||
{
|
||||
}
|
||||
|
||||
SketchObject::ObjectType SketchRectangle::type() const
|
||||
{
|
||||
return ObjectType::Rectangle;
|
||||
}
|
||||
|
||||
void SketchRectangle::read(const QJsonObject& json)
|
||||
{
|
||||
if (json.contains("corner1") && json["corner1"].isArray()) {
|
||||
m_corner1 = jsonToPoint(json["corner1"].toArray());
|
||||
}
|
||||
if (json.contains("corner2") && json["corner2"].isArray()) {
|
||||
m_corner2 = jsonToPoint(json["corner2"].toArray());
|
||||
}
|
||||
}
|
||||
|
||||
void SketchRectangle::write(QJsonObject& json) const
|
||||
{
|
||||
json["type"] = "Rectangle";
|
||||
QJsonArray c1, c2;
|
||||
pointToJson(m_corner1, c1);
|
||||
pointToJson(m_corner2, c2);
|
||||
json["corner1"] = c1;
|
||||
json["corner2"] = c2;
|
||||
}
|
||||
|
||||
const gp_Pnt& SketchRectangle::corner1() const
|
||||
{
|
||||
return m_corner1;
|
||||
}
|
||||
|
||||
const gp_Pnt& SketchRectangle::corner2() const
|
||||
{
|
||||
return m_corner2;
|
||||
}
|
||||
Reference in New Issue
Block a user