X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcpInstances%2FDataObjects%2FMesh.cxx;fp=lib%2FcpInstances%2FDataObjects%2FMesh.cxx;h=0000000000000000000000000000000000000000;hb=2e142df11d6f312a2a2b5097b8da73571ed523e8;hp=21183011a0ca8a0f8018b98e247fe119a4a2346f;hpb=61b3659afe961ed248f30e26f9ca8f28fcfafddc;p=cpPlugins.git diff --git a/lib/cpInstances/DataObjects/Mesh.cxx b/lib/cpInstances/DataObjects/Mesh.cxx deleted file mode 100644 index 2118301..0000000 --- a/lib/cpInstances/DataObjects/Mesh.cxx +++ /dev/null @@ -1,180 +0,0 @@ -#include - -#include -#include -#include -#include -#include - -// ------------------------------------------------------------------------- -void cpInstances::DataObjects::Mesh:: -SetITK( itk::LightObject* o ) -{ - this->Superclass::SetITK( o ); - cpPlugins_Demangle_Mesh_AllMeshes_1( o, _ITK_2_VTK ) - { - this->m_VTK = NULL; - } - this->Modified( ); -} - -// ------------------------------------------------------------------------- -void cpInstances::DataObjects::Mesh:: -SetVTK( vtkObjectBase* o ) -{ - vtkPolyData* mesh = dynamic_cast< vtkPolyData* >( o ); - if( mesh == NULL ) - { - this->m_ITK = NULL; - this->Modified( ); - return; - - } // fi - - if( this->m_VTK.GetPointer( ) != mesh ) - { - this->m_VTK = mesh; -#ifdef cpPlugins_PROCESS_DIMS_3 - typedef itk::Mesh< double, 3 > _TMesh; - typedef _TMesh::CellType _TCell; - typedef _TCell::CellAutoPointer _TCellAutoPointer; - typedef itk::LineCell< _TCell > _TLine; - typedef itk::TriangleCell< _TCell > _TTriangle; - typedef itk::PolygonCell< _TCell > _TPolygon; - - // Copy points - _TMesh::Pointer imesh = _TMesh::New( ); - double point[ 3 ]; - for( long i = 0; i < mesh->GetNumberOfPoints( ); ++i ) - { - mesh->GetPoint( i, point ); - _TMesh::PointType ipoint; - ipoint[ 0 ] = point[ 0 ]; - ipoint[ 1 ] = point[ 1 ]; - ipoint[ 2 ] = point[ 2 ]; - imesh->SetPoint( i, ipoint ); - - } // rof - - // Copy cells - vtkCellArray* arrays[ 4 ]; - arrays[ 0 ] = mesh->GetLines( ); - arrays[ 1 ] = mesh->GetPolys( ); - arrays[ 2 ] = NULL; // TODO: mesh->GetStrips( ); - arrays[ 3 ] = mesh->GetVerts( ); - - for( unsigned int c = 0; c < 4; c++ ) - { - if( arrays[ c ] != NULL ) - { - vtkSmartPointer< vtkIdList > ids = - vtkSmartPointer< vtkIdList >::New( ); - arrays[ c ]->InitTraversal( ); - while( arrays[ c ]->GetNextCell( ids ) == 1 ) - { - long nPoints = ids->GetNumberOfIds( ); - _TCellAutoPointer icell; - if( nPoints == 2 ) - { - icell.TakeOwnership( new _TLine ); - icell->SetPointId( 0, ids->GetId( 0 ) ); - icell->SetPointId( 1, ids->GetId( 1 ) ); - } - else if( nPoints == 3 ) - { - icell.TakeOwnership( new _TTriangle ); - icell->SetPointId( 0, ids->GetId( 0 ) ); - icell->SetPointId( 1, ids->GetId( 1 ) ); - icell->SetPointId( 2, ids->GetId( 2 ) ); - } - else if( nPoints > 3 ) - { - _TPolygon* polygon = new _TPolygon( ); - for( long j = 0; j < nPoints; ++j ) - polygon->AddPointId( ids->GetId( j ) ); - icell.TakeOwnership( polygon ); - - } // fi - imesh->SetCell( imesh->GetNumberOfCells( ), icell ); - - } // elihw - - } // fi - - } // rof - this->m_ITK = imesh; -#endif // cpPlugins_PROCESS_DIMS_3 - this->Modified( ); - - } // fi -} - -// ------------------------------------------------------------------------- -cpInstances::DataObjects::Mesh:: -Mesh( ) - : Superclass( ) -{ -} - -// ------------------------------------------------------------------------- -cpInstances::DataObjects::Mesh:: -~Mesh( ) -{ -} - -// ------------------------------------------------------------------------- -template< class _TMesh > -void cpInstances::DataObjects::Mesh:: -_ITK_2_VTK( _TMesh* mesh ) -{ - long numPoints = mesh->GetNumberOfPoints( ); - if( numPoints == 0 ) - return; - - vtkSmartPointer< vtkPoints > vpoints = - vtkSmartPointer< vtkPoints >::New( ); - vpoints->SetNumberOfPoints( numPoints ); - auto points = mesh->GetPoints( ); - - // Copy points - vtkIdType VTKId = 0; - std::map< vtkIdType, long > IndexMap; - for( auto i = points->Begin( ); i != points->End( ); ++i, VTKId++ ) - { - IndexMap[ VTKId ] = i->Index( ); - if( _TMesh::PointDimension == 2 ) - vpoints->SetPoint( - VTKId, - i->Value( )[ 0 ], i->Value( )[ 1 ], 0 - ); - else if( _TMesh::PointDimension == 3 ) - vpoints->SetPoint( - VTKId, - i->Value( )[ 0 ], i->Value( )[ 1 ], i->Value( )[ 2 ] - ); - - } // rof - - // Copy cells - vtkSmartPointer< vtkCellArray > vcells = - vtkSmartPointer< vtkCellArray >::New( ); - auto cells = mesh->GetCells( ); - for( auto j = cells->Begin( ); j != cells->End( ); ++j ) - { - auto cell = j->Value( ); - vcells->InsertNextCell( cell->GetNumberOfPoints( ) ); - for( auto k = cell->PointIdsBegin( ); k != cell->PointIdsEnd( ); ++k ) - vcells->InsertCellPoint( IndexMap[ *k ] ); - - } // rof - - // Final assignations - vtkSmartPointer< vtkPolyData > vmesh = - vtkSmartPointer< vtkPolyData >::New( ); - vmesh->SetPoints( vpoints ); - vmesh->SetPolys( vcells ); - this->m_VTK = vmesh; - this->Modified( ); -} - -// eof - $RCSfile$