VTK  9.4.20241117
vtkCutter.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-License-Identifier: BSD-3-Clause
139#ifndef vtkCutter_h
140#define vtkCutter_h
141
142#include "vtkDeprecation.h" // For VTK_DEPRECATED_IN_9_4_0
143#include "vtkFiltersCoreModule.h" // For export macro
144#include "vtkPolyDataAlgorithm.h"
145
146#include "vtkContourValues.h" // Needed for inline methods
147
148#define VTK_SORT_BY_VALUE 0
149#define VTK_SORT_BY_CELL 1
150
151VTK_ABI_NAMESPACE_BEGIN
155class vtkPlaneCutter;
159
160class VTKFILTERSCORE_EXPORT vtkCutter : public vtkPolyDataAlgorithm
161{
162public:
164 void PrintSelf(ostream& os, vtkIndent indent) override;
165
170 static vtkCutter* New();
171
176 void SetValue(int i, double value) { this->ContourValues->SetValue(i, value); }
177
181 double GetValue(int i) { return this->ContourValues->GetValue(i); }
182
187 double* GetValues() { return this->ContourValues->GetValues(); }
188
194 void GetValues(double* contourValues) { this->ContourValues->GetValues(contourValues); }
195
201 void SetNumberOfContours(int number) { this->ContourValues->SetNumberOfContours(number); }
202
206 vtkIdType GetNumberOfContours() { return this->ContourValues->GetNumberOfContours(); }
207
212 void GenerateValues(int numContours, double range[2])
213 {
214 this->ContourValues->GenerateValues(numContours, range);
215 }
216
221 void GenerateValues(int numContours, double rangeStart, double rangeEnd)
222 {
223 this->ContourValues->GenerateValues(numContours, rangeStart, rangeEnd);
224 }
225
231
233
237 vtkGetObjectMacro(CutFunction, vtkImplicitFunction);
239
241
246 vtkSetMacro(GenerateCutScalars, vtkTypeBool);
247 vtkGetMacro(GenerateCutScalars, vtkTypeBool);
248 vtkBooleanMacro(GenerateCutScalars, vtkTypeBool);
250
252
259 vtkSetMacro(GenerateTriangles, vtkTypeBool);
260 vtkGetMacro(GenerateTriangles, vtkTypeBool);
261 vtkBooleanMacro(GenerateTriangles, vtkTypeBool);
263
265
270 vtkGetObjectMacro(Locator, vtkIncrementalPointLocator);
272
274
289 vtkSetClampMacro(SortBy, int, VTK_SORT_BY_VALUE, VTK_SORT_BY_CELL);
290 vtkGetMacro(SortBy, int);
291 void SetSortByToSortByValue() { this->SetSortBy(VTK_SORT_BY_VALUE); }
292 void SetSortByToSortByCell() { this->SetSortBy(VTK_SORT_BY_CELL); }
293 const char* GetSortByAsString();
295
301
307 VTK_DEPRECATED_IN_9_4_0("This is no longer used. Use vtkCellTypes::GetDimension(type) instead.")
308 static void GetCellTypeDimensions(unsigned char* cellTypeDimensions);
309
311
316 vtkSetClampMacro(OutputPointsPrecision, int, SINGLE_PRECISION, DEFAULT_PRECISION);
317 vtkGetMacro(OutputPointsPrecision, int);
319
320protected:
322 ~vtkCutter() override;
323
325 int RequestUpdateExtent(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;
326 int FillInputPortInformation(int port, vtkInformation* info) override;
327 void UnstructuredGridCutter(vtkDataSet* input, vtkPolyData* output);
328 void DataSetCutter(vtkDataSet* input, vtkPolyData* output);
329 void StructuredPointsCutter(
331 void StructuredGridCutter(vtkDataSet*, vtkPolyData*);
332 void RectilinearGridCutter(vtkDataSet*, vtkPolyData*);
334 vtkTypeBool GenerateTriangles;
335
336 vtkNew<vtkSynchronizedTemplates3D> SynchronizedTemplates3D;
337 vtkNew<vtkSynchronizedTemplatesCutter3D> SynchronizedTemplatesCutter3D;
338 vtkNew<vtkGridSynchronizedTemplates3D> GridSynchronizedTemplates;
339 vtkNew<vtkRectilinearSynchronizedTemplates> RectilinearSynchronizedTemplates;
340 vtkNew<vtkPlaneCutter> PlaneCutter;
341
343 int SortBy;
344 vtkNew<vtkContourValues> ContourValues;
345 vtkTypeBool GenerateCutScalars;
346 int OutputPointsPrecision;
347
348 // Garbage collection method
349 void ReportReferences(vtkGarbageCollector*) override;
350
351private:
352 vtkCutter(const vtkCutter&) = delete;
353 void operator=(const vtkCutter&) = delete;
354};
355
359inline const char* vtkCutter::GetSortByAsString()
360{
361 if (this->SortBy == VTK_SORT_BY_VALUE)
362 {
363 return "SortByValue";
364 }
365 else
366 {
367 return "SortByCell";
368 }
369}
370
371VTK_ABI_NAMESPACE_END
372#endif
helper object to manage setting and generating contour values
Cut vtkDataSet with user-specified implicit function.
Definition vtkCutter.h:161
virtual void SetCutFunction(vtkImplicitFunction *)
Specify the implicit function to perform the cutting.
void SetLocator(vtkIncrementalPointLocator *locator)
Specify a spatial locator for merging points.
void GetValues(double *contourValues)
Fill a supplied list with contour values.
Definition vtkCutter.h:194
void CreateDefaultLocator()
Create default locator.
vtkIdType GetNumberOfContours()
Get the number of contours in the list of contour values.
Definition vtkCutter.h:206
static vtkCutter * New()
Construct with user-specified implicit function; initial value of 0.0; and generating cut scalars tur...
void SetNumberOfContours(int number)
Set the number of contours to place into the list.
Definition vtkCutter.h:201
double * GetValues()
Get a pointer to an array of contour values.
Definition vtkCutter.h:187
vtkMTimeType GetMTime() override
Override GetMTime because we delegate to vtkContourValues and refer to vtkImplicitFunction.
void GenerateValues(int numContours, double range[2])
Generate numContours equally spaced contour values between specified range.
Definition vtkCutter.h:212
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void SetSortByToSortByCell()
Set the sorting order for the generated polydata.
Definition vtkCutter.h:292
void SetValue(int i, double value)
Set a particular contour value at contour number i.
Definition vtkCutter.h:176
void SetSortByToSortByValue()
Set the sorting order for the generated polydata.
Definition vtkCutter.h:291
void GenerateValues(int numContours, double rangeStart, double rangeEnd)
Generate numContours equally spaced contour values between specified range.
Definition vtkCutter.h:221
double GetValue(int i)
Get the ith contour value.
Definition vtkCutter.h:181
abstract class to specify dataset behavior
Definition vtkDataSet.h:166
Detect and break reference loops.
generate isosurface from structured grids
abstract interface for implicit functions
Abstract class in support of both point location and point insertion.
a simple class to control print indentation
Definition vtkIndent.h:108
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
Allocate and hold a VTK object.
Definition vtkNew.h:167
cut any dataset with a plane and generate a polygonal cut surface
Superclass for algorithms that produce only polydata as output.
concrete dataset represents vertices, lines, polygons, and triangle strips
generate isosurface from rectilinear grid
generate isosurface from structured points
generate cut surface from structured points
int vtkTypeBool
Definition vtkABI.h:64
#define VTK_SORT_BY_VALUE
Definition vtkCutter.h:148
#define VTK_SORT_BY_CELL
Definition vtkCutter.h:149
#define VTK_DEPRECATED_IN_9_4_0(reason)
int vtkIdType
Definition vtkType.h:315
vtkTypeUInt32 vtkMTimeType
Definition vtkType.h:270