VTK/Examples/DetermineArrayDataTypes
From KitwarePublic
< VTK | Examples(Redirected from Determine data types of arrays)
This example shows how to determine the type of data stored in a named array in a vtp file.
Fix: Add CMakeLists.txt
#include <vtkPolyData.h> #include <vtkPointData.h> #include <vtkXMLPolyDataReader.h> #include <vtkstd/vector> void FindAllData(const vtkstd::string &inputFilename); int main(int argc, char *argv[]) { if(argc != 2) { vtkstd::cout << "Required argument: InputFilename\n"; exit(-1); } vtkstd::string inputFilename = argv[1]; FindAllData(inputFilename); return 0; } void FindAllData(const vtkstd::string &InputFilename) { vtkSmartPointer<vtkXMLPolyDataReader> reader = vtkSmartPointer<vtkXMLPolyDataReader>::New(); reader->SetFileName(InputFilename.c_str()); reader->Update(); vtkPolyData* polydata = reader->GetOutput(); unsigned int numberOfArrays = polydata->GetPointData()->GetNumberOfArrays(); vtkstd::cout << "NumArrays: " << numberOfArrays << "\n"; vtkstd::cout << "key: \n"; //more values can be found in <VTK_DIR>/Common/vtkSetGet.h vtkstd::cout << VTK_UNSIGNED_CHAR << " unsigned char\n"; vtkstd::cout << VTK_UNSIGNED_INT << " unsigned int\n"; vtkstd::cout << VTK_FLOAT << " float\n"; vtkstd::cout << VTK_DOUBLE << " double\n"; vtkstd::vector<vtkstd::string> arrayNames; for(unsigned int i = 0; i < numberOfArrays; i++) { //the following two lines are equivalent //arrayNames.push_back(polydata->GetPointData()->GetArray(i)->GetName()); arrayNames.push_back(polydata->GetPointData()->GetArrayName(i)); int dataTypeID = polydata->GetPointData()->GetArray(i)->GetDataType(); vtkstd::cout << "Array " << i << ": " << arrayNames[i] << " (type: " << dataTypeID << ")\n"; } }

