From 0ecf214e2634393436335b5e6a37414a697b9afe Mon Sep 17 00:00:00 2001 From: brothermechanic Date: Tue, 9 Apr 2024 18:08:09 +0300 Subject: [PATCH] FreeCAD: data base names --- cg/freecad/utils/freecad_exporters.py | 22 +++++++++++----------- cg/freecad/utils/freecad_tools.py | 6 +++--- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/cg/freecad/utils/freecad_exporters.py b/cg/freecad/utils/freecad_exporters.py index b20232b..3ef1ad9 100644 --- a/cg/freecad/utils/freecad_exporters.py +++ b/cg/freecad/utils/freecad_exporters.py @@ -70,21 +70,21 @@ def export_assembly_trees(doc, clones_dic=None) -> list: if not root.InList if root.isDerivedFrom('App::Part')] - tree_files = [] + trees = [] for root_locator in root_locators: dict_tree = {} freecad_tools.hierarchy_tree(root_locator, dict_tree, clones_dic) + trees.append(dict_tree) + # write file + project_dir = os.path.dirname(doc.FileName) + trees_path = os.path.join(project_dir, 'trees.json') + with open(trees_path, 'w', encoding='utf-8') as json_file: + json.dump(trees, json_file, ensure_ascii=False, indent=4) + logger.info('Assembly tree saved successfully to %s!', trees_path) - # write file - project_dir = os.path.dirname(doc.FileName) - assembly_tree_path = os.path.join(project_dir, root_locator.Label + '_tree_version.json') - with open(assembly_tree_path, 'w', encoding='utf-8') as json_file: - json.dump(dict_tree, json_file, ensure_ascii=False, indent=4) - logger.info('Assembly tree saved successfully to %s!', assembly_tree_path) - tree_files.append(assembly_tree_path) - logger.info('Saved %s assembly trees!', len(tree_files)) + logger.info('Saved %s assembly trees!', len(trees)) - return tree_files + return trees_path def export_parts_database( @@ -197,7 +197,7 @@ def export_parts_database( parts_db.append(db_obj) logger.info('Passed %s parts without errors', len(parts_db)) - parts_db_path = os.path.join(project_dir, FreeCAD.ActiveDocument.Label + '_parts_data.json') + parts_db_path = os.path.join(project_dir, 'parts.json') with open(parts_db_path, 'w', encoding='utf-8') as json_file: json.dump(parts_db, json_file, ensure_ascii=False, indent=4) logger.info('Parts Database exported successfully to %s!', parts_db_path) diff --git a/cg/freecad/utils/freecad_tools.py b/cg/freecad/utils/freecad_tools.py index 530e9c0..5768746 100644 --- a/cg/freecad/utils/freecad_tools.py +++ b/cg/freecad/utils/freecad_tools.py @@ -260,7 +260,6 @@ def hierarchy_tree(obj, dict_tree, clones_dic=None) -> dict: ] } ''' - # collect type if obj.isDerivedFrom('Part::Feature'): if obj.isDerivedFrom('PartDesign::CoordinateSystem'): @@ -274,9 +273,10 @@ def hierarchy_tree(obj, dict_tree, clones_dic=None) -> dict: # collect name dict_tree['name'] = obj.Label # collect base_name - dict_tree['base_name'] = '' if clones_dic: - if obj.isDerivedFrom('Part::Feature'): + if obj.isDerivedFrom('Part::Feature') and ( + not obj.isDerivedFrom('PartDesign::CoordinateSystem')): + dict_tree['base_name'] = obj.Label for k, v in clones_dic.items(): if obj.Label in v: dict_tree['base_name'] = k