Added Setting to program + fixed one typo

This commit is contained in:
Djalim Simaila 2023-04-27 13:23:02 +02:00
parent 18960e8e33
commit ff20488ceb
7 changed files with 53 additions and 21 deletions

View File

@ -1,5 +1,6 @@
from utils.math import data_extraction from utils.math import data_extraction
from utils.files.input import ScannedObject from utils.files.input import ScannedObject
from utils.settings.SettingManager import SettingManager
def progressbar_placeholder(percent:int): def progressbar_placeholder(percent:int):
""" """
@ -58,7 +59,12 @@ def get_discrete_data(obj:ScannedObject, ndigits:int, delta_z:float=1, update_pr
data = {} data = {}
for colone in colones: for colone in colones:
data[colone] = [] 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 progress = 0
for discrete_values in discrete_vertices: for discrete_values in discrete_vertices:
x,y,z = data_extraction.get_x_y_z_mean(discrete_values) x,y,z = data_extraction.get_x_y_z_mean(discrete_values)

View File

@ -14,7 +14,7 @@ class ResultFileNotGiven(Exception):
""" """
Exception raised when no faces was given. Exception raised when no faces was given.
""" """
class ScannedObject: class ScannedObject:
""" """
This class is used to manage the data of the 3D object. This class is used to manage the data of the 3D object.

View File

@ -2,6 +2,9 @@
This module is used to manage the output files of the program. 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: def format_data(data:dict, separator:str, selected_columns:list = None) -> str:
""" """
Format the data to be saved in the output file. 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 3 ;6 ;9
' '
""" """
isPrettier = SettingManager.get_instance().get_setting('pretiffy_output_file')
output = '' output = ''
if selected_columns is None: if selected_columns is None:
selected_columns = list(data.keys()) selected_columns = list(data.keys())
for column_name in selected_columns: 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' output += '\n'
for i in range(len(data[selected_columns[0]])): for i in range(len(data[selected_columns[0]])):
for column in selected_columns: 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' output += '\n'
return output return output

View File

@ -3,6 +3,7 @@ from PyQt5 import QtWidgets
from PyQt5.QtCore import QThread from PyQt5.QtCore import QThread
from PyQt5.QtWidgets import QFileDialog, QWidget from PyQt5.QtWidgets import QFileDialog, QWidget
from utils.files.input import ScannedObject from utils.files.input import ScannedObject
from utils.settings.SettingManager import SettingManager
from utils.graph2D.visplot_render import cross_section, render2D from utils.graph2D.visplot_render import cross_section, render2D
from utils.graph3D.visplot_render import render3D from utils.graph3D.visplot_render import render3D
from utils.gui.pyqt.main_window.UI_MainWindow import Ui_MainWindow 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) cb.addItems(self.graphType)
self.slots = [ self.slots = [
[self.slot0,None], [self.slot0,"Aucun"],
[self.slot1,None], [self.slot1,"Aucun"],
[self.slot2,None], [self.slot2,"Aucun"],
[self.slot3,None], [self.slot3,"Aucun"],
[self.slot4,None], [self.slot4,"Aucun"],
[self.slot5,None], [self.slot5,"Aucun"],
[self.slot6,None], [self.slot6,"Aucun"],
[self.slot7,None], [self.slot7,"Aucun"],
[self.slot8,None], [self.slot8,"Aucun"],
[self.slot9,None], [self.slot9,"Aucun"],
[self.slot10,None] [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 = [] self.threads = []
@ -127,8 +133,10 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
self.output_folder_path.setPlainText("Invalid folder path") self.output_folder_path.setPlainText("Invalid folder path")
return return
settings = SettingManager.get_instance()
for count,_ in enumerate(self.slots): for count,_ in enumerate(self.slots):
self.slots[count][1] = self.comboBoxes[count].currentText() self.slots[count][1] = self.comboBoxes[count].currentText()
settings.set_last_graph(count,self.slots[count][1])
self.clear_graphs() self.clear_graphs()
self.completed = 0 self.completed = 0

View File

@ -3,6 +3,7 @@ from utils.files.input import ScannedObject
from utils.files.output import save_output_file, format_data from utils.files.output import save_output_file, format_data
from utils.gui.pyqt.main_window.Workers.Worker import Worker from utils.gui.pyqt.main_window.Workers.Worker import Worker
from utils.data_processing.data_processing import get_discrete_data from utils.data_processing.data_processing import get_discrete_data
from utils.settings.SettingManager import SettingManager
class DiscreteDataProcessWorker(Worker): class DiscreteDataProcessWorker(Worker):
""" """
@ -28,14 +29,17 @@ class DiscreteDataProcessWorker(Worker):
self.set_weight(100) self.set_weight(100)
self.set_status("Saving data...") self.set_status("Saving data...")
self.update_progress(10) 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, format_data(discrete_data,
'\t', separator,
["X moy (en mm)", ["X moy (en mm)",
"Y moy (en mm)", "Y moy (en mm)",
"Z moy (en mm)", "Z moy (en mm)",
"Discretisation(en mm)", "Discretisation(en mm)",
"Rayon moyen (en mm)", "Rayon moyen (en mm)",
"Rayon ecart type (en mm)"] )) "Rayon ecart type (en mm)"]))
self.set_status("Done !") self.set_status("Done !")
self.finished.emit() self.finished.emit()

View File

@ -3,6 +3,7 @@ from utils.files.input import ScannedObject
from utils.files.output import save_output_file, format_data from utils.files.output import save_output_file, format_data
from utils.gui.pyqt.main_window.Workers.Worker import Worker from utils.gui.pyqt.main_window.Workers.Worker import Worker
from utils.data_processing.data_processing import get_raw_data from utils.data_processing.data_processing import get_raw_data
from utils.settings.SettingManager import SettingManager
class RawDataProcessWorker(Worker): class RawDataProcessWorker(Worker):
""" """
@ -26,9 +27,12 @@ class RawDataProcessWorker(Worker):
self.processedData.emit(raw_data) self.processedData.emit(raw_data)
self.set_weight(100) self.set_weight(100)
self.set_status("Saving data...") 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, format_data(raw_data,
'\t', separator,
["X (en mm)", ["X (en mm)",
"Y (en mm)", "Y (en mm)",
"Z (en mm)", "Z (en mm)",

View File

@ -36,7 +36,7 @@ class SettingManager:
self.settings['discretisation_method'] = 'Z0-Zi >= DeltaZ' # 'Z0-Zi < DeltaZ' self.settings['discretisation_method'] = 'Z0-Zi >= DeltaZ' # 'Z0-Zi < DeltaZ'
self.settings['raw_data_suffix'] = '_delta_{delta_z}_analyse_brute' self.settings['raw_data_suffix'] = '_delta_{delta_z}_analyse_brute'
self.settings['discrete_data_suffix'] = '_delta_{delta_z}_analyse_rayon' 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['output_file_separator'] = '\t'
self.settings['pretiffy_output_file'] = True self.settings['pretiffy_output_file'] = True
self.save() self.save()