Wed 28 Aug 21:38:52 CEST 2024
This commit is contained in:
		
							parent
							
								
									4436231e0a
								
							
						
					
					
						commit
						e309560dca
					
				
							
								
								
									
										351
									
								
								src/SimNDT/gui/materialSetupController.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										351
									
								
								src/SimNDT/gui/materialSetupController.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,351 @@ | ||||||
|  | __author__ = 'Miguel Molero' | ||||||
|  | 
 | ||||||
|  | from PySide.QtCore import * | ||||||
|  | from PySide.QtGui import * | ||||||
|  | 
 | ||||||
|  | from SimNDT.gui.ui_materialsetup import Ui_materialSetupDialog | ||||||
|  | from SimNDT.gui.Warnings import WarningParms | ||||||
|  | from SimNDT.gui.constants import * | ||||||
|  | 
 | ||||||
|  | from SimNDT.gui.materialLibraryController import MaterialLibrary | ||||||
|  | import copy | ||||||
|  | from SimNDT.core.material import Material | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class MaterialSetup(QDialog, Ui_materialSetupDialog): | ||||||
|  |     def __init__(self, SimNDT_Materials, filename=None, parent=None): | ||||||
|  |         super(MaterialSetup, self).__init__(parent) | ||||||
|  |         self.setupUi(self) | ||||||
|  |         self.connectionSetup() | ||||||
|  |         self.initSetup() | ||||||
|  | 
 | ||||||
|  |         self.__IsOkAdd = True | ||||||
|  | 
 | ||||||
|  |         self.SimNDT_Materials = copy.deepcopy(SimNDT_Materials) | ||||||
|  |         self.filename = filename | ||||||
|  | 
 | ||||||
|  |         if self.SimNDT_Materials is not None: | ||||||
|  |             self.__NumMatTmp = len(self.SimNDT_Materials) | ||||||
|  |             self.updateValues(self.__NumMatTmp) | ||||||
|  |             self.deleteMaterialPushButton.setEnabled(True) | ||||||
|  |             # self.materialLibraryPushButton.setEnabled(True) | ||||||
|  |             self.secondFrame.setEnabled(True) | ||||||
|  |             self.previousPushButton.setEnabled(True) | ||||||
|  | 
 | ||||||
|  |         else: | ||||||
|  |             self.SimNDT_Materials = None | ||||||
|  |             self.dampingSetup(False) | ||||||
|  |             self.__NumMatTmp = 0 | ||||||
|  | 
 | ||||||
|  |     def connectionSetup(self): | ||||||
|  |         self.dampimgCheckBox.stateChanged.connect(self.dampingSetup) | ||||||
|  |         self.previousPushButton.pressed.connect(self.previous) | ||||||
|  |         self.nextPushButton.pressed.connect(self.next) | ||||||
|  |         self.addMaterialPushButton.pressed.connect(self.addMaterial) | ||||||
|  |         self.deleteMaterialPushButton.pressed.connect(self.deleteMaterial) | ||||||
|  |         self.applyPushButton.pressed.connect(self.apply) | ||||||
|  |         self.okPushButton.pressed.connect(self.accept) | ||||||
|  |         self.cancelPushButton.pressed.connect(self.reject) | ||||||
|  |         self.materialLibraryPushButton.pressed.connect(self.materialLibrary) | ||||||
|  | 
 | ||||||
|  |     def initSetup(self): | ||||||
|  | 
 | ||||||
|  |         self.rhoLabel.setText(RHO_LABEL) | ||||||
|  |         self.lambdaLabel.setText(LAMBDA_LABEL) | ||||||
|  |         self.muLabel.setText(MU_LABEL) | ||||||
|  |         self.etavLabel.setText(ETAV_LABEL) | ||||||
|  |         self.etasLabel.setText(ETAS_LABEL) | ||||||
|  |         self.infoLabel.setText("") | ||||||
|  |         self.dampingSetup(False) | ||||||
|  | 
 | ||||||
