/*========================================================================= Program: Visualization Toolkit Module: vtkConvertToPolyhedra.h Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen All rights reserved. See Copyright.txt or http://www.kitware.com/Copyright.htm for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notice for more information. =========================================================================*/ /** * @class vtkConvertToPolyhedra * @brief convert 3D linear cells to vtkPolyhedra * * vtkConvertToPolyhedra is a filter that takes a vtkUnstructuredGrid as * input and produces a vtkUnstructuredGrid on output, converting 3D linear * cells such as tetrahedra, hexahedra, wedges, and pyramids into * vtkPolyhedron. * * @warning * Certain cells are skipped and not converted, this includes cells of dimension * two or less (e.g., triangles, quads, lines, verts, and so on); and higher * order cells that cannot easily be converted to vtkPolyhedra. (TODO: tessellate * high-order 3D cell faces and then use these to form the polyhedra.) * * @warning * This filter is typically used for testing. In general, processing linear cells * is preferrable to processing polyhedra due to differences in speed of processing, * and memory requirements. * * @sa * vtkUnstructuredGrid vtkPolyhedron */ #ifndef vtkConvertToPolyhedra_h #define vtkConvertToPolyhedra_h #include "vtkFiltersCoreModule.h" // For export macro #include "vtkUnstructuredGridAlgorithm.h" class VTKFILTERSCORE_EXPORT vtkConvertToPolyhedra : public vtkUnstructuredGridAlgorithm { public: ///@{ /** * Standard methods for instantiation, obtaining type information, and * printing the state of the object. */ static vtkConvertToPolyhedra* New(); void PrintSelf(ostream& os, vtkIndent indent) override; vtkTypeMacro(vtkConvertToPolyhedra, vtkUnstructuredGridAlgorithm); ///@} ///@{ /** * Indicate whether to include non-polyhedral cells in the filter output. * Non-polyhedral cells are cells which cannot be converted to polyhedra, * for example cells of dimension < 3, and higher-order cells. * If enabled, the output will contain a mix of polyhedra and non-polyhedra * cells. If disabled, only polyhedra cells will be output. By default, this * is disabled. */ vtkSetMacro(OutputAllCells, bool); vtkGetMacro(OutputAllCells, bool); vtkBooleanMacro(OutputAllCells, bool); ///@} protected: vtkConvertToPolyhedra(); ~vtkConvertToPolyhedra() override = default; // Usual data generation method int RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override; // Control output of cells bool OutputAllCells; private: vtkConvertToPolyhedra(const vtkConvertToPolyhedra&) = delete; void operator=(const vtkConvertToPolyhedra&) = delete; }; #endif