VTK  9.2.5
vtkBooleanOperationPolyDataFilter.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkBooleanOperationPolyDataFilter.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
59 #ifndef vtkBooleanOperationPolyDataFilter_h
60 #define vtkBooleanOperationPolyDataFilter_h
61 
62 #include "vtkFiltersGeneralModule.h" // For export macro
63 #include "vtkPolyDataAlgorithm.h"
64 
65 #include "vtkDataSetAttributes.h" // Needed for CopyCells() method
66 
67 class vtkIdList;
68 
69 class VTKFILTERSGENERAL_EXPORT vtkBooleanOperationPolyDataFilter : public vtkPolyDataAlgorithm
70 {
71 public:
76 
78 
79  void PrintSelf(ostream& os, vtkIndent indent) override;
80 
82  {
83  VTK_UNION = 0,
85  VTK_DIFFERENCE
86  };
87 
89 
92  vtkSetClampMacro(Operation, int, VTK_UNION, VTK_DIFFERENCE);
93  vtkGetMacro(Operation, int);
94  void SetOperationToUnion() { this->SetOperation(VTK_UNION); }
95  void SetOperationToIntersection() { this->SetOperation(VTK_INTERSECTION); }
96  void SetOperationToDifference() { this->SetOperation(VTK_DIFFERENCE); }
98 
100 
104  vtkSetMacro(ReorientDifferenceCells, vtkTypeBool);
105  vtkGetMacro(ReorientDifferenceCells, vtkTypeBool);
106  vtkBooleanMacro(ReorientDifferenceCells, vtkTypeBool);
108 
110 
114  vtkSetMacro(Tolerance, double);
115  vtkGetMacro(Tolerance, double);
117 
118 protected:
121 
125  void SortPolyData(vtkPolyData* input, vtkIdList* intersectionList, vtkIdList* unionList);
126 
129 
130 private:
132  void operator=(const vtkBooleanOperationPolyDataFilter&) = delete;
133 
139  void CopyCells(vtkPolyData* in, vtkPolyData* out, int idx,
141  vtkIdList* cellIds, bool reverseCells);
142 
147  double Tolerance;
148 
153  int Operation;
154 
156 
160  vtkTypeBool ReorientDifferenceCells;
162 };
163 
164 #endif
Computes the boundary of the union, intersection, or difference volume computed from the volumes defi...
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
static vtkBooleanOperationPolyDataFilter * New()
Construct object that computes the boolean surface.
int FillInputPortInformation(int, vtkInformation *) override
Fill the input port information objects for this algorithm.
void SortPolyData(vtkPolyData *input, vtkIdList *intersectionList, vtkIdList *unionList)
Labels triangles in mesh as part of the intersection or union surface.
void SetOperationToIntersection()
Set the boolean operation to perform.
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called by the superclass.
void SetOperationToUnion()
Set the boolean operation to perform.
void SetOperationToDifference()
Set the boolean operation to perform.
helps manage arrays from multiple vtkDataSetAttributes.
list of point or cell ids
Definition: vtkIdList.h:143
a simple class to control print indentation
Definition: vtkIndent.h:119
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
Superclass for algorithms that produce only polydata as output.
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:200
int vtkTypeBool
Definition: vtkABI.h:69