]> Creatis software - creaVtk.git/blobdiff - bbtk_creaVtk_PKG/src/bbcreaVtkBooleanOperationPolyDataFilter.cxx
#3493 MeshManager
[creaVtk.git] / bbtk_creaVtk_PKG / src / bbcreaVtkBooleanOperationPolyDataFilter.cxx
index c1d7192e642d0df74cb1a40c03fdec9d38341661..564f379457259f14e0509e726a0d9f01d4a8155c 100644 (file)
@@ -10,6 +10,8 @@
 
 #include "vtkCleanPolyData.h"
 #include "vtkTriangleFilter.h"
+#include "vtkFillHolesFilter.h"
+
 
 namespace bbcreaVtk
 {
@@ -42,12 +44,6 @@ void BooleanOperationPolyDataFilter::Process()
 
        if ((bbGetInputIn1()!=NULL)  && (bbGetInputIn2()!=NULL) )
        {
-
-        vtkPoints               *points1         = bbGetInputIn1()->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() );
-
         
 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");
@@ -57,7 +53,8 @@ printf("EED Warnning BooleanOperationPolyDataFilter::Process  Put this code at t
 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 *clean1 = vtkCleanPolyData::New();
                vtkCleanPolyData *clean2 = vtkCleanPolyData::New();
                clean1->SetInputData( bbGetInputIn1() );
                clean2->SetInputData( bbGetInputIn2() );
@@ -70,9 +67,17 @@ printf("EED Warnning BooleanOperationPolyDataFilter::Process  Put this code at t
                triangle1->Update();
                triangle2->Update();
 
+//  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();
+
         booleanOperation->SetInputData(0, triangle1->GetOutput() );
         booleanOperation->SetInputData(1, triangle2->GetOutput() );
+
+//        booleanOperation->SetInputData(0, bbGetInputIn1() );
+//        booleanOperation->SetInputData(1, bbGetInputIn2() );
+
         if (bbGetInputOperation()==0 )
         {
             booleanOperation->SetOperModeToUnion();
@@ -106,19 +111,24 @@ printf("EED Warnning BooleanOperationPolyDataFilter::Process  Put this code at t
  */
         
         booleanOperation->Update();
+
         vtkPoints *points = booleanOperation->GetOutput()->GetPoints();
         if (points!=NULL)
         {
-            bbSetOutputOut( booleanOperation->GetOutput() );
+            vtkFillHolesFilter *fillHolesFilter = vtkFillHolesFilter::New();
+            fillHolesFilter->SetInputData( booleanOperation->GetOutput() );
+            fillHolesFilter->SetHoleSize(100000.0);
+            fillHolesFilter->Update();
+            bbSetOutputOut( fillHolesFilter->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" );
 }
 
 //=====