X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FmaracasVisuLib%2Fsrc%2Finterface%2FwxWindows%2Fwidgets%2FvtkClosePolyData.cxx;h=06e631622e47d38cd0d7b43053dc2f6bc02acc16;hb=470223c6fe3a156ce3ffea50da88dc4d2aba6115;hp=397295f78e440712ac7b19b98653a4b1e9337378;hpb=4645482ed1eae5aaabdd813b784acafd13c41179;p=creaMaracasVisu.git diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/vtkClosePolyData.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/vtkClosePolyData.cxx index 397295f..06e6316 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/vtkClosePolyData.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/vtkClosePolyData.cxx @@ -42,7 +42,6 @@ =========================================================================*/ #include "vtkClosePolyData.h" -#include "vtkObjectFactory.h" #include "vtkPolyData.h" #include "vtkFeatureEdges.h" #include "vtkStripper.h" @@ -54,9 +53,12 @@ //EED 2017-01-01 Migration VTK7 #if VTK_MAJOR_VERSION <= 5 -vtkCxxRevisionMacro(vtkClosePolyData, "$Revision: 1.3 $"); + vtkCxxRevisionMacro(vtkClosePolyData, "$Revision: 1.3 $"); #else - //... + #include "vtkDataObject.h" + #include "vtkInformation.h" + #include "vtkDemandDrivenPipeline.h" + #include "vtkInformationVector.h" #endif vtkStandardNewMacro(vtkClosePolyData); @@ -111,7 +113,7 @@ vtkClosePolyData::~vtkClosePolyData() append->AddInput( input ); append->AddInput( triangle->GetOutput()); triangle->Delete(); - + vtkInformation vtkCleanPolyData *clean = vtkCleanPolyData::New(); clean->SetInput( append->GetOutput()); append->Delete(); @@ -124,12 +126,61 @@ vtkClosePolyData::~vtkClosePolyData() } #else - int vtkClosePolyData::ProcessRequest( vtkInformation *request, - vtkInformationVector **inputVector, - vtkInformationVector *outputVector) - { -printf("EED Warning ERROR ! vtkClosePolyData::ProcessRequest not implemented VTK7 migration") - } + +int vtkClosePolyData::RequestData( vtkInformation *vtkNotUsed(request), vtkInformationVector **inputVector, vtkInformationVector *outputVector) +{ + // get the info objects + vtkInformation *inInfo = inputVector[0]->GetInformationObject(0); + vtkInformation *outInfo = outputVector->GetInformationObject(0); + // get the input and output + vtkPolyData *input = vtkPolyData::SafeDownCast( inInfo->Get(vtkDataObject::DATA_OBJECT())); + vtkPolyData *output = vtkPolyData::SafeDownCast( outInfo->Get(vtkDataObject::DATA_OBJECT())); + //#closing the polydata see : close.py for details + + vtkFeatureEdges *boundary = vtkFeatureEdges::New(); + boundary->SetInputData( input ); + boundary->BoundaryEdgesOn (); + boundary->FeatureEdgesOff (); + boundary->NonManifoldEdgesOff (); + boundary->ManifoldEdgesOff (); + // boundary->ColoringOff (); + boundary->Update(); + + vtkStripper *stripper = vtkStripper::New(); + stripper->SetInputConnection( boundary->GetOutputPort() ); + stripper->Update(); //important + + vtkPolyData *pd = vtkPolyData::New(); + pd->SetPoints ( stripper->GetOutput()->GetPoints() ); + pd->SetPolys ( stripper->GetOutput()->GetLines() ); + //vtkGLUTesselatorTriangleFilter *triangle = vtkGLUTesselatorTriangleFilter::New(); + + vtkTriangleFilter *triangle = vtkTriangleFilter::New(); + triangle->SetInputData( pd ); + triangle->Update( ); + + vtkAppendPolyData *append = vtkAppendPolyData::New(); + append->AddInputData( input ); + append->AddInputConnection( triangle->GetOutputPort() ); + append->Update(); + + vtkCleanPolyData *clean = vtkCleanPolyData::New(); + clean->SetInputConnection( append->GetOutputPort()); + // When all optimizations are complete, this squeeze will be unecessary. + // (But it does not seem to cost much.) + clean->Update(); //important before ShallowCopy + + output->ShallowCopy( clean->GetOutput() ); + + append -> Delete(); + clean -> Delete(); + boundary -> Delete(); + stripper -> Delete(); + pd -> Delete(); + triangle -> Delete(); + + return 1; +} #endif