diff --git a/utils/data_processing/data_processing.py b/utils/data_processing/data_processing.py index 8f6c009dd5ebe76e3a59d72f8083d63f425d199f..5e16ee6210db9f6a737dfcaa6a8c8a2a2ee49731 100644 --- a/utils/data_processing/data_processing.py +++ b/utils/data_processing/data_processing.py @@ -1,5 +1,6 @@ from utils.math import data_extraction from utils.files.input import ScannedObject +from utils.settings.SettingManager import SettingManager def progressbar_placeholder(percent:int): """ @@ -58,7 +59,12 @@ def get_discrete_data(obj:ScannedObject, ndigits:int, delta_z:float=1, update_pr data = {} for colone in colones: data[colone] = [] - discrete_vertices = obj.get_discrete_vertices(delta_z) + if SettingManager.get_instance().get_setting("discretisation_method") == "Z0-Zi < DeltaZ": + get_discrete_vertices = obj.get_discrete_vertices + else: + get_discrete_vertices = obj.get_discrete_vertices2 + + discrete_vertices = get_discrete_vertices(delta_z) progress = 0 for discrete_values in discrete_vertices: x,y,z = data_extraction.get_x_y_z_mean(discrete_values) diff --git a/utils/files/input.py b/utils/files/input.py index b29c8770f87c640543f4b0666079c8174ba8ffc0..040f5f9a041a811bcf17cfe87fa513ba4f79c3af 100644 --- a/utils/files/input.py +++ b/utils/files/input.py @@ -14,7 +14,7 @@ class ResultFileNotGiven(Exception): """ Exception raised when no faces was given. """ - + class ScannedObject: """ This class is used to manage the data of the 3D object. diff --git a/utils/files/output.py b/utils/files/output.py index 9f0ca90f81671b41210ec6323561938085fc5535..b228d1cf41c90b87c4153862685146ff86a6deb5 100644 --- a/utils/files/output.py +++ b/utils/files/output.py @@ -2,6 +2,9 @@ This module is used to manage the output files of the program. """ +from utils.settings.SettingManager import SettingManager + + def format_data(data:dict, separator:str, selected_columns:list = None) -> str: """ Format the data to be saved in the output file. @@ -24,15 +27,22 @@ def format_data(data:dict, separator:str, selected_columns:list = None) -> str: 3 ;6 ;9 ' """ + isPrettier = SettingManager.get_instance().get_setting('pretiffy_output_file') output = '' if selected_columns is None: selected_columns = list(data.keys()) for column_name in selected_columns: - output += column_name.ljust(len(column_name) if len(column_name) > 8 else 9 ) + separator + if isPrettier: + output += column_name.ljust(len(column_name) if len(column_name) > 8 else 9 ) + separator + else: + output += column_name + separator output += '\n' for i in range(len(data[selected_columns[0]])): for column in selected_columns: - output += str(data[column][i]).ljust(len(column) if len(column) > 8 else 9 ) + separator + if isPrettier: + output += str(data[column][i]).ljust(len(column) if len(column) > 8 else 9 ) + separator + else: + output += str(data[column][i]) + separator output += '\n' return output diff --git a/utils/gui/pyqt/main_window/MainWindow.py b/utils/gui/pyqt/main_window/MainWindow.py index c987da5246f5d381336abe663ef6d9384aa2f2cb..f0f80048c080df7a3de8b95fc4fc8c5f7a376aec 100644 --- a/utils/gui/pyqt/main_window/MainWindow.py +++ b/utils/gui/pyqt/main_window/MainWindow.py @@ -3,6 +3,7 @@ from PyQt5 import QtWidgets from PyQt5.QtCore import QThread from PyQt5.QtWidgets import QFileDialog, QWidget from utils.files.input import ScannedObject +from utils.settings.SettingManager import SettingManager from utils.graph2D.visplot_render import cross_section, render2D from utils.graph3D.visplot_render import render3D from utils.gui.pyqt.main_window.UI_MainWindow import Ui_MainWindow @@ -58,18 +59,23 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): cb.addItems(self.graphType) self.slots = [ - [self.slot0,None], - [self.slot1,None], - [self.slot2,None], - [self.slot3,None], - [self.slot4,None], - [self.slot5,None], - [self.slot6,None], - [self.slot7,None], - [self.slot8,None], - [self.slot9,None], - [self.slot10,None] + [self.slot0,"Aucun"], + [self.slot1,"Aucun"], + [self.slot2,"Aucun"], + [self.slot3,"Aucun"], + [self.slot4,"Aucun"], + [self.slot5,"Aucun"], + [self.slot6,"Aucun"], + [self.slot7,"Aucun"], + [self.slot8,"Aucun"], + [self.slot9,"Aucun"], + [self.slot10,"Aucun"] ] + + for slot_nb,slot in enumerate(self.slots): + slot[1] = SettingManager.get_instance().get_last_graph(slot_nb) + print(slot[1]) + self.comboBoxes[slot_nb].setCurrentText(slot[1]) self.threads = [] @@ -127,8 +133,10 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): self.output_folder_path.setPlainText("Invalid folder path") return + settings = SettingManager.get_instance() for count,_ in enumerate(self.slots): self.slots[count][1] = self.comboBoxes[count].currentText() + settings.set_last_graph(count,self.slots[count][1]) self.clear_graphs() self.completed = 0 diff --git a/utils/gui/pyqt/main_window/Workers/DiscreteDataWorker.py b/utils/gui/pyqt/main_window/Workers/DiscreteDataWorker.py index 39ef1ae2dc6bd2cb19f4a92902ddadc9390290a9..eed5594ebb9c8cf3ed68b2b70a1e09d38f884001 100644 --- a/utils/gui/pyqt/main_window/Workers/DiscreteDataWorker.py +++ b/utils/gui/pyqt/main_window/Workers/DiscreteDataWorker.py @@ -3,6 +3,7 @@ from utils.files.input import ScannedObject from utils.files.output import save_output_file, format_data from utils.gui.pyqt.main_window.Workers.Worker import Worker from utils.data_processing.data_processing import get_discrete_data +from utils.settings.SettingManager import SettingManager class DiscreteDataProcessWorker(Worker): """ @@ -28,14 +29,17 @@ class DiscreteDataProcessWorker(Worker): self.set_weight(100) self.set_status("Saving data...") self.update_progress(10) - save_output_file(f'{self.output_path}/{self.output_file_prefix}_delta_{self.delta_z}_analyse_rayon.txt', + suffix = SettingManager.get_instance().get_setting('discrete_data_suffix').replace('{delta_z}',str(self.delta_z)) + extension = SettingManager.get_instance().get_setting('output_file_extension') + separator = SettingManager.get_instance().get_setting('output_file_separator') + save_output_file(f'{self.output_path}/{self.output_file_prefix}{suffix}{extension}', format_data(discrete_data, - '\t', + separator, ["X moy (en mm)", "Y moy (en mm)", "Z moy (en mm)", "Discretisation(en mm)", "Rayon moyen (en mm)", - "Rayon ecart type (en mm)"] )) + "Rayon ecart type (en mm)"])) self.set_status("Done !") self.finished.emit() \ No newline at end of file diff --git a/utils/gui/pyqt/main_window/Workers/RawDataWorker.py b/utils/gui/pyqt/main_window/Workers/RawDataWorker.py index ecbb40ac3558090e6d9b58758722825c9af09e5a..76efa5a486682beeaf0e5c2f7923cc1bbc2accce 100644 --- a/utils/gui/pyqt/main_window/Workers/RawDataWorker.py +++ b/utils/gui/pyqt/main_window/Workers/RawDataWorker.py @@ -3,6 +3,7 @@ from utils.files.input import ScannedObject from utils.files.output import save_output_file, format_data from utils.gui.pyqt.main_window.Workers.Worker import Worker from utils.data_processing.data_processing import get_raw_data +from utils.settings.SettingManager import SettingManager class RawDataProcessWorker(Worker): """ @@ -26,9 +27,12 @@ class RawDataProcessWorker(Worker): self.processedData.emit(raw_data) self.set_weight(100) self.set_status("Saving data...") - save_output_file(f'{self.output_path}/{self.output_file_prefix}_delta_{self.delta_z}_analyse_brute.txt', + suffix = SettingManager.get_instance().get_setting('raw_data_suffix').replace('{delta_z}',str(self.delta_z)) + extension = SettingManager.get_instance().get_setting('output_file_extension') + separator = SettingManager.get_instance().get_setting('output_file_separator') + save_output_file(f'{self.output_path}/{self.output_file_prefix}{suffix}{extension}', format_data(raw_data, - '\t', + separator, ["X (en mm)", "Y (en mm)", "Z (en mm)", diff --git a/utils/settings/SettingManager.py b/utils/settings/SettingManager.py index 0b3c6674c7099b52a592a22113175b58750816a2..ae68c0357782411fa73ff0ec27d6453f181575e5 100644 --- a/utils/settings/SettingManager.py +++ b/utils/settings/SettingManager.py @@ -36,7 +36,7 @@ class SettingManager: self.settings['discretisation_method'] = 'Z0-Zi >= DeltaZ' # 'Z0-Zi < DeltaZ' self.settings['raw_data_suffix'] = '_delta_{delta_z}_analyse_brute' self.settings['discrete_data_suffix'] = '_delta_{delta_z}_analyse_rayon' - self.settings['output_file_extention'] = '.txt' + self.settings['output_file_extension'] = '.txt' self.settings['output_file_separator'] = '\t' self.settings['pretiffy_output_file'] = True self.save()