From 4d2837a6c29ea206fd35cfb2d7417127079a7732 Mon Sep 17 00:00:00 2001 From: Ajinkya Dahale Date: Mon, 14 Mar 2022 10:15:24 -0400 Subject: [PATCH] [Part] Add/change some methods in `GeomBSplineCurve` Add `setPeriodic` to turn a b-spline periodic. Allow `join` to join any bounded curve not just b-spline. --- src/Mod/Part/App/Geometry.cpp | 9 +++++++-- src/Mod/Part/App/Geometry.h | 3 ++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/Mod/Part/App/Geometry.cpp b/src/Mod/Part/App/Geometry.cpp index f8d2584ff2..8a9d8d61ac 100644 --- a/src/Mod/Part/App/Geometry.cpp +++ b/src/Mod/Part/App/Geometry.cpp @@ -1374,15 +1374,20 @@ bool GeomBSplineCurve::isPeriodic() const return myCurve->IsPeriodic()==Standard_True; } +void GeomBSplineCurve::setPeriodic() const +{ + myCurve->SetPeriodic(); +} + bool GeomBSplineCurve::isRational() const { return myCurve->IsRational()==Standard_True; } -bool GeomBSplineCurve::join(const Handle(Geom_BSplineCurve)& spline) +bool GeomBSplineCurve::join(const Handle(Geom_BoundedCurve)& other) { GeomConvert_CompCurveToBSplineCurve ccbc(this->myCurve); - if (!ccbc.Add(spline, Precision::Approximation())) + if (!ccbc.Add(other, Precision::Approximation())) return false; this->myCurve = ccbc.BSplineCurve(); return true; diff --git a/src/Mod/Part/App/Geometry.h b/src/Mod/Part/App/Geometry.h index 31c81a515f..a8d3bb56b7 100644 --- a/src/Mod/Part/App/Geometry.h +++ b/src/Mod/Part/App/Geometry.h @@ -304,8 +304,9 @@ public: int getMultiplicity(int index) const; int getDegree() const; bool isPeriodic() const; + void setPeriodic() const; bool isRational() const; - bool join(const Handle(Geom_BSplineCurve)&); + bool join(const Handle(Geom_BoundedCurve)&); void makeC1Continuous(double, double); std::list toBiArcs(double tolerance) const;