From c815612dc6902435dbcaccf15c5c4e902aad29b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Tr=C3=B6ger?= Date: Thu, 27 Feb 2025 17:13:28 +0100 Subject: [PATCH] FEM: Fix multiframe bugs and add correct units for all cxx analysis types --- src/Mod/Fem/App/FemPostBranchFilter.h | 2 +- src/Mod/Fem/feminout/importCcxFrdResults.py | 22 ++++++++++++++++----- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/Mod/Fem/App/FemPostBranchFilter.h b/src/Mod/Fem/App/FemPostBranchFilter.h index be03b58b73..60ccf05836 100644 --- a/src/Mod/Fem/App/FemPostBranchFilter.h +++ b/src/Mod/Fem/App/FemPostBranchFilter.h @@ -50,7 +50,7 @@ public: short mustExecute() const override; PyObject* getPyObject() override; - constexpr const char* getViewProviderName() const override + const char* getViewProviderName() const override { return "FemGui::ViewProviderFemPostBranchFilter"; } diff --git a/src/Mod/Fem/feminout/importCcxFrdResults.py b/src/Mod/Fem/feminout/importCcxFrdResults.py index a76e04ecd5..35b4e0ceed 100644 --- a/src/Mod/Fem/feminout/importCcxFrdResults.py +++ b/src/Mod/Fem/feminout/importCcxFrdResults.py @@ -149,7 +149,6 @@ def importFrd(filename, analysis=None, result_name_prefix="", result_analysis_ty else: results_name = f"{result_name_prefix}Results" - multistep_value.append(step_time) res_obj = make_result_mesh(results_name) res_obj = importToolsFem.fill_femresult_mechanical(res_obj, result_set) if analysis: @@ -218,16 +217,29 @@ def importFrd(filename, analysis=None, result_name_prefix="", result_analysis_ty res_obj = resulttools.fill_femresult_stats(res_obj) # if we have multiple results we delay the pipeline creation - if len(m["Results"]) == 1: + if number_of_increments == 1: setupPipeline(doc, analysis, results_name, [res_obj]) else: + multistep_value.append(step_time) multistep_result.append(res_obj) # we have collected all result objects, lets create the multistep result pipeline - if len(m["Results"]) > 1: - unit = FreeCAD.Units.Frequency - description = "Eigenmodes" + if number_of_increments > 1: + # figure out type and unit + unit = FreeCAD.Units.Unit("") + description = "Unknown" + if result_analysis_type == "frequency": + unit = FreeCAD.Units.Frequency + description = "Eigenmode" + elif result_analysis_type == "buckling": + description = "Buckling factor" + elif result_analysis_type == "thermomech": + unit = FreeCAD.Units.TimeSpan + description = "Timesteps" + elif result_analysis_type == "static": + description = "Load factor" + setupPipeline(doc, analysis, results_name, [multistep_result, multistep_value, unit, description])