[Part] BSplineSurface: fix KnotSequence for periodic BSpline surfaces
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user