]> Creatis software - creaVtk.git/blobdiff - bbtk_creaVtk_PKG/src/bbcreaVtkBooleanOperationPolyDataFilter.cxx
#3493 MeshManager
[creaVtk.git] / bbtk_creaVtk_PKG / src / bbcreaVtkBooleanOperationPolyDataFilter.cxx
index 9017e5bdcb66b9ef2683d8d05139f6fe920a18d1..c1d7192e642d0df74cb1a40c03fdec9d38341661 100644 (file)
@@ -4,7 +4,10 @@
 #include "bbcreaVtkBooleanOperationPolyDataFilter.h"
 #include "bbcreaVtkPackage.h"
 
-#include "vtkBooleanOperationPolyDataFilter.h"
+// #include "vtkBooleanOperationPolyDataFilter.h"
+#include "vtkPolyDataBooleanFilter.h"
+#include "vtkPoints.h"
+
 #include "vtkCleanPolyData.h"
 #include "vtkTriangleFilter.h"
 
@@ -33,9 +36,19 @@ void BooleanOperationPolyDataFilter::Process()
 //    bbSetOutputOut( bbGetInputIn() );
 //    std::cout << "Output value = " <<bbGetOutputOut() << std::endl;
   
+    printf("EED  BooleanOperationPolyDataFilter::Process Start In1=%p     In2=%p\n", bbGetInputIn1(), bbGetInputIn2() );
+
+    
+
        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");
 printf("EED Warnning BooleanOperationPolyDataFilter::Process  Put this code at the end of CreateMesh.. or create 2 new boxes\n");
@@ -57,67 +70,93 @@ printf("EED Warnning BooleanOperationPolyDataFilter::Process  Put this code at t
                triangle1->Update();
                triangle2->Update();
 
+        vtkPolyDataBooleanFilter *booleanOperation = vtkPolyDataBooleanFilter::New();
+        booleanOperation->SetInputData(0, triangle1->GetOutput() );
+        booleanOperation->SetInputData(1, triangle2->GetOutput() );
+        if (bbGetInputOperation()==0 )
+        {
+            booleanOperation->SetOperModeToUnion();
+        }
+        if (bbGetInputOperation()==1 )
+        {
+            booleanOperation->SetOperModeToIntersection();
+        }
+        if (bbGetInputOperation()==2 )
+        {
+            booleanOperation->SetOperModeToDifference();
+        }
+
+/*
                vtkBooleanOperationPolyDataFilter *booleanOperation = vtkBooleanOperationPolyDataFilter::New();
                booleanOperation->SetInputData(0, triangle1->GetOutput() );
                booleanOperation->SetInputData(1, triangle2->GetOutput() );
-
                if (bbGetInputOperation()==0 )
                {
                        booleanOperation->SetOperationToUnion();
                }
                if (bbGetInputOperation()==1 )
                {
-                       booleanOperation->SetOperationToIntersection();
+            booleanOperation->SetOperationToIntersection();
                }
                if (bbGetInputOperation()==2 )
                {
-                       booleanOperation->SetOperationToDifference();  
-               }
-               booleanOperation->Update();
-               bbSetOutputOut( booleanOperation->GetOutput() );
+            booleanOperation->SetOperationToDifference();
+            booleanOperation->SetReorientDifferenceCells( bbGetInputReorientDifferenceCells() );
+        }
+ */
+        
+        booleanOperation->Update();
+        vtkPoints *points = booleanOperation->GetOutput()->GetPoints();
+        if (points!=NULL)
+        {
+            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" );
 }
+
 //===== 
 // 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