[Part] BSplineSurface: fix KnotSequence for periodic BSpline surfaces

This commit is contained in:
tomate44
2022-07-26 14:58:28 +02:00
committed by wwmayer
parent d81fe59c2e
commit 07805f1a61

View File

@@ -1641,8 +1641,14 @@ Py::List BSplineSurfacePy::getUKnotSequence(void) const
Handle(Geom_BSplineSurface) surf = Handle(Geom_BSplineSurface)::DownCast
(getGeometryPtr()->handle());
Standard_Integer m = 0;
for (int i=1; i<= surf->NbUKnots(); i++)
m += surf->UMultiplicity(i);
if (surf->IsUPeriodic()) {
// knots=poles+2*degree-mult(1)+2
m = surf->NbUPoles() + 2*surf->UDegree() - surf->UMultiplicity(1) + 2;
}
else {
for (int i=1; i<= surf->NbUKnots(); i++)
m += surf->UMultiplicity(i);
}
TColStd_Array1OfReal k(1,m);
surf->UKnotSequence(k);
Py::List list;
@@ -1657,8 +1663,14 @@ Py::List BSplineSurfacePy::getVKnotSequence(void) const
Handle(Geom_BSplineSurface) surf = Handle(Geom_BSplineSurface)::DownCast
(getGeometryPtr()->handle());
Standard_Integer m = 0;
for (int i=1; i<= surf->NbVKnots(); i++)
m += surf->VMultiplicity(i);
if (surf->IsVPeriodic()) {
// knots=poles+2*degree-mult(1)+2
m = surf->NbVPoles() + 2*surf->VDegree() - surf->VMultiplicity(1) + 2;
}
else {
for (int i=1; i<= surf->NbVKnots(); i++)
m += surf->VMultiplicity(i);
}
TColStd_Array1OfReal k(1,m);
surf->VKnotSequence(k);
Py::List list;