X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcpPlugins%2FPlugins%2FBasicFilters%2FMarchingCubes.cxx;h=cca186c79f44bc03ebeefc8733a4d247f2203bd5;hb=d1d816d1eaf980d5cd266798b8f7a0bbb089a383;hp=38f7dbc848c987daa95e1b45a69fe58d1cdc7275;hpb=b23970017af98ef6617ddf40f225d4d15fa65854;p=cpPlugins.git diff --git a/lib/cpPlugins/Plugins/BasicFilters/MarchingCubes.cxx b/lib/cpPlugins/Plugins/BasicFilters/MarchingCubes.cxx index 38f7dbc..cca186c 100644 --- a/lib/cpPlugins/Plugins/BasicFilters/MarchingCubes.cxx +++ b/lib/cpPlugins/Plugins/BasicFilters/MarchingCubes.cxx @@ -9,8 +9,7 @@ // ------------------------------------------------------------------------- cpPlugins::BasicFilters::MarchingCubes:: MarchingCubes( ) - : Superclass( ), - m_Algorithm( NULL ) + : Superclass( ) { this->m_ClassName = "cpPlugins::BasicFilters::MarchingCubes"; this->m_ClassCategory = "ImageToMeshFilter"; @@ -28,8 +27,6 @@ MarchingCubes( ) cpPlugins::BasicFilters::MarchingCubes:: ~MarchingCubes( ) { - if( this->m_Algorithm != NULL ) - this->m_Algorithm->Delete( ); } // ------------------------------------------------------------------------- @@ -41,39 +38,39 @@ _GenerateData( ) this->GetInput< cpPlugins::Interface::Image >( 0 ); if( image == NULL ) return( "MarchingCubes: Input data is not a valid image." ); - vtkImageData* vtk_image = image->GetVTKImageData( ); + vtkImageData* vtk_image = image->GetVTK< vtkImageData >( ); if( vtk_image == NULL ) return( "MarchingCubes: Input does not have a valid VTK conversion." ); - if( this->m_Algorithm != NULL ) - this->m_Algorithm->Delete( ); - std::vector< double > values; this->m_Parameters.GetValueAsRealList( values, "Thresholds" ); + vtkPolyData* pd = NULL; if( vtk_image->GetDataDimension( ) == 2 ) { - vtkMarchingSquares* ms = vtkMarchingSquares::New( ); + vtkMarchingSquares* ms = this->_CreateVTK< vtkMarchingSquares >( ); ms->SetInputData( vtk_image ); for( unsigned int i = 0; i < values.size( ); ++i ) ms->SetValue( i, values[ i ] ); - this->m_Algorithm = ms; + ms->Update( ); + pd = ms->GetOutput( ); } else if( vtk_image->GetDataDimension( ) == 3 ) { - vtkMarchingCubes* mc = vtkMarchingCubes::New( ); + vtkMarchingCubes* mc = this->_CreateVTK< vtkMarchingCubes >( ); + mc->ComputeNormalsOff( ); mc->SetInputData( vtk_image ); for( unsigned int i = 0; i < values.size( ); ++i ) mc->SetValue( i, values[ i ] ); - this->m_Algorithm = mc; + mc->Update( ); + pd = mc->GetOutput( ); } else return( "MarchingCubes: Input data does not have a valid dimension." ); // Execute filter - this->m_Algorithm->Update( ); cpPlugins::Interface::Mesh* out = this->GetOutput< cpPlugins::Interface::Mesh >( 0 ); - out->SetVTKMesh( this->m_Algorithm->GetOutput( ) ); + out->SetVTK( pd ); return( "" ); }