vtkFillHolesFilter.h 2.73 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14
/*=========================================================================

  Program:   Visualization Toolkit
  Module:    vtkFillHolesFilter.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.

=========================================================================*/
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
/**
 * @class   vtkFillHolesFilter
 * @brief   identify and fill holes in meshes
 *
 * vtkFillHolesFilter is a filter that identifies and fills holes in
 * input vtkPolyData meshes. Holes are identified by locating
 * boundary edges, linking them together into loops, and then
 * triangulating the resulting loops. Note that you can specify
 * an approximate limit to the size of the hole that can be filled.
 *
 * @warning
 * Note that any mesh with boundary edges by definition has a
 * topological hole. This even includes a reactangular grid
 * (e.g., the output of vtkPlaneSource). In such situations, if
 * the outer hole is filled, retriangulation of the hole will cause
 * geometric overlap of the mesh. This can be prevented by using
 * the hole size instance variable to prevent the larger holes
 * from being triangulated.
 *
 * @warning
 * Note this filter only operates on polygons and triangle strips.
 * Vertices and polylines are passed through untouched.
*/
38

39 40
#ifndef vtkFillHolesFilter_h
#define vtkFillHolesFilter_h
41

42
#include "vtkFiltersModelingModule.h" // For export macro
43 44 45 46
#include "vtkPolyDataAlgorithm.h"

class vtkAbstractTransform;

47
class VTKFILTERSMODELING_EXPORT vtkFillHolesFilter : public vtkPolyDataAlgorithm
48 49
{
public:
50 51 52 53
  //@{
  /**
   * Standard methods for instantiation, type information and printing.
   */
54
  static vtkFillHolesFilter *New();
55
  vtkTypeMacro(vtkFillHolesFilter,vtkPolyDataAlgorithm);
56
  void PrintSelf(ostream& os, vtkIndent indent) override;
57
  //@}
58

59 60 61 62 63 64 65
  //@{
  /**
   * Specify the maximum hole size to fill. This is represented as a radius
   * to the bounding circumsphere containing the hole.  Note that this is an
   * approximate area; the actual area cannot be computed without first
   * triangulating the hole.
   */
66
  vtkSetClampMacro(HoleSize, double, 0.0, VTK_FLOAT_MAX);
67
  vtkGetMacro(HoleSize, double);
68
  //@}
69 70 71

protected:
  vtkFillHolesFilter();
72
  ~vtkFillHolesFilter() override;
73

74
  int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override;
75 76 77 78

  double HoleSize;

private:
79
  vtkFillHolesFilter(const vtkFillHolesFilter&) VTK_DELETE_FUNCTION;
80
  void operator=(const vtkFillHolesFilter&) VTK_DELETE_FUNCTION;
81 82 83
};

#endif