Main Page Class Hierarchy Alphabetical List Compound List File List Compound Members File Members Related Pages

# vtkSelectPolyData Class Reference

`#include <vtkSelectPolyData.h>`

Inheritance diagram for vtkSelectPolyData:

[legend]
Collaboration diagram for vtkSelectPolyData:

[legend]
List of all members.

## Detailed Description

select portion of polygonal mesh; generate selection scalars

Date:
  2002/09/03 12:52:23

Revision:
  1.22

vtkSelectPolyData is a filter that selects polygonal data based on defining a "loop" and indicating the region inside of the loop. The mesh within the loop consists of complete cells (the cells are not cut). Alternatively, this filter can be used to generate scalars. These scalar values, which are a distance measure to the loop, can be used to clip, contour. or extract data (i.e., anything that an implicit function can do).

The loop is defined by an array of x-y-z point coordinates. (Coordinates should be in the same coordinate space as the input polygonal data.) The loop can be concave and non-planar, but not self-intersecting. The input to the filter is a polygonal mesh (only surface primitives such as triangle strips and polygons); the output is either a) a portion of the original mesh laying within the selection loop (GenerateSelectionScalarsOff); or b) the same polygonal mesh with the addition of scalar values (GenerateSelectionScalarsOn).

The algorithm works as follows. For each point coordinate in the loop, the closest point in the mesh is found. The result is a loop of closest point ids from the mesh. Then, the edges in the mesh connecting the closest points (and laying along the lines forming the loop) are found. A greedy edge tracking procedure is used as follows. At the current point, the mesh edge oriented in the direction of and whose end point is closest to the line is chosen. The edge is followed to the new end point, and the procedure is repeated. This process continues until the entire loop has been created.

To determine what portion of the mesh is inside and outside of the loop, three options are possible. 1) the smallest connected region, 2) the largest connected region, and 3) the connected region closest to a user specified point. (Set the ivar SelectionMode.)

Once the loop is computed as above, the GenerateSelectionScalars controls the output of the filter. If on, then scalar values are generated based on distance to the loop lines. Otherwise, the cells laying inside the selection loop are output. By default, the mesh lying within the loop is output; however, if InsideOut is on, then the portion of the mesh lying outside of the loop is output.

The filter can be configured to generate the unselected portions of the mesh as output by setting GenerateUnselectedOutput. Use the method GetUnselectedOutput to access this output. (Note: this flag is pertinent only when GenerateSelectionScalars is off.)

Warning:
  Make sure that the points you pick are on a connected surface. If not, then the filter will generate an empty or partial result. Also, self-intersecting loops will generate unpredictable results.

Warning:
  During processing of the data, non-triangular cells are converted to triangles if GenerateSelectionScalars is off.

See also:
  vtkImplicitSelectionLoop

Created by:
  - Schroeder, Will

CVS contributions (if > 5%):
  - Schroeder, Will (75%)
  - Martin, Ken (7%)

