c++ 如何读取vtkDataArray中的数据?

bihw5rsg  于 2022-12-20  发布在  其他
关注(0)|答案(2)|浏览(464)

我对VTK还是个新手。这是我的代码的一部分:

vtkDataSetReader *rdr = vtkDataSetReader::New();
rdr->SetFileName("proj7b.vtk");
rdr->SetScalarsName("hardyglobal");
rdr->Update();

int dims[3];
vtkRectilinearGrid *rgrid = (vtkRectilinearGrid *) rdr->GetOutput();
rgrid->GetDimensions(dims);


vtkDataArray *dataArray;
dataArray = vtkDoubleArray::New();

dataArray = rgrid->GetPointData()->GetScalars()->GetVoidPointer(0);

for(i=0;i<10;i++)
{
    cout<<"here----------"<<endl;
    cout<<" "<<dataArray[i]<<" ";
}

我想把数据读入我的vtkDataArray,但是这段代码无法编译:

proj7b.cxx:525:15: error: 
  assigning to 'vtkDataArray *' from incompatible type 'void *'
dataArray = rgrid->GetPointData()->GetScalars()->GetVoidPointer(0);
          ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

生成1个错误。有人知道如何将数据读入vtkDataArray吗?

v1uwarro

v1uwarro1#

Vtk为它提供了方法,您不需要使用“低级”方法:
rgrid-〉获取点数据()-〉获取数组(0)
或rgrid-〉获取点数据()-〉获取数组(“数组名”)
对于字段数据和单元格数据(http://www.vtk.org/doc/release/6.2/html/classvtkFieldData.html),其工作方式相同
您得到的是一个vtkArray,而不是一个简单的c++数组,因此您必须这样读它:

cout<<" "<<dataArray->GetValue(i) <<" ";

在wiki http://www.vtk.org/Wiki/VTK/Examples/Cxx中有很多例子

uhry853o

uhry853o2#

请参阅此页:* 一个月一次 *

void doSomething(vtkSmartPointer<vtkDataArray> dataArray)
{
  vtkIdType numTuples = dataArray->GetNumberOfTuples();
  for (vtkIdType tupleIdx = 0; tupleIdx < numTuples; ++tupleIdx)
  {
    double* tuple = dataArray->GetTuple(tupleIdx);
    for (int j = 0; j < /*¿¿¿???*/; ++j)
    {
      double var = tuple[j];
      // Do something with var
      // Carefull don't go out of bounds
    }
  }
}

相关问题