Source code for pyleecan.GUI.Dialog.DMachineSetup.SMHoleMag.PHoleM54.PHoleM54

# -*- coding: utf-8 -*-

from PySide2.QtCore import Signal
from PySide2.QtWidgets import QWidget

from ......Classes.HoleM54 import HoleM54
from ......GUI import gui_option
from ......GUI.Dialog.DMachineSetup.SMHoleMag.PHoleM54.Gen_PHoleM54 import Gen_PHoleM54
from ......Methods.Slot.Slot import SlotCheckError


[docs]class PHoleM54(Gen_PHoleM54, QWidget): """Page to set the Hole Type 54""" # Signal to DMachineSetup to know that the save popup is needed saveNeeded = Signal() # Information for WHoleMag hole_name = "Hole Type 54" hole_type = HoleM54 def __init__(self, hole=None, material_dict=None): """Initialize the widget according to hole Parameters ---------- self : PHoleM54 A PHoleM54 widget hole : HoleM54 current hole to edit material_dict: dict Materials dictionary (library + machine) """ # Build the interface according to the .ui file QWidget.__init__(self) self.setupUi(self) # Set FloatEdit unit self.lf_W0.unit = "rad" self.lf_R1.unit = "m" self.lf_H0.unit = "m" self.lf_H1.unit = "m" # Set unit name (m ou mm) self.u = gui_option.unit wid_list = [self.unit_R1, self.unit_H0, self.unit_H1] for wid in wid_list: wid.setText("[" + self.u.get_m_name() + "]") self.material_dict = material_dict self.hole = hole # Set default materials self.w_mat_0.setText("mat_void") self.w_mat_0.def_mat = "Air" self.w_mat_0.is_hide_button = True # Set current material self.w_mat_0.update(self.hole, "mat_void", self.material_dict) # Fill the fields with the machine values (if they're filled) self.lf_W0.setValue(self.hole.W0) self.lf_R1.setValue(self.hole.R1) self.lf_H0.setValue(self.hole.H0) self.lf_H1.setValue(self.hole.H1) # Display the main output of the hole (surface, height...) self.comp_output() # Connect the signal self.lf_W0.editingFinished.connect(self.set_W0) self.lf_R1.editingFinished.connect(self.set_R1) self.lf_H0.editingFinished.connect(self.set_H0) self.lf_H1.editingFinished.connect(self.set_H1) self.w_mat_0.saveNeeded.connect(self.emit_save)
[docs] def emit_save(self): """Send a saveNeeded signal to the DMachineSetup""" self.saveNeeded.emit()
[docs] def set_W0(self): """Signal to update the value of W0 according to the line edit Parameters ---------- self : PHoleM54 A PHoleM54 widget """ self.hole.W0 = self.lf_W0.value() self.comp_output() # Notify the machine GUI that the machine has changed self.saveNeeded.emit()
[docs] def set_R1(self): """Signal to update the value of R1 according to the line edit Parameters ---------- self : PHoleM54 A PHoleM54 widget """ self.hole.R1 = self.lf_R1.value() self.comp_output() # Notify the machine GUI that the machine has changed self.saveNeeded.emit()
[docs] def set_H0(self): """Signal to update the value of H0 according to the line edit Parameters ---------- self : PHoleM54 A PHoleM54 widget """ self.hole.H0 = self.lf_H0.value() self.comp_output() # Notify the machine GUI that the machine has changed self.saveNeeded.emit()
[docs] def set_H1(self): """Signal to update the value of H1 according to the line edit Parameters ---------- self : PHoleM54 A PHoleM54 widget """ self.hole.H1 = self.lf_H1.value() self.comp_output() # Notify the machine GUI that the machine has changed self.saveNeeded.emit()
[docs] def comp_output(self): """Compute and display the hole output Parameters ---------- self : PHoleM54 A PHoleM54 widget """ if self.check() is None: # We compute the output only if the hole is correctly set # Compute all the needed output as string s_surf = format(self.u.get_m2(self.hole.comp_surface()), ".4g") # Update the GUI to display the Output self.out_slot_surface.setText( "Slot suface : " + s_surf + " " + self.u.get_m2_name() ) else: # We can't compute the output => We erase the previous version # (that way the user know that something is wrong) self.out_slot_surface.setText("Slot suface : ?")
[docs] def check(self): """Check that the current machine have all the needed field set Parameters ---------- self : PHoleM54 A PHoleM54 widget Returns ------- error : str Error message (return None if no error) """ # Constraints and None try: self.hole.check() except SlotCheckError as error: return str(error)