// bbSetOutputOut( bbGetInputIn() );
// std::cout << "Output value = " <<bbGetOutputOut() << std::endl;
- 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");
-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");
-*/
+ if ((bbGetInputOperation()>=0) && (bbGetInputOperation()<=2)) // 0:Union 1:Intersection 2:Difference
+ {
-/*
- 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();
-*/
- //TRIANGLE FILTER NOT NEEDED, this can handle non triangle meshes.
-
-
-// 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();
- }
- if (bbGetInputOperation()==1 )
+ if ((bbGetInputIn1()!=NULL) && (bbGetInputIn2()!=NULL) )
{
- booleanOperation->SetOperModeToIntersection();
- }
- if (bbGetInputOperation()==2 )
- {
- booleanOperation->SetOperModeToDifference();
- }
-
+ //TRIANGLE FILTER NOT NEEDED, this can handle non triangle meshes.
+ // 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, bbGetInputIn1() );
+ booleanOperation->SetInputData(1, bbGetInputIn2() );
+ 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();
- }
- if (bbGetInputOperation()==2 )
- {
- booleanOperation->SetOperationToDifference();
- booleanOperation->SetReorientDifferenceCells( bbGetInputReorientDifferenceCells() );
- }
+ vtkBooleanOperationPolyDataFilter *booleanOperation = vtkBooleanOperationPolyDataFilter::New();
+ booleanOperation->SetInputData(0, triangle1->GetOutput() );
+ booleanOperation->SetInputData(1, triangle2->GetOutput() );
+ if (bbGetInputOperation()==0 )
+ {
+ booleanOperation->SetOperationToUnion();
+ }
+ if (bbGetInputOperation()==1 )
+ {
+ booleanOperation->SetOperationToIntersection();
+ }
+ if (bbGetInputOperation()==2 )
+ {
+ booleanOperation->SetOperationToDifference();
+ booleanOperation->SetReorientDifferenceCells( bbGetInputReorientDifferenceCells() );
+ }
*/
-
- 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();
- //triangleEnd->SetInputData( booleanOperation->GetOutput() );
- //triangleEnd->Update();
-
- vtkCleanPolyData *cleanEnd = vtkCleanPolyData::New();
- cleanEnd->SetInputData( booleanOperation->GetOutput() );
- cleanEnd->Update();
- bbSetOutputOut( cleanEnd->GetOutput() );
- */
-
- 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() );
+ /*
+ *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 );
- } // if points!=NULL
-
- } else {
+ printf("EED Warnning! BooleanOperationPolyDataFilter::Process vtkPolyData In1 or In2 is EMPTY\n");
+ } // if In1 In2 != NULL
+ } else if ( bbGetInputOperation()==3) // 3:Replace
+ {
+ bbSetOutputOut( bbGetInputIn2() );
+ } else {
bbSetOutputOut( NULL );
- printf("EED Warnning! BooleanOperationPolyDataFilter::Process vtkPolyData In1 or In2 is EMPTY\n");
- } // if In1 In2 != NULL
+ } // if Operation
}
//=====