From c5795254bb2f3726910bc053b1c36b02d4b38850 Mon Sep 17 00:00:00 2001 From: Youen Date: Sat, 8 Oct 2022 19:09:37 +0200 Subject: [PATCH] removed old tools that are not maintained --- Init.py | 1 - InitGui.py | 36 ++++---- ahb_cmd_parse_step.py | 191 ------------------------------------------ 3 files changed, 20 insertions(+), 208 deletions(-) delete mode 100644 ahb_cmd_parse_step.py diff --git a/Init.py b/Init.py index e65e306..e5a2d8e 100644 --- a/Init.py +++ b/Init.py @@ -1,2 +1 @@ import FreeCAD - diff --git a/InitGui.py b/InitGui.py index 91c863e..3e80716 100644 --- a/InitGui.py +++ b/InitGui.py @@ -20,6 +20,8 @@ class AssemblyHandbookWorkbench(Gui.Workbench): dev = True # indicates development mode (enables additional tools, log, debug checks, etc.) context = None + + docObserver = None def GetClassName(self): return "Gui::PythonWorkbench" @@ -37,6 +39,11 @@ class AssemblyHandbookWorkbench(Gui.Workbench): if self.context is None: self.initializeContext() + import ahb_document_observer + if self.docObserver is None: + self.docObserver = ahb_document_observer.DocObserver() + App.addDocumentObserver(self.docObserver) + def Deactivated(self): """ code which should be computed when this workbench is deactivated @@ -50,31 +57,28 @@ class AssemblyHandbookWorkbench(Gui.Workbench): def registerCommands(self): toolbox = [] - self.importModule('ahb_cmd_export_csv') - toolbox.append("AHB_exportCsv") + #self.importModule('ahb_cmd_export_csv') + #toolbox.append("AHB_exportCsv") - self.importModule('ahb_cmd_set_active_stage') - toolbox.append("AHB_setActiveStage") + #self.importModule('ahb_cmd_set_active_stage') + #toolbox.append("AHB_setActiveStage") - self.importModule('ahb_cmd_set_part_stage') - toolbox.append("AHB_setPartStage") + #self.importModule('ahb_cmd_set_part_stage') + #toolbox.append("AHB_setPartStage") - self.importModule('ahb_cmd_switch_visibility_mode') - toolbox.append("AHB_switchVisibilityMode") + #self.importModule('ahb_cmd_switch_visibility_mode') + #toolbox.append("AHB_switchVisibilityMode") - self.importModule('ahb_cmd_render') - toolbox.append("AHB_render") + #self.importModule('ahb_cmd_render') + #toolbox.append("AHB_render") - self.importModule('ahb_cmd_animate') - toolbox.append("AHB_animate") - + #self.importModule('ahb_cmd_animate') + #toolbox.append("AHB_animate") + self.importModule('ahb_cmd_view_annotate') toolbox.append("AHB_view_annotate") if self.dev: - self.importModule('ahb_cmd_parse_step') - toolbox.append("AHB_parse_step") - self.importModule('ahb_cmd_reload') toolbox.append("AHB_reload") diff --git a/ahb_cmd_parse_step.py b/ahb_cmd_parse_step.py deleted file mode 100644 index 63f23c9..0000000 --- a/ahb_cmd_parse_step.py +++ /dev/null @@ -1,191 +0,0 @@ -import FreeCADGui as Gui -import FreeCAD as App - -import re -_object_reference_re = re.compile("^(.*?_)?((CHO|ELE|ROU|TSM|QIN|ACC|DIV|TXT|FRN|T|M|L|R)[0-9]+)(_[0-9]*)?$") -_object_reference_clean_re = re.compile("^(.*?)(_st[0-9]+)?$") -_bad_reference_re = re.compile("^[0-9]*$") -_has_number_re = re.compile("_[0-9]+$") - -class AHB_ParseStep: - def GetResources(self): - return {"MenuText": "[dev] parse STEP", - "ToolTip": "Reload informations from the original STEP file", - "Pixmap": "" - } - - def IsActive(self): - return True - - def Activated(self): - import step_parser - import os - import importlib - - importlib.reload(step_parser) - - print("Reloading STEP file metadata...") - - doc = App.activeDocument() - - filename: str = doc.FileName - if filename is None: - raise BaseException("You must save your FreeCAD document before parsing the corresponding STEP file") - - filename = os.path.splitext(filename)[0] + ".step" - - step_info = step_parser.parse(filename) - - objects = doc.Objects - - override_names = False - feature_idx = 0 - total_features = 0 - obj: App.DocumentObject - for obj in objects: - if obj.TypeId == 'Part::Feature': - if "Base_OriginalLabel" in obj.PropertiesList: - obj.Label = obj.Base_OriginalLabel - - total_features = total_features + 1 - object_idx = -1 - if override_names: - object_idx = feature_idx + 1 - else: - fixed_name = step_parser.process_name(obj.Label)[0] - for idx in range(len(step_info.objects)): - if step_info.objects[idx].name == fixed_name: - object_idx = idx - break - - if 0 <= object_idx < len(step_info.objects): - object_info = step_info.objects[object_idx] - print("phase 1 " + obj.Label + " => " + object_info.name) - - obj.Label = object_info.name - - if object_info.layer is not None: - if "Base_Reference" not in obj.PropertiesList: - obj.addProperty("App::PropertyString", "Base_Reference", "Base") - obj.Base_Reference = object_info.layer.reference - - if "Base_Layer" not in obj.PropertiesList: - obj.addProperty("App::PropertyString", "Base_Layer", "Base") - obj.Base_Layer = object_info.layer.name - feature_idx = feature_idx + 1 - - step_info2 = step_parser.parse(filename, 'SOLIDS') - print("STEP names phase 2 (" + str(len(step_info2.objects)) + ")") - feature_idx = 0 - - # don't know why, but these objects are not ordered like the others - special_objects = { - '10_01_003 F_st7758_1': 'COMPOUND005', # manivelle droite - 'Batterie': 'COMPOUND058', # batterie basse - 'Batterie_1': 'COMPOUND059', # batterie haute - 'Axa compactline 35-E 6v-12v dc': 'COMPOUND1272', # phare droit - 'Axa compactline 35-E 6v-12v dc_1': 'COMPOUND1273', # phare gauche - 'Potence_CHO44': 'COMPOUND732', # potence - 'CHO04': 'COMPOUND1290', # guidon - 'CHO40': 'COMPOUND1291', # garde-boue droit - 'CHO41': 'COMPOUND1292', # garde-boue gauche - 'Pochette laterale': 'COMPOUND1294', # pochette gauche - 'Pochette laterale_1': 'COMPOUND1293', # pochette droite - } - - object_idx = -1 - - for obj in objects: - if obj.TypeId == 'Part::Feature': - if object_idx >= 0: - object_idx = object_idx + 1 - - explicit_object_idx = -1 - for s in special_objects.items(): - if obj.Label == s[1]: - for idx, info in enumerate(step_info2.objects): - if info.name == s[0]: - explicit_object_idx = idx - - if explicit_object_idx >= 0: - object_idx = explicit_object_idx - else: - while True: - if object_idx < 0 or object_idx >= len(step_info2.objects): - break - object_info = step_info2.objects[object_idx] - skip = False - for s in special_objects.items(): - if s[0] == object_info.name: - skip = True - if skip: - object_idx = object_idx + 1 - else: - break - - if 0 <= object_idx < len(step_info2.objects): - object_info = step_info2.objects[object_idx] - - if obj.Label.startswith("COMPOUND"): - print("phase 2 " + obj.Label + " => " + object_info.name + " (ref="+object_info.layer.reference+", layer="+object_info.layer.name+")") - - if "Base_OriginalLabel" not in obj.PropertiesList: - obj.addProperty("App::PropertyString", "Base_OriginalLabel", "Base") - obj.Base_OriginalLabel = obj.Label - - final_ref = self.parse_vhelio_reference(object_info.name) - if object_info.layer is not None: - if final_ref is None: - final_ref = self.parse_vhelio_reference(step_parser.process_name(object_info.layer.reference)[1]) - - if final_ref is None: - final_ref = step_parser.process_name(object_info.layer.reference)[1] - if object_info.name != final_ref and not object_info.name.startswith(final_ref + "_"): - final_ref = None - - if final_ref is None: - final_ref = step_parser.process_name(object_info.name)[1] - - final_ref = _object_reference_clean_re.search(final_ref).group(1) - - if _bad_reference_re.search(final_ref) is not None: - final_ref = "inconnu" - if object_info.layer is not None and _bad_reference_re.search(object_info.layer.reference) is None: - final_ref = object_info.layer.reference - - if object_info.name == final_ref or object_info.name.startswith(final_ref + "_"): - new_label = object_info.layer.reference + "_" + final_ref - else: - if _bad_reference_re.search(object_info.name) is None or final_ref == "inconnu": - new_label = object_info.name - else: - new_label = final_ref - - if _has_number_re.search(new_label) is None: - new_label = new_label + "_01" - - obj.Label = new_label - - if "Base_Reference" not in obj.PropertiesList: - obj.addProperty("App::PropertyString", "Base_Reference", "Base") - obj.Base_Reference = final_ref - - if "Base_Layer" not in obj.PropertiesList: - obj.addProperty("App::PropertyString", "Base_Layer", "Base") - if object_info.layer is None: - obj.Base_Layer = "" - else: - obj.Base_Layer = object_info.layer.name - - feature_idx = feature_idx + 1 - - print("STEP names import finished") - - def parse_vhelio_reference(self, str): - object_reference_match = _object_reference_re.search(str) - if object_reference_match is not None: - return object_reference_match.group(2) - return None - -from ahb_command import AHB_CommandWrapper -AHB_CommandWrapper.addGuiCommand('AHB_parse_step', AHB_ParseStep())