Part: GeomBSplineCurve extension to get, increase or reduce multiplicity

This commit is contained in:
Abdullah Tahiri
2017-02-26 22:43:27 +01:00
committed by wmayer
parent d80437ed90
commit ca48841b8c
2 changed files with 42 additions and 1 deletions

View File

@@ -793,6 +793,17 @@ std::vector<int> GeomBSplineCurve::getMultiplicities() const
return mults;
}
int GeomBSplineCurve::getMultiplicity(int index) const
{
try {
return myCurve->Multiplicity(index);
}
catch (Standard_Failure) {
Handle_Standard_Failure e = Standard_Failure::Caught();
throw Base::RuntimeError(e->GetMessageString());
}
}
int GeomBSplineCurve::getDegree() const
{
return myCurve->Degree();
@@ -914,6 +925,32 @@ void GeomBSplineCurve::increaseDegree(double degree)
}
}
void GeomBSplineCurve::increaseMultiplicity(int index, int multiplicity)
{
try {
Handle_Geom_BSplineCurve curve = Handle_Geom_BSplineCurve::DownCast(this->handle());
curve->IncreaseMultiplicity(index, multiplicity);
return;
}
catch (Standard_Failure) {
Handle_Standard_Failure e = Standard_Failure::Caught();
throw Base::RuntimeError(e->GetMessageString());
}
}
bool GeomBSplineCurve::removeKnot(int index, int multiplicity, double tolerance)
{
try {
Handle_Geom_BSplineCurve curve = Handle_Geom_BSplineCurve::DownCast(this->handle());
return curve->RemoveKnot(index, multiplicity, tolerance) == Standard_True;
}
catch (Standard_Failure) {
Handle_Standard_Failure e = Standard_Failure::Caught();
throw Base::RuntimeError(e->GetMessageString());
}
}
// Persistence implementer
unsigned int GeomBSplineCurve::getMemSize (void) const
{

View File

@@ -226,14 +226,18 @@ public:
std::vector<double> getWeights() const;
std::vector<double> getKnots() const;
std::vector<int> getMultiplicities() const;
int getMultiplicity(int index) const;
int getDegree() const;
bool isPeriodic() const;
bool join(const Handle_Geom_BSplineCurve&);
void makeC1Continuous(double, double);
std::list<Geometry*> toBiArcs(double tolerance) const;
void increaseDegree(double degree);
void increaseMultiplicity(int index, int multiplicity);
bool removeKnot(int index, int multiplicity, double tolerance = Precision::PConfusion());
// Persistence implementer ---------------------
virtual unsigned int getMemSize(void) const;
virtual void Save(Base::Writer &/*writer*/) const;