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