我是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?

最佳答案

Vtk为此提供了方法,您无需使用“低级”方法:

rgrid-> GetPointData()-> GetArray(0)

要么
rgrid-> GetPointData()-> GetArray(“ arrayname”)

它对于FieldData和CellData(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中有很多示例

08-19 18:11