VTK  9.2.5
vtkImprintFilter.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkImprintFilter.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=========================================================================*/
96#ifndef vtkImprintFilter_h
97#define vtkImprintFilter_h
98
99#include "vtkFiltersModelingModule.h" // For export macro
100#include "vtkPolyDataAlgorithm.h"
101
103
104class VTKFILTERSMODELING_EXPORT vtkImprintFilter : public vtkPolyDataAlgorithm
105{
106public:
108
113 void PrintSelf(ostream& os, vtkIndent indent) override;
115
122
124
132
140
142
149
151
156 vtkSetClampMacro(Tolerance, double, 0.0, VTK_FLOAT_MAX);
157 vtkGetMacro(Tolerance, double);
159
160 // Used to control how the merge tolerance is interpreted.
161 // ABSOLUTE_TOLERANCE is a tolerance expressed in world coordinates;
162 // RELATIVE_TO_TOLERANCE is a tolerance relative to the projection
163 // tolerance; and RELATIVE_TO_MIN_EDGE_LENGTH is a tolerance relative
164 // to the minimum edge length of the tool/imprint mesh.
166 {
167 ABSOLUTE_TOLERANCE = 0,
168 RELATIVE_TO_PROJECTION_TOLERANCE = 1,
169 RELATIVE_TO_MIN_EDGE_LENGTH = 2
170 };
171
173
178 vtkSetClampMacro(MergeToleranceType, int, ABSOLUTE_TOLERANCE, RELATIVE_TO_MIN_EDGE_LENGTH);
179 vtkGetMacro(MergeToleranceType, int);
180 void SetMergeToleranceTypeToAbsolute() { this->SetMergeToleranceType(ABSOLUTE_TOLERANCE); }
182 {
183 this->SetMergeToleranceType(RELATIVE_TO_PROJECTION_TOLERANCE);
184 }
186 {
187 this->SetMergeToleranceType(RELATIVE_TO_MIN_EDGE_LENGTH);
188 }
189 vtkSetClampMacro(MergeTolerance, double, 0.0, VTK_FLOAT_MAX);
190 vtkGetMacro(MergeTolerance, double);
192
194 {
195 TARGET_CELLS = 0,
196 IMPRINTED_CELLS = 1,
197 PROJECTED_IMPRINT = 2,
198 IMPRINTED_REGION = 3,
199 MERGED_IMPRINT = 5
200 };
201
203
216 vtkSetClampMacro(OutputType, int, TARGET_CELLS, MERGED_IMPRINT);
217 vtkGetMacro(OutputType, int);
218 void SetOutputTypeToTargetCells() { this->SetOutputType(TARGET_CELLS); }
219 void SetOutputTypeToImprintedCells() { this->SetOutputType(IMPRINTED_CELLS); }
220 void SetOutputTypeToProjectedImprint() { this->SetOutputType(PROJECTED_IMPRINT); }
221 void SetOutputTypeToImprintedRegion() { this->SetOutputType(IMPRINTED_REGION); }
222 void SetOutputTypeToMergedImprint() { this->SetOutputType(MERGED_IMPRINT); }
224
226
233 vtkSetMacro(BoundaryEdgeInsertion, bool);
234 vtkGetMacro(BoundaryEdgeInsertion, bool);
235 vtkBooleanMacro(BoundaryEdgeInsertion, bool);
237
239
243 vtkSetMacro(PassCellData, bool);
244 vtkGetMacro(PassCellData, bool);
245 vtkBooleanMacro(PassCellData, bool);
247
249
257 vtkSetMacro(PassPointData, bool);
258 vtkGetMacro(PassPointData, bool);
259 vtkBooleanMacro(PassPointData, bool);
261
263 {
264 USE_TARGET_EDGES = 0,
265 USE_IMPRINT_EDGES = 1
266 };
267
269
274 vtkSetClampMacro(PointInterpolation, int, USE_TARGET_EDGES, USE_IMPRINT_EDGES);
275 vtkGetMacro(PointInterpolation, int);
276 void SetPointInterpolationToTargetEdges() { this->SetPointInterpolation(USE_TARGET_EDGES); }
277 void SetPointInterpolationToImprintEdges() { this->SetPointInterpolation(USE_IMPRINT_EDGES); }
279
281 {
282 NO_DEBUG_OUTPUT = 0,
283 TRIANGULATION_INPUT = 1,
284 TRIANGULATION_OUTPUT = 2
285 };
286
288
295 vtkSetMacro(TriangulateOutput, bool);
296 vtkGetMacro(TriangulateOutput, bool);
297 vtkBooleanMacro(TriangulateOutput, bool);
299
301
309 vtkSetClampMacro(DebugOutputType, int, NO_DEBUG_OUTPUT, TRIANGULATION_OUTPUT);
310 vtkGetMacro(DebugOutputType, int);
311 void SetDebugOutputTypeToNoDebugOutput() { this->SetDebugOutputType(NO_DEBUG_OUTPUT); }
312 void SetDebugOutputTypeToTriangulationInput() { this->SetDebugOutputType(TRIANGULATION_INPUT); }
313 void SetDebugOutputTypeToTriangulationOutput() { this->SetDebugOutputType(TRIANGULATION_OUTPUT); }
314 vtkSetMacro(DebugCellId, vtkIdType);
315 vtkGetMacro(DebugCellId, vtkIdType);
317
319
325
326protected:
329
330 double Tolerance;
334
338
342
345
348
349private:
350 vtkImprintFilter(const vtkImprintFilter&) = delete;
351 void operator=(const vtkImprintFilter&) = delete;
352};
353
354#endif
Proxy object to connect input/output ports.
general representation of visualization data
Definition: vtkDataObject.h:66
Imprint the contact surface of one object onto another surface.
void SetImprintData(vtkDataObject *imprint)
Specify the a second vtkPolyData input which defines the surface mesh with which to imprint the targe...
~vtkImprintFilter() override
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called by the superclass.
void SetPointInterpolationToImprintEdges()
If PassPointData is on, indicate how new point data is to generated at the intersection points betwee...
int RequestUpdateExtent(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called by the superclass.
vtkDataObject * GetImprint()
Specify the a second vtkPolyData input which defines the surface mesh with which to imprint the targe...
void SetOutputTypeToTargetCells()
Control what is output by the filter.
void SetMergeToleranceTypeToMinEdge()
Specify a tolerance which is used to determine whether two points are considered coincident to one an...
void SetOutputTypeToProjectedImprint()
Control what is output by the filter.
void SetMergeToleranceTypeToAbsolute()
Specify a tolerance which is used to determine whether two points are considered coincident to one an...
void SetDebugOutputTypeToNoDebugOutput()
Indicate whether the output should be triangulated.
void SetImprintConnection(vtkAlgorithmOutput *algOutput)
Specify the a second vtkPolyData input connection which defines the surface mesh with which to imprin...
void SetDebugOutputTypeToTriangulationOutput()
Indicate whether the output should be triangulated.
void SetDebugOutputTypeToTriangulationInput()
Indicate whether the output should be triangulated.
void PrintSelf(ostream &os, vtkIndent indent) override
Standard methods to instantiate, print and provide type information.
vtkPolyData * GetDebugOutput()
Get the output data (in the second output, if the DebugOutput != NO_DEBUG_OUTPUT).
void SetMergeToleranceTypeToRelativeToProjection()
Specify a tolerance which is used to determine whether two points are considered coincident to one an...
void SetOutputTypeToImprintedCells()
Control what is output by the filter.
void SetPointInterpolationToTargetEdges()
If PassPointData is on, indicate how new point data is to generated at the intersection points betwee...
vtkDataObject * GetTarget()
Specify the first vtkPolyData input which defines the surface mesh to imprint (i.e....
void SetTargetData(vtkDataObject *target)
Specify the first vtkPolyData input which defines the surface mesh to imprint (i.e....
static vtkImprintFilter * New()
Standard methods to instantiate, print and provide type information.
vtkAlgorithmOutput * GetImprintConnection()
vtkAlgorithmOutput * GetTargetConnection()
void SetOutputTypeToMergedImprint()
Control what is output by the filter.
void SetOutputTypeToImprintedRegion()
Control what is output by the filter.
double ComputeMergeTolerance(vtkPolyData *pdata)
void SetTargetConnection(vtkAlgorithmOutput *algOutput)
Specify the first vtkPolyData input connection which defines the surface mesh to imprint (i....
a simple class to control print indentation
Definition: vtkIndent.h:40
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:91
perform fast cell location operations
boost::graph_traits< vtkGraph * >::vertex_descriptor target(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
int vtkIdType
Definition: vtkType.h:332
#define VTK_FLOAT_MAX
Definition: vtkType.h:163