X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMDS%2FSMDS_UnstructuredGrid.cxx;h=808d809a1e962063af66d0424aa6f20203782d8e;hp=b3f743a4fec5ea4242f45c266a4dcb2a397f3a03;hb=8a1ff9ba77b7b72b64b08134f941b56aac80ff55;hpb=004925bca40d46c25cf9cc837193335163c2d44f diff --git a/src/SMDS/SMDS_UnstructuredGrid.cxx b/src/SMDS/SMDS_UnstructuredGrid.cxx index b3f743a4f..808d809a1 100644 --- a/src/SMDS/SMDS_UnstructuredGrid.cxx +++ b/src/SMDS/SMDS_UnstructuredGrid.cxx @@ -155,26 +155,33 @@ void SMDS_UnstructuredGrid::compactGrid(std::vector& idNodesOldToNew, int n newPoints->SetDataType(VTK_DOUBLE); newPoints->SetNumberOfPoints(newNodeSize); if (newNodeSize) - { - // rnv: to fix bug "21125: EDF 1233 SMESH: Degradation of precision in a test case for quadratic conversion" - // using double type for storing coordinates of nodes instead float. - int oldNodeSize = idNodesOldToNew.size(); + { + // rnv: to fix bug "21125: EDF 1233 SMESH: Degradation of precision in a test case for quadratic conversion" + // using double type for storing coordinates of nodes instead float. + int oldNodeSize = idNodesOldToNew.size(); - int i = 0; - while ( i < oldNodeSize ) - { - // skip a hole if any - while ( i < oldNodeSize && idNodesOldToNew[i] < 0 ) - ++i; - int startBloc = i; - // look for a block end - while ( i < oldNodeSize && idNodesOldToNew[i] >= 0 ) - ++i; - int endBloc = i; - copyNodes(newPoints, idNodesOldToNew, alreadyCopied, startBloc, endBloc); - } - newPoints->Squeeze(); + int i = 0; + while ( i < oldNodeSize ) + { + // skip a hole if any + while ( i < oldNodeSize && idNodesOldToNew[i] < 0 ) + ++i; + int startBloc = i; + // look for a block end + while ( i < oldNodeSize && idNodesOldToNew[i] >= 0 ) + ++i; + int endBloc = i; + copyNodes(newPoints, idNodesOldToNew, alreadyCopied, startBloc, endBloc); } + newPoints->Squeeze(); + } + + if (1/*newNodeSize*/) + { + this->SetPoints(newPoints); + } + newPoints->Delete(); + // --- create new compacted Connectivity, Locations and Types @@ -218,11 +225,6 @@ void SMDS_UnstructuredGrid::compactGrid(std::vector& idNodesOldToNew, int n } newConnectivity->Squeeze(); - if (1/*newNodeSize*/) - { - this->SetPoints(newPoints); - } - if (vtkDoubleArray* diameters = vtkDoubleArray::SafeDownCast( vtkDataSet::CellData->GetScalars() )) // Balls { @@ -282,7 +284,6 @@ void SMDS_UnstructuredGrid::compactGrid(std::vector& idNodesOldToNew, int n this->SetCells(newTypes, newLocations, newConnectivity, FaceLocations, Faces); } - newPoints->Delete(); newTypes->Delete(); newLocations->Delete(); newConnectivity->Delete();