我想使用vtkArrayCalculator,用在的Paraview濾波器,如這裏描述的,當:ArrayCalculatorExamplevtkArrayCalculator - 分段故障訪問輸出
vtkSmartPointer<vtkArrayCalculator> calculator = vtkSmartPointer<vtkArrayCalculator>::New();
calculator->SetInputData(input);
calculator->AddScalarArrayName("u");
calculator->SetFunction("u+1");
calculator->SetResultArrayName("wind_velocity");
calculator->Update();
vtkSmartPointer<vtkFloatArray> windVelocity =
vtkFloatArray::SafeDownCast(calculator->GetStructuredGridOutput()->GetPointData()->GetArray("wind_velocity"));
現在,當我想要訪問的數據(或類似的命令)
windVelocity->GetValue(0);
我得到一個「分段錯誤(核心轉儲)」。
「輸入」是一個vtkStructuredGrid和「u」是一個vtkDataArray(可以下降到一個vtkFloatArray沒有問題)。 「u」可以通過訪問
input->GetPointData()->GetArray("u");
每一個提示,我做錯了,非常感謝!
編輯:我已經嘗試了以下
vtkSmartPointer<vtkFloatArray> windVelocity = vtkSmartPointer<vtkFloatArray>::New();
windVelocity->DeepCopy(vtkFloatArray::SafeDownCast(calculator->GetStructuredGridOutput()->GetPointData()->GetArray("wind_velocity")));
感謝您的提示,我再次查看了此命令,並在使用vtkFloatArray :: SafeDownCast()命令時發生錯誤,否則它不返回NULL。我發現,它實際上返回一個vtkDoubleArray。我認爲,VTK能夠從雙精度型轉換爲浮點型數組,但顯然這在我的情況下不起作用。感謝您查看我的問題,它幫助了很多! –