|  |         self.setFocusPolicy(Qt.NoFocus) | ||||||
|  |         self.previousPushButton.setFocusPolicy(Qt.NoFocus) | ||||||
|  |         self.nextPushButton.setFocusPolicy(Qt.NoFocus) | ||||||
|  |         self.deleteMaterialPushButton.setEnabled(False) | ||||||
|  |         self.materialLibraryPushButton.setEnabled(False) | ||||||
|  | 
 | ||||||
|  |         self.secondFrame.setEnabled(False) | ||||||
|  |         self.propertiesFrame.setEnabled(False) | ||||||
|  |         self.applyPushButton.setEnabled(False) | ||||||
|  | 
 | ||||||
|  |     def dampingSetup(self, state=False): | ||||||
|  | 
 | ||||||
|  |         self.etavLabel.setVisible(state) | ||||||
|  |         self.etasLabel.setVisible(state) | ||||||
|  |         self.etavLineEdit.setVisible(state) | ||||||
|  |         self.etasLineEdit.setVisible(state) | ||||||
|  | 
 | ||||||
|  |     def setValues(self, name, send_values): | ||||||
|  | 
 | ||||||
|  |         self.rhoLineEdit.setText("%0.2f" % send_values[0]) | ||||||
|  |         self.lambdaLineEdit.setText("%0.2f" % send_values[1]) | ||||||
|  |         self.muLineEdit.setText("%0.2f" % send_values[2]) | ||||||
|  |         self.materialNameLineEdit.setText(name) | ||||||
|  | 
 | ||||||
|  |         text = """ | ||||||
|  | 				      %s = %0.2f | ||||||
|  | 					  <p> %s = %0.2f | ||||||
|  | 			   """ % (VL_LABEL, send_values[3], | ||||||
|  |                       VT_LABEL, send_values[4]) | ||||||
|  | 
 | ||||||
|  |         self.infoLabel.setText(text) | ||||||
|  | 
 | ||||||
|  |     def setAllValues(self, name, values): | ||||||
|  | 
 | ||||||
|  |         self.rhoLineEdit.setText("%0.2f" % values[0]) | ||||||
|  |         self.lambdaLineEdit.setText("%0.2f" % values[1]) | ||||||
|  |         self.muLineEdit.setText("%0.2f" % values[2]) | ||||||
|  |         self.materialNameLineEdit.setText(name) | ||||||
|  | 
 | ||||||
|  |         text = """ | ||||||
|  | 				      %s = %0.2f | ||||||
|  | 					  <p> %s = %0.2f | ||||||
|  | 			   """ % (VL_LABEL, values[3], | ||||||
|  |                       VT_LABEL, values[4]) | ||||||
|  | 
 | ||||||
|  |         self.infoLabel.setText(text) | ||||||
|  | 
 | ||||||
|  |         self.labelSpinBox.setValue(values[5]) | ||||||
|  | 
 | ||||||
|  |         self.etavLineEdit.setText("%0.2f" % values[7]) | ||||||
|  |         self.etasLineEdit.setText("%0.2f" % values[8]) | ||||||
|  | 
 | ||||||
|  |     def setClear(self): | ||||||
|  | 
 | ||||||
|  |         self.rhoLineEdit.clear() | ||||||
|  |         self.lambdaLineEdit.clear() | ||||||
|  |         self.muLineEdit.clear() | ||||||
|  |         self.infoLabel.clear() | ||||||
|  |         self.etavLineEdit.clear() | ||||||
|  |         self.etasLineEdit.clear() | ||||||
|  | 
 | ||||||
|  |     def getAllValues(self): | ||||||
|  | 
 | ||||||
|  |         name = self.materialNameLineEdit.text() | ||||||
|  |         rho = float(self.rhoLineEdit.text()) | ||||||
|  |         lam = float(self.lambdaLineEdit.text()) * 1e9 | ||||||
|  |         mu = float(self.muLineEdit.text()) * 1e9 | ||||||
|  |         label = int(self.labelSpinBox.value()) | ||||||
|  |         damping = self.dampimgCheckBox.isChecked() | ||||||
|  | 
 | ||||||
