From dc41055741315aa41e7e4e4399bb4948ded593a3 Mon Sep 17 00:00:00 2001 From: Bernd Hahnebach Date: Sun, 30 Sep 2018 21:43:30 +0200 Subject: [PATCH] FEM: vtk, import and export FC result, get the FC result properties for them from a seperate method --- src/Mod/Fem/App/FemVTKTools.cpp | 42 +++++++++++++-------------------- 1 file changed, 17 insertions(+), 25 deletions(-) diff --git a/src/Mod/Fem/App/FemVTKTools.cpp b/src/Mod/Fem/App/FemVTKTools.cpp index 163b6cbd28..e1f189020a 100644 --- a/src/Mod/Fem/App/FemVTKTools.cpp +++ b/src/Mod/Fem/App/FemVTKTools.cpp @@ -653,17 +653,17 @@ void FemVTKTools::writeResult(const char* filename, const App::DocumentObject* r } -void FemVTKTools::importFreeCADResult(vtkSmartPointer dataset, App::DocumentObject* result) { - +std::map> _getFreeCADMechResultProperties(){ // see src/Mod/Fem/femobjects/_FemResultMechanical // App::PropertyVectorList will be a list of vectors in vtk - std::vector vectors = { + std::map> resFCProperties; + resFCProperties["vectors"] = { "DisplacementVectors", "StressVectors", "StrainVectors" }; // App::PropertyFloatList will be a list of scalars in vtk - std::vector scalars = { + resFCProperties["scalars"] = { "Peeq", "DisplacementLengths", "StressValues", @@ -677,6 +677,16 @@ void FemVTKTools::importFreeCADResult(vtkSmartPointer dataset, App:: "Temperature" }; + return resFCProperties; +} + + +void FemVTKTools::importFreeCADResult(vtkSmartPointer dataset, App::DocumentObject* result) { + + std::map> resFCProperties = _getFreeCADMechResultProperties(); + std::vector vectors = resFCProperties["vectors"]; + std::vector scalars = resFCProperties["scalars"]; + double ts = 0.0; // t=0.0 for static simulation static_cast(result->getPropertyByName("Time"))->setValue(ts); @@ -752,27 +762,9 @@ void FemVTKTools::importFreeCADResult(vtkSmartPointer dataset, App:: void FemVTKTools::exportFreeCADResult(const App::DocumentObject* result, vtkSmartPointer grid) { Base::Console().Message("Start: Create VTK result data from FreeCAD result data.\n"); - // see src/Mod/Fem/femobjects/_FemResultMechanical - // App::PropertyVectorList will be a list of vectors in vtk - std::vector vectors = { - "DisplacementVectors", - "StressVectors", - "StrainVectors" - }; - // App::PropertyFloatList will be a list of scalars in vtk - std::vector scalars = { - "Peeq", - "DisplacementLengths", - "StressValues", - "PrincipalMax", - "PrincipalMed", - "PrincipalMin", - "MaxShear", - "MassFlowRate", - "NetworkPressure", - "UserDefined", - "Temperature" - }; + std::map> resFCProperties = _getFreeCADMechResultProperties(); + std::vector vectors = resFCProperties["vectors"]; + std::vector scalars = resFCProperties["scalars"]; const Fem::FemResultObject* res = static_cast(result); const vtkIdType nPoints = grid->GetNumberOfPoints();