]> Creatis software - creaVtk.git/blobdiff - bbtk_creaVtk_PKG/src/bbcreaVtkBooleanOperationPolyDataFilter.cxx
#3495 Extrude normals conflict
[creaVtk.git] / bbtk_creaVtk_PKG / src / bbcreaVtkBooleanOperationPolyDataFilter.cxx
index 6cb69d57990c780c5a9780163efb5624f72ba075..7a2d9567050dfcb69e8f565d3edc8e0aa1597a20 100644 (file)
@@ -6,9 +6,11 @@
 
 // #include "vtkBooleanOperationPolyDataFilter.h"
 #include "vtkPolyDataBooleanFilter.h"
+#include "vtkPoints.h"
 
 #include "vtkCleanPolyData.h"
 #include "vtkTriangleFilter.h"
+#include "vtkFillHolesFilter.h"
 
 
 namespace bbcreaVtk
@@ -38,7 +40,7 @@ void BooleanOperationPolyDataFilter::Process()
   
        if ((bbGetInputIn1()!=NULL)  && (bbGetInputIn2()!=NULL) )
        {
-
+        
 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");
@@ -47,7 +49,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() );
@@ -60,9 +63,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();
@@ -95,52 +106,63 @@ printf("EED Warnning BooleanOperationPolyDataFilter::Process  Put this code at t
         }
  */
         
-               booleanOperation->Update();
-               bbSetOutputOut( booleanOperation->GetOutput() );
+        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() );
+            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
 }
+
 //===== 
 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
 //===== 
 void BooleanOperationPolyDataFilter::bbUserSetDefaultValues()
 {
-
 //  SET HERE THE DEFAULT INPUT/OUTPUT VALUES OF YOUR BOX 
 //    Here we initialize the input 'In' to 0
    bbSetInputIn1(NULL);
    bbSetInputIn2(NULL);
    bbSetInputOperation(0);
    bbSetInputReorientDifferenceCells(true);
-  
+   bbSetOutputOut(NULL);
 }
+
 //===== 
 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
 //===== 
 void BooleanOperationPolyDataFilter::bbUserInitializeProcessing()
 {
-
 //  THE INITIALIZATION METHOD BODY :
 //    Here does nothing 
 //    but this is where you should allocate the internal/output pointers 
-//    if any 
-
-  
+//    if any
 }
+
 //===== 
 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
 //===== 
 void BooleanOperationPolyDataFilter::bbUserFinalizeProcessing()
 {
-
 //  THE FINALIZATION METHOD BODY :
 //    Here does nothing 
 //    but this is where you should desallocate the internal/output pointers 
 //    if any
-  
 }
-}
-// EO namespace bbcreaVtk
+
+// EO namespace bbcreaVtk