|  |         try: | ||||||
|  |             etav = float(self.etavLineEdit.text()) | ||||||
|  |         except: | ||||||
|  |             etav = 0.0 | ||||||
|  | 
 | ||||||
|  |         try: | ||||||
|  |             etas = float(self.etasLineEdit.text()) | ||||||
|  |         except: | ||||||
|  |             etas = 0.0 | ||||||
|  | 
 | ||||||
|  |         values = (rho, lam, mu, label, damping, etav, etas) | ||||||
|  |         return name, values | ||||||
|  | 
 | ||||||
|  |     def previous(self): | ||||||
|  | 
 | ||||||
|  |         if self.SimNDT_Materials is None: | ||||||
|  |             return | ||||||
|  | 
 | ||||||
|  |         if len(self.SimNDT_Materials) >= 1: | ||||||
|  |             self.propertiesFrame.setEnabled(False) | ||||||
|  | 
 | ||||||
|  |             self.__NumMatTmp -= 1 | ||||||
|  |             if self.__NumMatTmp <= 1: | ||||||
|  |                 self.__NumMatTmp = 1 | ||||||
|  | 
 | ||||||
|  |             self.updateValues(self.__NumMatTmp) | ||||||
|  |             self.dampimgCheckBox.setChecked(self.SimNDT_Materials[self.__NumMatTmp - 1].Damping) | ||||||
|  |             if self.SimNDT_Materials[self.__NumMatTmp - 1].Damping: | ||||||
|  |                 self.dampingSetup(True) | ||||||
|  |             else: | ||||||
|  |                 self.dampingSetup(False) | ||||||
|  | 
 | ||||||
|  |     def next(self): | ||||||
|  | 
 | ||||||
|  |         if self.SimNDT_Materials is None: | ||||||
|  |             return | ||||||
|  | 
 | ||||||
|  |         if (self.__NumMatTmp + 1) <= len(self.SimNDT_Materials): | ||||||
|  | 
 | ||||||
|  |             self.__NumMatTmp += 1 | ||||||
|  |             self.propertiesFrame.setEnabled(False) | ||||||
|  |             self.updateValues(self.__NumMatTmp) | ||||||
|  | 
 | ||||||
|  |             self.dampimgCheckBox.setChecked(self.SimNDT_Materials[self.__NumMatTmp - 1].Damping) | ||||||
|  |             if self.SimNDT_Materials[self.__NumMatTmp - 1].Damping: | ||||||
|  |                 self.dampingSetup(True) | ||||||
|  |             else: | ||||||
|  |                 self.dampingSetup(False) | ||||||
|  | 
 | ||||||
|  |         if self.__NumMatTmp >= len(self.SimNDT_Materials): | ||||||
|  |             self.__NumMatTmp = len(self.SimNDT_Materials) | ||||||
|  | 
 | ||||||
|  |     def updateValues(self, num): | ||||||
|  | 
 | ||||||
|  |         self.materialNumberlabel.setText(self.tr("Material #%s" % num)) | ||||||
|  | 
 | ||||||
|  |         values = (self.SimNDT_Materials[num - 1].Rho,  # 0 | ||||||
|  |                   self.SimNDT_Materials[num - 1].C12 * 1e-9,  # 1 | ||||||
|  |                   self.SimNDT_Materials[num - 1].C44 * 1e-9,  # 2 | ||||||
|  |                   self.SimNDT_Materials[num - 1].VL,  # 3 | ||||||
|  |                   self.SimNDT_Materials[num - 1].VT,  # 4 | ||||||
|  |                   self.SimNDT_Materials[num - 1].Label,  # 5 | ||||||
|  |                   self.SimNDT_Materials[num - 1].Damping,  # 6 | ||||||
|  |                   self.SimNDT_Materials[num - 1].Eta_v,  # 7 | ||||||
|  |                   self.SimNDT_Materials[num - 1].Eta_s)  # 8 | ||||||
|  | 
 | ||||||
|  |         self.setAllValues(self.SimNDT_Materials[num - 1].Name, values) | ||||||
|  | 
 | ||||||
