[Part] Add methods to create an arc of the curve

This commit is contained in:
Ajinkya Dahale
2024-08-23 05:16:14 +05:30
parent ed59a23778
commit 427a6853b6
2 changed files with 50 additions and 1 deletions

View File

@@ -793,6 +793,11 @@ GeomBSplineCurve* GeomCurve::toNurbs(double first, double last) const
return toBSpline(first, last);
}
GeomCurve* GeomCurve::createArc([[maybe_unused]] double first, [[maybe_unused]] double last) const
{
return nullptr;
}
bool GeomCurve::tangent(double u, gp_Dir& dir) const
{
Handle(Geom_Curve) curve = Handle(Geom_Curve)::DownCast(handle());
@@ -1380,6 +1385,14 @@ Geometry *GeomBSplineCurve::copy() const
}
}
GeomCurve* GeomBSplineCurve::createArc(double first, double last) const
{
auto newBsp = static_cast<Part::GeomBSplineCurve*>(this->copy());
newBsp->Trim(first, last);
return newBsp;
}
int GeomBSplineCurve::countPoles() const
{
return myCurve->NbPoles();
@@ -2270,6 +2283,14 @@ Geometry *GeomTrimmedCurve::copy() const
return newCurve;
}
GeomCurve* GeomTrimmedCurve::createArc(double first, double last) const
{
auto newArc = static_cast<Part::GeomTrimmedCurve*>(this->copy());
newArc->setRange(first, last);
return newArc;
}
// Persistence implementer
unsigned int GeomTrimmedCurve::getMemSize () const
{
@@ -2592,6 +2613,14 @@ Geometry *GeomCircle::copy() const
return newCirc;
}
GeomCurve* GeomCircle::createArc(double first, double last) const
{
auto newArc = new GeomArcOfCircle(Handle(Geom_Circle)::DownCast(this->handle()->Copy()));
newArc->setRange(first, last, false);
return newArc;
}
GeomBSplineCurve* GeomCircle::toNurbs(double first, double last) const
{
// for an arc of circle use the generic method
@@ -3030,6 +3059,14 @@ Geometry *GeomEllipse::copy() const
return newEllipse;
}
GeomCurve* GeomEllipse::createArc(double first, double last) const
{
auto newArc = new GeomArcOfEllipse(Handle(Geom_Ellipse)::DownCast(this->handle()->Copy()));
newArc->setRange(first, last, false);
return newArc;
}
GeomBSplineCurve* GeomEllipse::toNurbs(double first, double last) const
{
// for an arc of ellipse use the generic method