X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=bbtk_creaVtk_PKG%2Fsrc%2FbbcreaVtkBooleanOperationPolyDataFilter.cxx;h=f610d86ac5c7b249268a24a67a14d9acea0f8e44;hb=11f8c0afac719608c751486ff9a5bedf960192ed;hp=c1d7192e642d0df74cb1a40c03fdec9d38341661;hpb=1b751726e6e277dc63258520d3c243f705d1b929;p=creaVtk.git diff --git a/bbtk_creaVtk_PKG/src/bbcreaVtkBooleanOperationPolyDataFilter.cxx b/bbtk_creaVtk_PKG/src/bbcreaVtkBooleanOperationPolyDataFilter.cxx index c1d7192..f610d86 100644 --- a/bbtk_creaVtk_PKG/src/bbcreaVtkBooleanOperationPolyDataFilter.cxx +++ b/bbtk_creaVtk_PKG/src/bbcreaVtkBooleanOperationPolyDataFilter.cxx @@ -10,6 +10,8 @@ #include "vtkCleanPolyData.h" #include "vtkTriangleFilter.h" +#include "vtkFillHolesFilter.h" + namespace bbcreaVtk { @@ -36,43 +38,22 @@ void BooleanOperationPolyDataFilter::Process() // bbSetOutputOut( bbGetInputIn() ); // std::cout << "Output value = " <GetPoints(); - vtkPoints *points2 = bbGetInputIn2()->GetPoints(); - printf("EED BooleanOperationPolyDataFilter::Process Number of points 1 %ld\n", points1->GetNumberOfPoints() ); - printf("EED BooleanOperationPolyDataFilter::Process Number of points 2 %ld\n", points2->GetNumberOfPoints() ); +// vtkPolyDataBooleanFilter is not a vtk filter (this one yes: vtkBooleanOperationPolyDataFilter ) +// https://github.com/zippy84/vtkbool + // vtkPolyDataBooleanFilter is a local code creaVtk lib + vtkPolyDataBooleanFilter *booleanOperation = vtkPolyDataBooleanFilter::New(); - -printf("EED Warnning BooleanOperationPolyDataFilter::Process Put this code at the end of CreateMesh.. or create 2 new boxes\n"); -printf("EED Warnning BooleanOperationPolyDataFilter::Process Put this code at the end of CreateMesh.. or create 2 new boxes\n"); -printf("EED Warnning BooleanOperationPolyDataFilter::Process Put this code at the end of CreateMesh.. or create 2 new boxes\n"); -printf("EED Warnning BooleanOperationPolyDataFilter::Process Put this code at the end of CreateMesh.. or create 2 new boxes\n"); -printf("EED Warnning BooleanOperationPolyDataFilter::Process Put this code at the end of CreateMesh.. or create 2 new boxes\n"); -printf("EED Warnning BooleanOperationPolyDataFilter::Process Put this code at the end of CreateMesh.. or create 2 new boxes\n"); -printf("EED Warnning BooleanOperationPolyDataFilter::Process Put this code at the end of CreateMesh.. or create 2 new boxes\n"); -printf("EED Warnning BooleanOperationPolyDataFilter::Process Put this code at the end of CreateMesh.. or create 2 new boxes\n"); - vtkCleanPolyData *clean1 = vtkCleanPolyData::New(); - vtkCleanPolyData *clean2 = vtkCleanPolyData::New(); - clean1->SetInputData( bbGetInputIn1() ); - clean2->SetInputData( bbGetInputIn2() ); - clean1->Update(); - clean2->Update(); - vtkTriangleFilter *triangle1 = vtkTriangleFilter::New(); - vtkTriangleFilter *triangle2 = vtkTriangleFilter::New(); - triangle1->SetInputData( clean1->GetOutput() ); - triangle2->SetInputData( clean2->GetOutput() ); - triangle1->Update(); - triangle2->Update(); +// booleanOperation->SetInputData(0, triangle1->GetOutput() ); +// booleanOperation->SetInputData(1, triangle2->GetOutput() ); + + booleanOperation->SetInputData(0, bbGetInputIn1() ); + booleanOperation->SetInputData(1, bbGetInputIn2() ); - vtkPolyDataBooleanFilter *booleanOperation = vtkPolyDataBooleanFilter::New(); - booleanOperation->SetInputData(0, triangle1->GetOutput() ); - booleanOperation->SetInputData(1, triangle2->GetOutput() ); if (bbGetInputOperation()==0 ) { booleanOperation->SetOperModeToUnion(); @@ -106,19 +87,33 @@ printf("EED Warnning BooleanOperationPolyDataFilter::Process Put this code at t */ booleanOperation->Update(); + vtkPoints *points = booleanOperation->GetOutput()->GetPoints(); if (points!=NULL) { +// vtkFillHolesFilter *fillHolesFilter = vtkFillHolesFilter::New(); +// fillHolesFilter->SetInputData( booleanOperation->GetOutput() ); +// fillHolesFilter->SetHoleSize(100000.0); +// fillHolesFilter->Update(); +// bbSetOutputOut( fillHolesFilter->GetOutput() ); + + /* + *Added boxes(triangleFilter and CleanPolyData) to handle this outside the box + * + vtkTriangleFilter *triangleEnd = vtkTriangleFilter::New(); + vtkCleanPolyData *cleanEnd = vtkCleanPolyData::New(); + bbSetOutputOut( cleanEnd->GetOutput() ); + */ + bbSetOutputOut( booleanOperation->GetOutput() ); } else { bbSetOutputOut( NULL ); } // if points!=NULL + } else { bbSetOutputOut( NULL ); printf("EED Warnning! BooleanOperationPolyDataFilter::Process vtkPolyData In1 or In2 is EMPTY\n"); } // if In1 In2 != NULL - - printf("EED BooleanOperationPolyDataFilter::Process End \n" ); } //=====