|  |         self.dampimgCheckBox.setChecked(self.SimNDT_Materials[num - 1].Damping) | ||||||
|  |         if self.SimNDT_Materials[num - 1].Damping: | ||||||
|  |             self.dampingSetup(True) | ||||||
|  |         else: | ||||||
|  |             self.dampingSetup(False) | ||||||
|  | 
 | ||||||
|  |     def addMaterial(self): | ||||||
|  | 
 | ||||||
|  |         if self.__IsOkAdd: | ||||||
|  | 
 | ||||||
|  |             self.addMaterialPushButton.setEnabled(False) | ||||||
|  |             self.__IsOkAdd = False | ||||||
|  |             self.deleteMaterialPushButton.setEnabled(True) | ||||||
|  |             self.materialLibraryPushButton.setEnabled(True) | ||||||
|  |             self.secondFrame.setEnabled(True) | ||||||
|  |             self.propertiesFrame.setEnabled(True) | ||||||
|  |             self.applyPushButton.setEnabled(True) | ||||||
|  |             self.okPushButton.setEnabled(True) | ||||||
|  | 
 | ||||||
|  |             if self.SimNDT_Materials is None: | ||||||
|  |                 self.previousPushButton.setEnabled(False) | ||||||
|  |                 self.nextPushButton.setEnabled(False) | ||||||
|  |                 self.deleteMaterialPushButton.setEnabled(False) | ||||||
|  |             elif len(self.SimNDT_Materials) == 1: | ||||||
|  |                 self.previousPushButton.setEnabled(False) | ||||||
|  |                 self.nextPushButton.setEnabled(False) | ||||||
|  |             else: | ||||||
|  |                 self.previousPushButton.setEnabled(True) | ||||||
|  |                 self.nextPushButton.setEnabled(True) | ||||||
|  | 
 | ||||||
|  |             if self.SimNDT_Materials is None: | ||||||
|  |                 self.__NumMatTmp = 0 | ||||||
|  |             else: | ||||||
|  |                 self.__NumMatTmp = len(self.SimNDT_Materials) | ||||||
|  | 
 | ||||||
|  |             self.__NumMatTmp += 1 | ||||||
|  | 
 | ||||||
|  |             self.materialNumberlabel.setText(self.tr("Material #%s" % self.__NumMatTmp)) | ||||||
|  |             self.materialNameLineEdit.clear() | ||||||
|  |             self.dampimgCheckBox.setChecked(False) | ||||||
|  | 
 | ||||||
|  |             self.setClear() | ||||||
|  | 
 | ||||||
|  |     def deleteMaterial(self): | ||||||
|  | 
 | ||||||
|  |         self.__IsOkAdd = True | ||||||
|  |         self.okPushButton.setEnabled(True) | ||||||
|  | 
 | ||||||
|  |         if self.SimNDT_Materials is None: | ||||||
|  |             self.deleteMaterialPushButton.setEnabled(False) | ||||||
|  |             return | ||||||
|  | 
 | ||||||
|  |         if len(self.SimNDT_Materials) >= 1: | ||||||
|  | 
 | ||||||
|  |             self.__NumMatTmp -= 1 | ||||||
|  |             self.SimNDT_Materials.pop(self.__NumMatTmp) | ||||||
|  | 
 | ||||||
|  |             if self.__NumMatTmp <= 0: | ||||||
|  |                 self.__NumMatTmp = 0 | ||||||
|  |                 self.SimNDT_Materials = None | ||||||
|  |                 self.deleteMaterialPushButton.setEnabled(False) | ||||||
|  |                 self.materialNumberlabel.setText(self.tr("Material #")) | ||||||
|  |                 self.materialNameLineEdit.clear() | ||||||
|  |                 self.dampimgCheckBox.setChecked(False) | ||||||
|  |                 self.setClear() | ||||||
|  |                 self.propertiesFrame.setEnabled(False) | ||||||
|  | 
 | ||||||
|  |             try: | ||||||
|  |                 self.updateValues(len(self.SimNDT_Materials)) | ||||||
|  |             except: | ||||||
|  |                 pass | ||||||
|  | 
 | ||||||
