bool SMDS_MeshCell::ChangeNodes(const SMDS_MeshNode* nodes[], const int theNbNodes)
{
vtkIdType npts = 0;
- vtkIdType *pts;
+ vtkIdType *pts(nullptr);
vtkIdType const *tmp(nullptr);
getGrid()->GetCellPoints( GetVtkID(), npts, tmp );
- std::copy(tmp,tmp+npts,pts);
+ pts = const_cast<vtkIdType *>(tmp);
if ( theNbNodes != npts )
{
MESSAGE("ChangeNodes problem: not the same number of nodes " << npts << " -> " << theNbNodes);
if ( vtkID > this->MaxId )
{
this->MaxId = vtkID;
- if ( vtkID >= this->Size )
+ if ( vtkID >= this->Size )
vtkCellLinks::Resize( vtkID+SMDS_Mesh::chunkSize );
}
}
if ( newCellSize != oldCellSize )
for ( int i = 0; i < oldCellSize - 1; ++i )
if ( this->Types->GetValue( i ) == VTK_EMPTY_CELL )
- newConnectivitySize -= this->CellLocations->GetValue( i+1 ) - this->CellLocations->GetValue( i );
+ newConnectivitySize -= this->Connectivity->GetCellSize( i );
vtkCellArray *newConnectivity = vtkCellArray::New();
newConnectivity->Initialize();
newFaceLocations->Squeeze();
newFaces->Squeeze();
this->SetCells( newTypes, newLocations, newConnectivity, newFaceLocations, newFaces );
+ this->CellLocations = newLocations;
newFaceLocations->Delete();
newFaces->Delete();
}
else
{
this->SetCells( newTypes, newLocations, newConnectivity, FaceLocations, Faces );
+ this->CellLocations = newLocations;
}
newTypes->Delete();
{
int iOld = idCellsNewToOld[ iNew ];
newTypes->SetValue( iNew, this->Types->GetValue( iOld ));
- vtkIdType oldLoc = this->CellLocations->GetValue( iOld );
+
+ vtkIdType oldLoc = ((vtkIdTypeArray *)(this->Connectivity->GetOffsetsArray()))->GetValue( iOld );
vtkIdType nbpts;
vtkIdType const *oldPtsCell(nullptr);
- this->Connectivity->GetCell( oldLoc, nbpts, oldPtsCell );
+ this->Connectivity->GetCell( oldLoc+iOld, nbpts, oldPtsCell );
if ((vtkIdType) pointsCell.size() < nbpts )
pointsCell.resize( nbpts );
for ( int l = 0; l < nbpts; l++ )
vtkIdType const *tmp(nullptr); // will refer to the point id's of the face
vtkIdType *pts; // will refer to the point id's of the face
this->GetCellPoints(vtkVolId, npts, tmp);
- std::copy(tmp, tmp+npts, pts);
+ pts = const_cast< vtkIdType*>( tmp );
for (int i = 0; i < npts; i++)
{
if (localClonedNodeIds.count(pts[i]))
return vtkDoubleArray::SafeDownCast( vtkDataSet::CellData->GetScalars() )->GetValue( vtkID );
return 0;
}
-