00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00108 #ifndef __vtkSelectPolyData_h
00109 #define __vtkSelectPolyData_h
00110
00111 #include "vtkPolyDataToPolyDataFilter.h"
00112
00113 #define VTK_INSIDE_SMALLEST_REGION 0
00114 #define VTK_INSIDE_LARGEST_REGION 1
00115 #define VTK_INSIDE_CLOSEST_POINT_REGION 2
00116
00117 class vtkCharArray;
00118
00119 class VTK_GRAPHICS_EXPORT vtkSelectPolyData : public vtkPolyDataToPolyDataFilter
00120 {
00121 public:
00125 static vtkSelectPolyData *New();
00126
00127 vtkTypeMacro(vtkSelectPolyData,vtkPolyDataToPolyDataFilter);
00128 void PrintSelf(ostream& os, vtkIndent indent);
00129
00131
00136 vtkSetMacro(GenerateSelectionScalars,int);
00137 vtkGetMacro(GenerateSelectionScalars,int);
00138 vtkBooleanMacro(GenerateSelectionScalars,int);
00140
00142
00144 vtkSetMacro(InsideOut,int);
00145 vtkGetMacro(InsideOut,int);
00146 vtkBooleanMacro(InsideOut,int);
00148
00150
00152 vtkSetObjectMacro(Loop,vtkPoints);
00153 vtkGetObjectMacro(Loop,vtkPoints);
00155
00157
00158 vtkSetClampMacro(SelectionMode,int,
00159 VTK_INSIDE_SMALLEST_REGION,VTK_INSIDE_CLOSEST_POINT_REGION);
00160 vtkGetMacro(SelectionMode,int);
00161 void SetSelectionModeToSmallestRegion()
00162 {this->SetSelectionMode(VTK_INSIDE_SMALLEST_REGION);};
00163 void SetSelectionModeToLargestRegion()
00164 {this->SetSelectionMode(VTK_INSIDE_LARGEST_REGION);};
00165 void SetSelectionModeToClosestPointRegion()
00166 {this->SetSelectionMode(VTK_INSIDE_CLOSEST_POINT_REGION);};
00167 const char *GetSelectionModeAsString();
00169
00171
00173 vtkSetMacro(GenerateUnselectedOutput,int);
00174 vtkGetMacro(GenerateUnselectedOutput,int);
00175 vtkBooleanMacro(GenerateUnselectedOutput,int);
00177
00180 vtkPolyData *GetUnselectedOutput() {return this->UnselectedOutput;};
00181
00183 vtkPolyData *GetSelectionEdges() {return this->SelectionEdges;};
00184
00185
00186 unsigned long int GetMTime();
00187
00189 void UnRegister(vtkObject *o);
00190
00192 virtual int InRegisterLoop(vtkObject *);
00193
00194 protected:
00195 vtkSelectPolyData();
00196 ~vtkSelectPolyData();
00197
00198 void Execute();
00199
00200 int GenerateSelectionScalars;
00201 int InsideOut;
00202 vtkPoints *Loop;
00203 int SelectionMode;
00204 float ClosestPoint[3];
00205 int GenerateUnselectedOutput;
00206 vtkPolyData *UnselectedOutput;
00207 vtkPolyData *SelectionEdges;
00208
00209 private:
00210 vtkPolyData *Mesh;
00211 void GetPointNeighbors (vtkIdType ptId, vtkIdList *nei);
00212 private:
00213 vtkSelectPolyData(const vtkSelectPolyData&);
00214 void operator=(const vtkSelectPolyData&);
00215 };
00216
00218 inline const char *vtkSelectPolyData::GetSelectionModeAsString(void)
00219 {
00220 if ( this->SelectionMode == VTK_INSIDE_SMALLEST_REGION )
00221 {
00222 return "InsideSmallestRegion";
00223 }
00224 else if ( this->SelectionMode == VTK_INSIDE_LARGEST_REGION )
00225 {
00226 return "InsideLargestRegion";
00227 }
00228 else
00229 {
00230 return "InsideClosestPointRegion";
00231 }
00232 }
00233
00234 #endif
00235
00236