00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00084
#ifndef __vtkSelectPolyData_h
00085
#define __vtkSelectPolyData_h
00086
00087
#include "vtkPolyDataToPolyDataFilter.h"
00088
00089 #define VTK_INSIDE_SMALLEST_REGION 0
00090 #define VTK_INSIDE_LARGEST_REGION 1
00091 #define VTK_INSIDE_CLOSEST_POINT_REGION 2
00092
00093
class vtkCharArray;
00094
class vtkPoints;
00095
class vtkIdList;
00096
00097 class VTK_GRAPHICS_EXPORT vtkSelectPolyData :
public vtkPolyDataToPolyDataFilter
00098 {
00099
public:
00103
static vtkSelectPolyData *
New();
00104
00105 vtkTypeRevisionMacro(vtkSelectPolyData,
vtkPolyDataToPolyDataFilter);
00106
void PrintSelf(ostream& os,
vtkIndent indent);
00107
00109
00114 vtkSetMacro(GenerateSelectionScalars,
int);
00115 vtkGetMacro(GenerateSelectionScalars,
int);
00116 vtkBooleanMacro(GenerateSelectionScalars,
int);
00118
00120
00122 vtkSetMacro(InsideOut,
int);
00123 vtkGetMacro(InsideOut,
int);
00124 vtkBooleanMacro(InsideOut,
int);
00126
00128
00130
virtual void SetLoop(
vtkPoints*);
00131 vtkGetObjectMacro(Loop,
vtkPoints);
00133
00135
00136 vtkSetClampMacro(SelectionMode,
int,
00137 VTK_INSIDE_SMALLEST_REGION,VTK_INSIDE_CLOSEST_POINT_REGION);
00138 vtkGetMacro(SelectionMode,
int);
00139 void SetSelectionModeToSmallestRegion()
00140 {this->SetSelectionMode(
VTK_INSIDE_SMALLEST_REGION);};
00141 void SetSelectionModeToLargestRegion()
00142 {this->SetSelectionMode(
VTK_INSIDE_LARGEST_REGION);};
00143 void SetSelectionModeToClosestPointRegion()
00144 {this->SetSelectionMode(
VTK_INSIDE_CLOSEST_POINT_REGION);};
00145
const char *GetSelectionModeAsString();
00147
00149
00151 vtkSetMacro(GenerateUnselectedOutput,
int);
00152 vtkGetMacro(GenerateUnselectedOutput,
int);
00153 vtkBooleanMacro(GenerateUnselectedOutput,
int);
00155
00158 vtkPolyData *GetUnselectedOutput() {
return this->UnselectedOutput;};
00159
00161 vtkPolyData *GetSelectionEdges() {
return this->SelectionEdges;};
00162
00163
00164
unsigned long int GetMTime();
00165
00167
virtual void UnRegister(
vtkObjectBase *o);
00168
00170
virtual int InRegisterLoop(
vtkObject *);
00171
00172
protected:
00173 vtkSelectPolyData();
00174 ~vtkSelectPolyData();
00175
00176
void Execute();
00177
00178 int GenerateSelectionScalars;
00179 int InsideOut;
00180 vtkPoints *Loop;
00181 int SelectionMode;
00182 float ClosestPoint[3];
00183 int GenerateUnselectedOutput;
00184 vtkPolyData *UnselectedOutput;
00185 vtkPolyData *SelectionEdges;
00186
00187
private:
00188
vtkPolyData *Mesh;
00189
void GetPointNeighbors (
vtkIdType ptId,
vtkIdList *nei);
00190
private:
00191 vtkSelectPolyData(
const vtkSelectPolyData&);
00192
void operator=(
const vtkSelectPolyData&);
00193 };
00194
00196 inline const char *
vtkSelectPolyData::GetSelectionModeAsString(
void)
00197 {
00198
if ( this->
SelectionMode ==
VTK_INSIDE_SMALLEST_REGION )
00199 {
00200
return "InsideSmallestRegion";
00201 }
00202
else if ( this->
SelectionMode ==
VTK_INSIDE_LARGEST_REGION )
00203 {
00204
return "InsideLargestRegion";
00205 }
00206
else
00207 {
00208
return "InsideClosestPointRegion";
00209 }
00210 }
00211
00212
#endif
00213
00214