diff --git a/src/Mod/Fem/App/FemVTKTools.cpp b/src/Mod/Fem/App/FemVTKTools.cpp index be973e66e0..5dfb2c94b9 100644 --- a/src/Mod/Fem/App/FemVTKTools.cpp +++ b/src/Mod/Fem/App/FemVTKTools.cpp @@ -730,19 +730,25 @@ void FemVTKTools::importFreeCADResult(vtkSmartPointer dataset, App:: static_cast(result->getPropertyByName("Time"))->setValue(ts); vtkSmartPointer pd = dataset->GetPointData(); - const vtkIdType nPoints = dataset->GetNumberOfPoints(); if(pd->GetNumberOfArrays() == 0) { Base::Console().Error("No point data array is found in vtk data set, do nothing\n"); // if pointData is empty, data may be in cellDate, cellData -> pointData interpolation is possible in VTK return; } + // NodeNumbers + const vtkIdType nPoints = dataset->GetNumberOfPoints(); + std::vector nodeIds(nPoints); + for(vtkIdType i=0; i(result->getPropertyByName("NodeNumbers"))->setValues(nodeIds); + Base::Console().Message(" NodeNumbers have been filled with values.\n"); + // vectors int dim = 3; // Fixme: currently 3D only for (std::vector::iterator it = vectors.begin(); it != vectors.end(); ++it ) { vtkDataArray* vector_field = vtkDataArray::SafeDownCast(pd->GetArray(it->c_str())); - if(!vector_field) - vector_field = vtkDataArray::SafeDownCast(pd->GetArray(it->c_str())); // name from FreeCAD export if(vector_field && vector_field->GetNumberOfComponents() == dim) { App::PropertyVectorList* vector_list = static_cast(result->getPropertyByName(it->c_str())); if(vector_list) { @@ -760,19 +766,11 @@ void FemVTKTools::importFreeCADResult(vtkSmartPointer dataset, App:: continue; } } - - std::vector nodeIds(nPoints); - for(vtkIdType i=0; i(result->getPropertyByName("NodeNumbers"))->setValues(nodeIds); } // scalars for (std::vector::iterator it = scalars.begin(); it != scalars.end(); ++it ) { - vtkDataArray* vec = vtkDataArray::SafeDownCast(pd->GetArray(it->c_str())); // name from OpenFOAM/Fem solver export - if(!vec) - vec = vtkDataArray::SafeDownCast(pd->GetArray(it->c_str())); // name from FreeCAD export + vtkDataArray* vec = vtkDataArray::SafeDownCast(pd->GetArray(it->c_str())); if(nPoints && vec && vec->GetNumberOfComponents() == 1) { App::PropertyFloatList* field = static_cast(result->getPropertyByName(it->c_str())); if (!field) {