From 7240b199b71be8dbdd9f824e78ce362c6fe20d2a Mon Sep 17 00:00:00 2001 From: epernod Date: Wed, 28 Jan 2026 23:45:30 +0100 Subject: [PATCH 1/4] Add option to test if mechanicalObject is mapped and used it according to requested option --- tools/RegressionSceneData.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/tools/RegressionSceneData.py b/tools/RegressionSceneData.py index ea8fc56..ed55f8a 100644 --- a/tools/RegressionSceneData.py +++ b/tools/RegressionSceneData.py @@ -29,6 +29,17 @@ def default(self, obj): return obj.tolist() return JSONEncoder.default(self, obj) + +def is_mapped(node): + mapping = node.getMechanicalMapping() + + if mapping is None: + return False + else: + return True + # no mapping in this node context + + class RegressionSceneData: def __init__(self, file_scene_path: str = None, file_ref_path: str = None, steps = 1000, @@ -89,10 +100,11 @@ def print_meca_objs(self): def parse_node(self, node, level = 0): for child in node.children: mstate = child.getMechanicalState() - if mstate: - if is_simulated(child): + if mstate and is_simulated(child): + + if self.meca_in_mapping is True or not is_mapped(child): self.meca_objs.append(mstate) - + self.parse_node(child, level + 1) From b59f22f1627f9cecbd5e06cc0b89b2874e025ca1 Mon Sep 17 00:00:00 2001 From: epernod Date: Thu, 29 Jan 2026 11:18:20 +0100 Subject: [PATCH 2/4] Fix parse_node regression method... IA is not perfect, I still have some room --- tools/RegressionSceneData.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/tools/RegressionSceneData.py b/tools/RegressionSceneData.py index ed55f8a..dfbd381 100644 --- a/tools/RegressionSceneData.py +++ b/tools/RegressionSceneData.py @@ -98,15 +98,16 @@ def print_meca_objs(self): def parse_node(self, node, level = 0): - for child in node.children: - mstate = child.getMechanicalState() - if mstate and is_simulated(child): - - if self.meca_in_mapping is True or not is_mapped(child): - self.meca_objs.append(mstate) + # first check current node + mstate = node.getMechanicalState() + if mstate and is_simulated(node): + if self.meca_in_mapping is True or not is_mapped(node): + self.meca_objs.append(mstate) + # recursively check children + for child in node.children: self.parse_node(child, level + 1) - + def add_compare_state(self): counter = 0 From 855a671b5b333f319954b2f60dba99cef9ea5a87 Mon Sep 17 00:00:00 2001 From: epernod Date: Thu, 29 Jan 2026 14:20:07 +0100 Subject: [PATCH 3/4] Fix test on is mapping --- tools/RegressionSceneData.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/RegressionSceneData.py b/tools/RegressionSceneData.py index dfbd381..b581608 100644 --- a/tools/RegressionSceneData.py +++ b/tools/RegressionSceneData.py @@ -62,7 +62,7 @@ def __init__(self, file_scene_path: str = None, file_ref_path: str = None, steps self.file_ref_path = file_ref_path self.steps = int(steps) self.epsilon = float(epsilon) - self.meca_in_mapping = meca_in_mapping + self.meca_in_mapping = bool(meca_in_mapping) self.dump_number_step = int(dump_number_step) self.meca_objs = [] self.filenames = [] @@ -103,6 +103,8 @@ def parse_node(self, node, level = 0): if mstate and is_simulated(node): if self.meca_in_mapping is True or not is_mapped(node): self.meca_objs.append(mstate) + if self.verbose: + print(" " * level + f"- Adding MechanicalObject: {mstate.name.value} from Node: {node.name.value}") # recursively check children for child in node.children: From a7c71d8759fb4d91109dd3abc22d540cadcfb71c Mon Sep 17 00:00:00 2001 From: epernod Date: Thu, 29 Jan 2026 14:38:21 +0100 Subject: [PATCH 4/4] Fix wrong conversin of meca_in_mapping from string to bool --- tools/RegressionSceneData.py | 2 +- tools/RegressionSceneList.py | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/tools/RegressionSceneData.py b/tools/RegressionSceneData.py index b581608..0c6e809 100644 --- a/tools/RegressionSceneData.py +++ b/tools/RegressionSceneData.py @@ -101,7 +101,7 @@ def parse_node(self, node, level = 0): # first check current node mstate = node.getMechanicalState() if mstate and is_simulated(node): - if self.meca_in_mapping is True or not is_mapped(node): + if self.meca_in_mapping is True or is_mapped(node) is False: self.meca_objs.append(mstate) if self.verbose: print(" " * level + f"- Adding MechanicalObject: {mstate.name.value} from Node: {node.name.value}") diff --git a/tools/RegressionSceneList.py b/tools/RegressionSceneList.py index a2cff1d..6a948a6 100644 --- a/tools/RegressionSceneList.py +++ b/tools/RegressionSceneList.py @@ -65,9 +65,12 @@ def process_file(self): full_file_path = os.path.join(self.file_dir, values[0]) full_ref_file_path = os.path.join(self.ref_dir_path, values[0]) - if len(values) == 5: + meca_in_mapping = False + if values[3] == '1': # converting string to Bool always gives True + meca_in_mapping = True + scene_data = RegressionSceneData.RegressionSceneData(full_file_path, full_ref_file_path, - values[1], values[2], values[3], values[4], + values[1], values[2], meca_in_mapping, values[4], self.disable_progress_bar) #scene_data.printInfo()