[Part] Add methods to create an arc of the curve
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user