|  |             if self.__NumMatTmp <= 1: | ||||||
|  |                 self.addMaterialPushButton.setEnabled(True) | ||||||
|  |                 self.previousPushButton.setEnabled(False) | ||||||
|  |                 self.nextPushButton.setEnabled(False) | ||||||
|  | 
 | ||||||
|  |             else: | ||||||
|  |                 self.addMaterialPushButton.setEnabled(True) | ||||||
|  |                 self.previousPushButton.setEnabled(True) | ||||||
|  |                 self.nextPushButton.setEnabled(True) | ||||||
|  | 
 | ||||||
|  |     def apply(self): | ||||||
|  | 
 | ||||||
|  |         try: | ||||||
|  |             # if True: | ||||||
|  |             name, values = self.getAllValues() | ||||||
|  | 
 | ||||||
|  |             rho = values[0] | ||||||
|  |             c11 = (values[1] + 2 * values[2]) | ||||||
|  |             c22 = c11 | ||||||
|  |             c12 = values[1] | ||||||
|  |             c44 = values[2] | ||||||
|  |             label = values[3] | ||||||
|  | 
 | ||||||
|  |             damping = values[4] | ||||||
|  | 
 | ||||||
|  |             if damping: | ||||||
|  |                 eta_v = values[5] | ||||||
|  |                 eta_s = values[6] | ||||||
|  | 
 | ||||||
|  |             else: | ||||||
|  |                 eta_v = 1e-30 | ||||||
|  |                 eta_s = 1e-30 | ||||||
|  | 
 | ||||||
|  |             material = Material(name, rho, c11, c12, c22, c44, label, damping, eta_v, eta_s) | ||||||
|  | 
 | ||||||
|  |             if self.SimNDT_Materials is None: | ||||||
|  |                 self.SimNDT_Materials = list() | ||||||
|  |                 self.SimNDT_Materials.append(material) | ||||||
|  |             else: | ||||||
|  |                 N = len(self.SimNDT_Materials) | ||||||
|  |                 if N != 0 and self.__NumMatTmp - 1 < N: | ||||||
|  |                     self.SimNDT_Materials[self.__NumMatTmp - 1] = material | ||||||
|  |                 else: | ||||||
|  |                     self.SimNDT_Materials.append(material) | ||||||
|  | 
 | ||||||
|  |             if self.__NumMatTmp <= 1: | ||||||
|  |                 self.previousPushButton.setEnabled(False) | ||||||
|  |                 self.nextPushButton.setEnabled(False) | ||||||
|  | 
 | ||||||
|  |             else: | ||||||
|  |                 self.previousPushButton.setEnabled(True) | ||||||
|  |                 self.nextPushButton.setEnabled(True) | ||||||
|  | 
 | ||||||
|  |             self.deleteMaterialPushButton.setEnabled(True) | ||||||
|  |             self.addMaterialPushButton.setEnabled(True) | ||||||
|  |             self.applyPushButton.setEnabled(False) | ||||||
|  |             self.propertiesFrame.setEnabled(False) | ||||||
|  |             self.materialLibraryPushButton.setEnabled(False) | ||||||
|  |             self.__IsOkAdd = True | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |         except: | ||||||
|  |             msgBox = WarningParms() | ||||||
|  |             msgBox.exec_() | ||||||
|  | 
 | ||||||
|  |     def accept(self): | ||||||
|  | 
 | ||||||
|  |         if self.__IsOkAdd: | ||||||
|  |             QDialog.accept(self) | ||||||
|  | 
 | ||||||
|  |         else: | ||||||
|  |             msgBox = WarningParms("Please Apply your changes") | ||||||
|  |             msgBox.exec_() | ||||||
|  | 
 | ||||||
|  |     def materialLibrary(self): | ||||||
|  | 
 | ||||||
|  |         dlg = MaterialLibrary(filename=self.filename) | ||||||
|  |         if dlg.exec_(): | ||||||
|  |             name, values = dlg.getValues() | ||||||
|  |             send_values = (values[0], values[1] * 1e-9, values[2] * 1e-9, values[3], values[4]) | ||||||
|  |             self.setValues(name, send_values) | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user