Part: GeomBSplineCurve extension to get, increase or reduce multiplicity
This commit is contained in:
@@ -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
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user