/*========================================================================= Program: Visualization Toolkit Module: vtkExtractUnstructuredGrid.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 vtkExtractUnstructuredGrid * @brief extract subset of unstructured grid geometry * * vtkExtractUnstructuredGrid is a general-purpose filter to * extract geometry (and associated data) from an unstructured grid * dataset. The extraction process is controlled by specifying a range * of point ids, cell ids, or a bounding box (referred to as "Extent"). * Those cells laying within these regions are sent to the output. * The user has the choice of merging coincident points (Merging is on) * or using the original point set (Merging is off). * * @warning * If merging is off, the input points are copied through to the * output. This means unused points may be present in the output data. * If merging is on, then coincident points with different point attribute * values are merged. * * @sa * vtkImageDataGeometryFilter vtkStructuredGridGeometryFilter * vtkRectilinearGridGeometryFilter * vtkExtractGeometry vtkExtractVOI */ #ifndef vtkExtractUnstructuredGrid_h #define vtkExtractUnstructuredGrid_h #include "vtkFiltersExtractionModule.h" // For export macro #include "vtkUnstructuredGridAlgorithm.h" class vtkIncrementalPointLocator; class VTKFILTERSEXTRACTION_EXPORT vtkExtractUnstructuredGrid : public vtkUnstructuredGridAlgorithm { public: vtkTypeMacro(vtkExtractUnstructuredGrid,vtkUnstructuredGridAlgorithm); void PrintSelf(ostream& os, vtkIndent indent); /** * Construct with all types of clipping turned off. */ static vtkExtractUnstructuredGrid *New(); //@{ /** * Turn on/off selection of geometry by point id. */ vtkSetMacro(PointClipping,int); vtkGetMacro(PointClipping,int); vtkBooleanMacro(PointClipping,int); //@} //@{ /** * Turn on/off selection of geometry by cell id. */ vtkSetMacro(CellClipping,int); vtkGetMacro(CellClipping,int); vtkBooleanMacro(CellClipping,int); //@} //@{ /** * Turn on/off selection of geometry via bounding box. */ vtkSetMacro(ExtentClipping,int); vtkGetMacro(ExtentClipping,int); vtkBooleanMacro(ExtentClipping,int); //@} //@{ /** * Specify the minimum point id for point id selection. */ vtkSetClampMacro(PointMinimum,vtkIdType,0,VTK_ID_MAX); vtkGetMacro(PointMinimum,vtkIdType); //@} //@{ /** * Specify the maximum point id for point id selection. */ vtkSetClampMacro(PointMaximum,vtkIdType,0,VTK_ID_MAX); vtkGetMacro(PointMaximum,vtkIdType); //@} //@{ /** * Specify the minimum cell id for point id selection. */ vtkSetClampMacro(CellMinimum,vtkIdType,0,VTK_ID_MAX); vtkGetMacro(CellMinimum,vtkIdType); //@} //@{ /** * Specify the maximum cell id for point id selection. */ vtkSetClampMacro(CellMaximum,vtkIdType,0,VTK_ID_MAX); vtkGetMacro(CellMaximum,vtkIdType); //@} /** * Specify a (xmin,xmax, ymin,ymax, zmin,zmax) bounding box to clip data. */ void SetExtent(double xMin, double xMax, double yMin, double yMax, double zMin, double zMax); //@{ /** * Set / get a (xmin,xmax, ymin,ymax, zmin,zmax) bounding box to clip data. */ void SetExtent(double extent[6]); double *GetExtent() { return this->Extent;}; //@} //@{ /** * Turn on/off merging of coincident points. Note that is merging is * on, points with different point attributes (e.g., normals) are merged, * which may cause rendering artifacts. */ vtkSetMacro(Merging,int); vtkGetMacro(Merging,int); vtkBooleanMacro(Merging,int); //@} //@{ /** * Set / get a spatial locator for merging points. By * default an instance of vtkMergePoints is used. */ void SetLocator(vtkIncrementalPointLocator *locator); vtkGetObjectMacro(Locator,vtkIncrementalPointLocator); //@} /** * Create default locator. Used to create one when none is specified. */ void CreateDefaultLocator(); /** * Return the MTime also considering the locator. */ vtkMTimeType GetMTime(); protected: vtkExtractUnstructuredGrid(); ~vtkExtractUnstructuredGrid() {} virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *); vtkIdType PointMinimum; vtkIdType PointMaximum; vtkIdType CellMinimum; vtkIdType CellMaximum; double Extent[6]; int PointClipping; int CellClipping; int ExtentClipping; int Merging; vtkIncrementalPointLocator *Locator; private: vtkExtractUnstructuredGrid(const vtkExtractUnstructuredGrid&) VTK_DELETE_FUNCTION; void operator=(const vtkExtractUnstructuredGrid&) VTK_DELETE_FUNCTION; }; #endif