CVS logs (CVSweb):
  - .`cxx` (`/Graphics/vtkSelectPolyData.cxx)`
  - .`h` (`/Graphics/vtkSelectPolyData.h)`

Tests:
  vtkSelectPolyData (Tests)

Definition at line 108 of file vtkSelectPolyData.h.

## Public Types

typedef vtkPolyDataToPolyDataFilter | Superclass

## Public Methods

virtual const char * | GetClassName ()
virtual int | IsA (const char *type)
void | PrintSelf (ostream &os, vtkIndent indent)
vtkPolyData * | GetUnselectedOutput ()
vtkPolyData * | GetSelectionEdges ()
unsigned long int | GetMTime ()
virtual void | UnRegister (vtkObjectBase *o)
virtual int | InRegisterLoop (vtkObject *)
virtual void | SetGenerateSelectionScalars (int)
virtual int | GetGenerateSelectionScalars ()
virtual void | GenerateSelectionScalarsOn ()
virtual void | GenerateSelectionScalarsOff ()
virtual void | SetInsideOut (int)
virtual int | GetInsideOut ()
virtual void | InsideOutOn ()
virtual void | InsideOutOff ()
virtual void | SetLoop (vtkPoints *)
virtual vtkPoints * | GetLoop ()
virtual void | SetSelectionMode (int)
virtual int | GetSelectionMode ()
void | SetSelectionModeToSmallestRegion ()
void | SetSelectionModeToLargestRegion ()
void | SetSelectionModeToClosestPointRegion ()
const char * | GetSelectionModeAsString ()
virtual void | SetGenerateUnselectedOutput (int)
virtual int | GetGenerateUnselectedOutput ()
virtual void | GenerateUnselectedOutputOn ()
virtual void | GenerateUnselectedOutputOff ()

## Static Public Methods

vtkSelectPolyData * | New ()
int | IsTypeOf (const char *type)
vtkSelectPolyData * | SafeDownCast (vtkObject *o)

## Protected Methods

| vtkSelectPolyData ()
| ~vtkSelectPolyData ()
void | Execute ()

## Protected Attributes

int | GenerateSelectionScalars
int | InsideOut
vtkPoints * | Loop
int | SelectionMode
float | ClosestPoint [3]
int | GenerateUnselectedOutput
vtkPolyData * | UnselectedOutput
vtkPolyData * | SelectionEdges

## Member Typedef Documentation

typedef vtkPolyDataToPolyDataFilter vtkSelectPolyData::Superclass

| Reimplemented from vtkPolyDataToPolyDataFilter. Definition at line 116 of file vtkSelectPolyData.h.

## Constructor & Destructor Documentation

vtkSelectPolyData::vtkSelectPolyData | ( |  | ) | `[protected]`

vtkSelectPolyData::~vtkSelectPolyData | ( |  | ) | `[protected]`

## Member Function Documentation

vtkSelectPolyData* vtkSelectPolyData::New | ( |  | ) | `[static]`

| Instantiate object with InsideOut turned off, and GenerateSelectionScalars turned off. The unselected output is not generated, and the inside mode is the smallest region. Reimplemented from vtkObject.

virtual const char* vtkSelectPolyData::GetClassName | ( |  | ) | `[virtual]`

| Reimplemented from vtkPolyDataToPolyDataFilter.

int vtkSelectPolyData::IsTypeOf | ( | const char * | type | ) | `[static]`

| Return 1 if this class type is the same type of (or a subclass of) the named class. Returns 0 otherwise. This method works in combination with vtkTypeRevisionMacro found in vtkSetGet.h. Reimplemented from vtkPolyDataToPolyDataFilter.

virtual int vtkSelectPolyData::IsA | ( | const char * | type | ) | `[virtual]`

| Return 1 if this class is the same type of (or a subclass of) the named class. Returns 0 otherwise. This method works in combination with vtkTypeRevisionMacro found in vtkSetGet.h. Reimplemented from vtkPolyDataToPolyDataFilter.

vtkSelectPolyData* vtkSelectPolyData::SafeDownCast | ( | vtkObject * | o | ) | `[static]`

| Reimplemented from vtkPolyDataToPolyDataFilter.

void vtkSelectPolyData::PrintSelf | ( | ostream & | os,
|  | vtkIndent | indent
| ) | `[virtual]`

| Methods invoked by print to print information about the object including superclasses. Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes. Reimplemented from vtkPolyDataToPolyDataFilter.

virtual void vtkSelectPolyData::SetGenerateSelectionScalars | ( | int |  | ) | `[virtual]`

| Set/Get the flag to control behavior of the filter. If GenerateSelectionScalars is on, then the output of the filter is the same as the input, except that scalars are generated. If off, the filter outputs the cells laying inside the loop, and does not generate scalars.

virtual int vtkSelectPolyData::GetGenerateSelectionScalars | ( |  | ) | `[virtual]`

| Set/Get the flag to control behavior of the filter. If GenerateSelectionScalars is on, then the output of the filter is the same as the input, except that scalars are generated. If off, the filter outputs the cells laying inside the loop, and does not generate scalars.

virtual void vtkSelectPolyData::GenerateSelectionScalarsOn | ( |  | ) | `[virtual]`

| Set/Get the flag to control behavior of the filter. If GenerateSelectionScalars is on, then the output of the filter is the same as the input, except that scalars are generated. If off, the filter outputs the cells laying inside the loop, and does not generate scalars.

virtual void vtkSelectPolyData::GenerateSelectionScalarsOff | ( |  | ) | `[virtual]`

| Set/Get the flag to control behavior of the filter. If GenerateSelectionScalars is on, then the output of the filter is the same as the input, except that scalars are generated. If off, the filter outputs the cells laying inside the loop, and does not generate scalars.

virtual void vtkSelectPolyData::SetInsideOut | ( | int |  | ) | `[virtual]`

| Set/Get the InsideOut flag. When off, the mesh within the loop is extracted. When on, the mesh outside the loop is extracted.

virtual int vtkSelectPolyData::GetInsideOut | ( |  | ) | `[virtual]`

| Set/Get the InsideOut flag. When off, the mesh within the loop is extracted. When on, the mesh outside the loop is extracted.

virtual void vtkSelectPolyData::InsideOutOn | ( |  | ) | `[virtual]`

| Set/Get the InsideOut flag. When off, the mesh within the loop is extracted. When on, the mesh outside the loop is extracted.

virtual void vtkSelectPolyData::InsideOutOff | ( |  | ) | `[virtual]`

| Set/Get the InsideOut flag. When off, the mesh within the loop is extracted. When on, the mesh outside the loop is extracted.

virtual void vtkSelectPolyData::SetLoop | ( | vtkPoints * |  | ) | `[virtual]`

| Set/Get the array of point coordinates defining the loop. There must be at least three points used to define a loop.

virtual vtkPoints* vtkSelectPolyData::GetLoop | ( |  | ) | `[virtual]`

| Set/Get the array of point coordinates defining the loop. There must be at least three points used to define a loop.

virtual void vtkSelectPolyData::SetSelectionMode | ( | int |  | ) | `[virtual]`

| Control how inside/outside of loop is defined.

virtual int vtkSelectPolyData::GetSelectionMode | ( |  | ) | `[virtual]`

| Control how inside/outside of loop is defined.

void vtkSelectPolyData::SetSelectionModeToSmallestRegion | ( |  | ) | `[inline]`

| Control how inside/outside of loop is defined. Definition at line 150 of file vtkSelectPolyData.h. References VTK_INSIDE_SMALLEST_REGION.

void vtkSelectPolyData::SetSelectionModeToLargestRegion | ( |  | ) | `[inline]`

| Control how inside/outside of loop is defined. Definition at line 152 of file vtkSelectPolyData.h. References VTK_INSIDE_LARGEST_REGION.

void vtkSelectPolyData::SetSelectionModeToClosestPointRegion | ( |  | ) | `[inline]`

| Control how inside/outside of loop is defined. Definition at line 154 of file vtkSelectPolyData.h. References VTK_INSIDE_CLOSEST_POINT_REGION.

const char * vtkSelectPolyData::GetSelectionModeAsString | ( | void |  | ) | `[inline]`

| Return the method of determining in/out of loop as a string. Definition at line 207 of file vtkSelectPolyData.h. References SelectionMode, VTK_INSIDE_LARGEST_REGION, and VTK_INSIDE_SMALLEST_REGION.

virtual void vtkSelectPolyData::SetGenerateUnselectedOutput | ( | int |  | ) | `[virtual]`

| Control whether a second output is generated. The second output contains the polygonal data that's not been selected.

virtual int vtkSelectPolyData::GetGenerateUnselectedOutput | ( |  | ) | `[virtual]`

| Control whether a second output is generated. The second output contains the polygonal data that's not been selected.

virtual void vtkSelectPolyData::GenerateUnselectedOutputOn | ( |  | ) | `[virtual]`

| Control whether a second output is generated. The second output contains the polygonal data that's not been selected.

virtual void vtkSelectPolyData::GenerateUnselectedOutputOff | ( |  | ) | `[virtual]`

| Control whether a second output is generated. The second output contains the polygonal data that's not been selected.

vtkPolyData* vtkSelectPolyData::GetUnselectedOutput | ( |  | ) | `[inline]`

| Return output that hasn't been selected (if GenreateUnselectedOutput is enabled). Definition at line 169 of file vtkSelectPolyData.h.

vtkPolyData* vtkSelectPolyData::GetSelectionEdges | ( |  | ) | `[inline]`

| Return the (mesh) edges of the selection region. Definition at line 172 of file vtkSelectPolyData.h.

unsigned long int vtkSelectPolyData::GetMTime | ( |  | ) | `[virtual]`

| Return this object's modified time. Reimplemented from vtkObject.

virtual void vtkSelectPolyData::UnRegister | ( | vtkObjectBase * | o | ) | `[virtual]`

| Handle the source/data loop. Reimplemented from vtkSource.

virtual int vtkSelectPolyData::InRegisterLoop | ( | vtkObject * |  | ) | `[virtual]`

| Test to see if this object is in a reference counting loop. Reimplemented from vtkSource.

void vtkSelectPolyData::Execute | ( |  | ) | `[protected, virtual]`

| This method is the old style execute method Reimplemented from vtkSource.

## Member Data Documentation

int vtkSelectPolyData::GenerateSelectionScalars`[protected]`

| Definition at line 189 of file vtkSelectPolyData.h.

int vtkSelectPolyData::InsideOut`[protected]`

| Definition at line 190 of file vtkSelectPolyData.h.

vtkPoints* vtkSelectPolyData::Loop`[protected]`

| Definition at line 191 of file vtkSelectPolyData.h.

int vtkSelectPolyData::SelectionMode`[protected]`

| Definition at line 192 of file vtkSelectPolyData.h. Referenced by GetSelectionModeAsString().

float vtkSelectPolyData::ClosestPoint[3]`[protected]`

| Definition at line 193 of file vtkSelectPolyData.h.

int vtkSelectPolyData::GenerateUnselectedOutput`[protected]`

| Definition at line 194 of file vtkSelectPolyData.h.

vtkPolyData* vtkSelectPolyData::UnselectedOutput`[protected]`

| Definition at line 195 of file vtkSelectPolyData.h.

vtkPolyData* vtkSelectPolyData::SelectionEdges`[protected]`

| Definition at line 196 of file vtkSelectPolyData.h.

The documentation for this class was generated from the following file:

- Graphics/vtkSelectPolyData.h