Skip to content

Commit 8d0c44f

Browse files
jourdainkwrobot
authored andcommitted
Merge topic 'htg-plane-cutter'
2b7bc41 FIX: HTG/PlaceCutter some code cleanup Acked-by: Kitware Robot <[email protected]> Merge-request: !5359
2 parents 3206cc6 + 2b7bc41 commit 8d0c44f

File tree

1 file changed

+29
-8
lines changed

1 file changed

+29
-8
lines changed

Filters/HyperTree/vtkHyperTreeGridPlaneCutter.cxx

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,12 @@ vtkHyperTreeGridPlaneCutter::~vtkHyperTreeGridPlaneCutter()
9595
this->Cutter->Delete();
9696
this->Cutter = nullptr;
9797
}
98+
99+
if ( this->SelectedCells )
100+
{
101+
this->SelectedCells->Delete();
102+
this->SelectedCells = nullptr;
103+
}
98104
}
99105

100106
//----------------------------------------------------------------------------
@@ -197,10 +203,14 @@ int vtkHyperTreeGridPlaneCutter::ProcessTrees( vtkHyperTreeGrid* input,
197203
}
198204

199205
// Retrieve input point data
200-
this->InData = input->GetPointData();
206+
this->InData = input->GetPointData();
201207

202208
// Retrieve material mask
203-
this->InMask = input->HasMask() ? input->GetMask() : 0;
209+
this->InMask = input->HasMask() ? input->GetMask() : nullptr;
210+
211+
// Reset PolyData
212+
this->Points->SetNumberOfPoints(0);
213+
this->Cells->SetNumberOfCells(0);
204214

205215
// Compute cut on dual or primal input depending on specification
206216
if ( this->Dual )
@@ -210,11 +220,17 @@ int vtkHyperTreeGridPlaneCutter::ProcessTrees( vtkHyperTreeGrid* input,
210220
this->OutData->CopyAllocate( this->InData );
211221

212222
// Storage for leaf indices
213-
this->Leaves = vtkIdList::New();
223+
if (this->Leaves == nullptr)
224+
{
225+
this->Leaves = vtkIdList::New();
226+
}
214227
this->Leaves->SetNumberOfIds( 8 );
215228

216229
// Initialize storage for dual geometry
217-
this->Centers = vtkPoints::New();
230+
if (this->Centers == nullptr)
231+
{
232+
this->Centers = vtkPoints::New();
233+
}
218234
this->Centers->SetNumberOfPoints( 8 );
219235

220236
// Convert plane parameters into normal/origin specification
@@ -234,15 +250,21 @@ int vtkHyperTreeGridPlaneCutter::ProcessTrees( vtkHyperTreeGrid* input,
234250
plane->SetNormal( this->Plane[0], this->Plane[1], this->Plane[2] );
235251

236252
// Initialize plane cutter
237-
this->Cutter = vtkCutter::New();
253+
if (this->Cutter == nullptr)
254+
{
255+
this->Cutter = vtkCutter::New();
256+
}
238257
this->Cutter->GenerateTrianglesOff();
239258
this->Cutter->SetCutFunction( plane );
240259

241260
// Clean up
242261
plane->Delete();
243262

244263
// Create storage to keep track of selected cells
245-
this->SelectedCells = vtkBitArray::New();
264+
if (this->SelectedCells == nullptr)
265+
{
266+
this->SelectedCells = vtkBitArray::New();
267+
}
246268
vtkIdType numCells = input->GetNumberOfVertices();
247269
this->SelectedCells->SetNumberOfTuples( numCells );
248270
for ( vtkIdType i = 0; i < numCells; ++ i )
@@ -277,6 +299,7 @@ int vtkHyperTreeGridPlaneCutter::ProcessTrees( vtkHyperTreeGrid* input,
277299

278300
// Clean up
279301
this->SelectedCells->Delete();
302+
this->SelectedCells = nullptr;
280303
} // if ( this->Dual )
281304
else
282305
{
@@ -309,8 +332,6 @@ int vtkHyperTreeGridPlaneCutter::ProcessTrees( vtkHyperTreeGrid* input,
309332
cleaner->Update();
310333
output->ShallowCopy( cleaner->GetOutput() );
311334
output->Squeeze();
312-
313-
// Clean up
314335
cleaner->Delete();
315336
return 1;
316337
}

0 commit comments

Comments
 (0)