64 lines
1.2 KiB
C++
64 lines
1.2 KiB
C++
// Unnamed CAD Software
|
|
//
|
|
// License: GPLv3 (or later)
|
|
// Language: C++17
|
|
// Notes:
|
|
// - use a right-handed, Z-up coordinate system to match Open CASCADE
|
|
|
|
#include "SketchCircle.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());
|
|
}
|
|
}
|
|
|
|
SketchCircle::SketchCircle() : m_radius(0.0)
|
|
{
|
|
}
|
|
|
|
SketchCircle::SketchCircle(const gp_Pnt& center, double radius)
|
|
: m_center(center), m_radius(radius)
|
|
{
|
|
}
|
|
|
|
SketchObject::ObjectType SketchCircle::type() const
|
|
{
|
|
return ObjectType::Circle;
|
|
}
|
|
|
|
void SketchCircle::read(const QJsonObject& json)
|
|
{
|
|
m_center = jsonToPoint(json["center"].toArray());
|
|
m_radius = json["radius"].toDouble();
|
|
}
|
|
|
|
void SketchCircle::write(QJsonObject& json) const
|
|
{
|
|
QJsonArray centerArr;
|
|
pointToJson(m_center, centerArr);
|
|
json["center"] = centerArr;
|
|
json["radius"] = m_radius;
|
|
json["type"] = "Circle";
|
|
}
|
|
|
|
const gp_Pnt& SketchCircle::center() const
|
|
{
|
|
return m_center;
|
|
}
|
|
|
|
double SketchCircle::radius() const
|
|
{
|
|
return m_radius;
|
|
}
|