Wed 28 Aug 21:38:52 CEST 2024
This commit is contained in:
		
							parent
							
								
									745f81d924
								
							
						
					
					
						commit
						c8719353a3
					
				
							
								
								
									
										516
									
								
								src/SimNDT/gui/managerDialogsController.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										516
									
								
								src/SimNDT/gui/managerDialogsController.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,516 @@ | |||
| __author__ = 'Miguel Molero' | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| import os | ||||
| import copy | ||||
| import subprocess | ||||
| 
 | ||||
| from PySide.QtCore import * | ||||
| from PySide.QtGui import * | ||||
| 
 | ||||
| from SimNDT.gui.newScenarioController import NewScenario | ||||
| from SimNDT.gui.addEllipseController import AddEllipse | ||||
| from SimNDT.gui.addRectangleController import AddRectangle | ||||
| from SimNDT.gui.loadScenarioFromImageController import LoadScenarioFromImage | ||||
| from SimNDT.gui.previewScenarioController import PreviewScenario | ||||
| 
 | ||||
| from SimNDT.gui.materialSetupController import MaterialSetup | ||||
| from SimNDT.gui.boundarySetupController import BoundarySetup | ||||
| from SimNDT.gui.singleLaunchSetupController import SingleLaunchSetup | ||||
| from SimNDT.gui.linearScanController import LinearScanSetup | ||||
| from SimNDT.gui.tomographySetupController import TomographySetup | ||||
| 
 | ||||
| from SimNDT.gui.simulationSetupController import SimulationSetup | ||||
| from SimNDT.gui.checkSimulationController import CheckSimulation | ||||
| from SimNDT.gui.runSimulationController import RunSimulation | ||||
| from SimNDT.gui.engineController import EngineController | ||||
| from SimNDT.gui.generateVideoController import GenerateVideo | ||||
| 
 | ||||
| from SimNDT.gui.twoPhaseModelDryCaseController import TwoPhaseModelDryCaseDialog | ||||
| from SimNDT.gui.threePhaseModelDryCaseController import ThreePhaseModelDryCaseDialog | ||||
| from SimNDT.gui.twoPhaseModelImmersionCaseController import TwoPhaseModelImmersionCaseDialog | ||||
| from SimNDT.gui.threePhaseModelImmersionCaseController import ThreePhaseModelImmersionCaseDialog | ||||
| 
 | ||||
| from SimNDT.core.scenario import Scenario | ||||
| from SimNDT.core.geometryObjects import Ellipse, Circle, Square, Rectangle | ||||
| from SimNDT.core.simPack import SimPack | ||||
| from SimNDT.core.receivers import Receivers | ||||
| 
 | ||||
| from SimNDT.gui.snapshots import SnapShots | ||||
| from SimNDT.gui.Warnings import WarningParms, DoneParms | ||||
| from SimNDT.gui import HelperMethods | ||||
| 
 | ||||
| 
 | ||||
| from SimNDT.core.concreteModel import TwoPhaseModel | ||||
| 
 | ||||
| 
 | ||||
| import numpy as np | ||||
| 
 | ||||
| def toIntList(stringList): | ||||
|   splitList = stringList.split(',') | ||||
|   if len(splitList)==1: | ||||
|     if splitList[0]=='': | ||||
|       splitList=[] # empty list | ||||
|   return [int(x) for x in splitList]     | ||||
| 
 | ||||
| 
 | ||||
| class ManagerDialogs(object): | ||||
|     lastSimulationSetup = dict( | ||||
|               isView = False, | ||||
|               color = 0, | ||||
|               dB = 60, | ||||
|               step = 100, | ||||
|               field = 3, | ||||
|               isReceiverPlot = False, | ||||
|               isEnableFields = False, | ||||
|               isEnableSignals = False, | ||||
|               isEnableImages = False, | ||||
|               isEnableNumPy = False, | ||||
|               isEnableVolume = False, | ||||
|               sensorShape = [], | ||||
|               sensorPlacement = [], | ||||
|               sensorSize = 0, | ||||
|               lastPath = ''             | ||||
|             ) | ||||
| 
 | ||||
|     def newGeometryModel(self): | ||||
| 
 | ||||
|         dialog = NewScenario() | ||||
| 
 | ||||
|         if self.SimNDT_Scenario is not None: | ||||
|             dialog.widthLineEdit.setText(str(self.SimNDT_Scenario.Width)) | ||||
|             dialog.heightLineEdit.setText(str(self.SimNDT_Scenario.Height)) | ||||
|             dialog.pixelLineEdit.setText(str(self.SimNDT_Scenario.Pixel_mm)) | ||||
|             dialog.labelSpinBox.setValue(int(self.SimNDT_Scenario.Label)) | ||||
| 
 | ||||
|         if dialog.exec_(): | ||||
|             width = dialog.width | ||||
|             height = dialog.height | ||||
|             pixel = dialog.pixel | ||||
|             label = dialog.label | ||||
| 
 | ||||
|             self.SimNDT_Scenario = Scenario(width,height,pixel,label) | ||||
|             self.SimNDT_ObjectList = None | ||||
|             self.SimNDT_Check = False | ||||
| 
 | ||||
|             self.dirty = True | ||||
| 
 | ||||
| 
 | ||||
|             self.updateUI() | ||||
| 
 | ||||
| 
 | ||||
|     def addEllipse(self): | ||||
|         dlg = AddEllipse() | ||||
|         if dlg.exec_(): | ||||
|             centerX, centerY, major, minor, theta, label = dlg.getParms() | ||||
|             if self.SimNDT_Scenario: | ||||
|                 try: | ||||
|                     self.SimNDT_Scenario.addEllipse(centerX, centerY, major, minor, theta, label) | ||||
|                     if major!=minor: | ||||
|                         obj = Ellipse(centerX, centerY, major, minor, theta, label) | ||||
|                     else: | ||||
|                         obj = Circle(centerX,centerY, major, label) | ||||
| 
 | ||||
|                 except Exception as e: | ||||
|                     msg = WarningParms("Error in the object generation!!!. %s"%e) | ||||
|                     msg.exec_() | ||||
|                     return | ||||
| 
 | ||||
|                 if self.SimNDT_ObjectList is None: | ||||
|                     self.SimNDT_ObjectList = list() | ||||
|                 self.SimNDT_ObjectList.append(obj) | ||||
| 
 | ||||
| 
 | ||||
|             self.dirty = True | ||||
|             self.updateUI() | ||||
| 
 | ||||
| 
 | ||||
|     def addRectangle(self): | ||||
| 
 | ||||
|         dlg = AddRectangle() | ||||
|         if dlg.exec_(): | ||||
|             centerX, centerY, width, height, theta, label = dlg.getParms() | ||||
|             if self.SimNDT_Scenario: | ||||
| 
 | ||||
|                 try: | ||||
|                     self.SimNDT_Scenario.addRectangle(centerX, centerY, width, height, theta, label) | ||||
|                     if width!=height: | ||||
|                         obj = Rectangle(centerX, centerY, width, height, theta, label) | ||||
|                     else: | ||||
|                         obj = Square(centerX,centerY, width, theta, label) | ||||
| 
 | ||||
|                 except Exception as e: | ||||
|                     msg = WarningParms("Error in the object generation!!!") | ||||
|                     msg.exec_() | ||||
|                     return | ||||
| 
 | ||||
|                 if self.SimNDT_ObjectList is None: | ||||
|                     self.SimNDT_ObjectList = list() | ||||
|                 self.SimNDT_ObjectList.append(obj) | ||||
| 
 | ||||
|             self.dirty = True | ||||
|             self.updateUI() | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|     def loadImage(self): | ||||
| 
 | ||||
|         dlg = LoadScenarioFromImage(self.filename) | ||||
|         if dlg.exec_(): | ||||
| 
 | ||||
| 
 | ||||
|             M,N    = np.shape(dlg.image_labeled) | ||||
|             Pixel = float(dlg.Pixel) | ||||
| 
 | ||||
|             Width  = N/Pixel | ||||
|             Height = M/Pixel | ||||
| 
 | ||||
|             if self.SimNDT_Scenario is None: | ||||
|                 self.SimNDT_Scenario = Scenario() | ||||
|                 self.SimNDT_Scenario.setImage(dlg.image_labeled, Width, Height, Pixel, Label=0) | ||||
|             else: | ||||
|                 self.SimNDT_Scenario.setImage(dlg.image_labeled, Width, Height, Pixel, Label=0) | ||||
| 
 | ||||
|             self.GraphicView.setupZoom(100) | ||||
|             self.statusBarWidget.zoomSpinBox.setValue(100) | ||||
| 
 | ||||
|             self.SimNDT_ObjectList	= None | ||||
|             self.SimNDT_Boundaries  = None | ||||
|             self.SimNDT_Check = False | ||||
| 
 | ||||
|             self.dirty = True | ||||
|             self.updateUI() | ||||
| 
 | ||||
| 
 | ||||
|     def previewScenario(self): | ||||
| 
 | ||||
|         dlg = PreviewScenario(self.SimNDT_Scenario, self) | ||||
|         dlg.show() | ||||
| 
 | ||||
| 
 | ||||
|     def rotateScenarioCounterClockwise(self): | ||||
| 
 | ||||
|         self.SimNDT_Scenario.rotate(direction="clockwise") | ||||
|         self.dirty = True | ||||
|         self.SimNDT_Check = False | ||||
|         self.updateUI() | ||||
| 
 | ||||
| 
 | ||||
|     def rotateScenarioClockwise(self): | ||||
|         self.SimNDT_Scenario.rotate(direction="counterclockwise") | ||||
|         self.dirty = True | ||||
|         self.SimNDT_Check = False | ||||
|         self.updateUI() | ||||
| 
 | ||||
| 
 | ||||
|     def materialSetup(self): | ||||
| 
 | ||||
|         dlg = MaterialSetup(self.SimNDT_Materials, filename = self.filename) | ||||
|         if dlg.exec_(): | ||||
|             self.SimNDT_Materials = copy.deepcopy(dlg.SimNDT_Materials) | ||||
|             self.dirty = True | ||||
| 
 | ||||
|             self.SimNDT_Check = False | ||||
|             self.updateUI() | ||||
| 
 | ||||
| 
 | ||||
|     def boundarySetup(self): | ||||
| 
 | ||||
|         dlg = BoundarySetup(self.SimNDT_Boundaries) | ||||
|         if dlg.exec_(): | ||||
|             self.SimNDT_Boundaries = copy.deepcopy(dlg.Boundaries) | ||||
|             self.SimNDT_Scenario.createBoundaries(self.SimNDT_Boundaries) | ||||
| 
 | ||||
|             self.dirty = True | ||||
|             self.SimNDT_Check = False | ||||
|             self.updateUI() | ||||
| 
 | ||||
| 
 | ||||
|     def singleLaunchSetup(self): | ||||
| 
 | ||||
|         dlg = SingleLaunchSetup(self.SimNDT_Scenario, self.SimNDT_Source, self.SimNDT_Inspection, self.SimNDT_Transducers, self.SimNDT_Signal) | ||||
|         if dlg.exec_(): | ||||
| 
 | ||||
|             self.SimNDT_Source = copy.deepcopy(dlg.Source) | ||||
|             self.SimNDT_Transducers = copy.deepcopy(dlg.Transducers) | ||||
|             self.SimNDT_Inspection = copy.deepcopy(dlg.Inspection) | ||||
|             self.SimNDT_Signal = copy.deepcopy(dlg.Signal) | ||||
| 
 | ||||
|             self.SimNDT_Check = False | ||||
|             self.dirty = True | ||||
|             self.updateUI() | ||||
| 
 | ||||
| 
 | ||||
|     def linearScanSetup(self): | ||||
|         dlg = LinearScanSetup(self.SimNDT_Scenario, self.SimNDT_Source, self.SimNDT_Inspection, self.SimNDT_Transducers, self.SimNDT_Signal) | ||||
|         if dlg.exec_(): | ||||
| 
 | ||||
|             self.SimNDT_Source = copy.deepcopy(dlg.Source) | ||||
|             self.SimNDT_Transducers = copy.deepcopy(dlg.Transducers) | ||||
|             self.SimNDT_Inspection = copy.deepcopy(dlg.Inspection) | ||||
|             self.SimNDT_Signal = copy.deepcopy(dlg.Signal) | ||||
| 
 | ||||
|             self.SimNDT_Check = False | ||||
|             self.dirty = True | ||||
|             self.updateUI() | ||||
| 
 | ||||
| 
 | ||||
|     def tomographySetup(self): | ||||
|         dlg = TomographySetup(self.SimNDT_Scenario, self.SimNDT_Source, self.SimNDT_Inspection, self.SimNDT_Transducers, self.SimNDT_Signal) | ||||
|         if dlg.exec_(): | ||||
| 
 | ||||
| 
 | ||||
|             self.SimNDT_Source = copy.deepcopy(dlg.Source) | ||||
|             self.SimNDT_Transducers = copy.deepcopy(dlg.Transducers) | ||||
|             self.SimNDT_Inspection = copy.deepcopy(dlg.Inspection) | ||||
|             self.SimNDT_Signal = copy.deepcopy(dlg.Signal) | ||||
| 
 | ||||
|             self.SimNDT_Check = False | ||||
|             self.dirty = True | ||||
|             self.updateUI() | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|     def signalSetup(self): | ||||
|         pass | ||||
| 
 | ||||
|     def simulationSetup(self): | ||||
| 
 | ||||
|         dlg = SimulationSetup(self.SimNDT_Scenario, self.SimNDT_Materials, | ||||
|                               self.SimNDT_Transducers, self.SimNDT_Signal, | ||||
|                               self.SimNDT_Simulation) | ||||
|         if dlg.exec_(): | ||||
| 
 | ||||
|             self.SimNDT_Simulation = copy.deepcopy(dlg.Simulation) | ||||
|             self.dirty = True | ||||
|             self.OpenSimFile = False | ||||
|             self.SimNDT_Check = False | ||||
|             self.updateUI() | ||||
| 
 | ||||
| 
 | ||||
|     def checkSimulation(self): | ||||
| 
 | ||||
|         dlg = CheckSimulation(self.SimNDT_Scenario, self.SimNDT_Materials, self.SimNDT_Boundaries, | ||||
|                               self.SimNDT_Transducers, self.SimNDT_Inspection, self.SimNDT_Signal, self.SimNDT_Simulation) | ||||
| 
 | ||||
|         self.SimNDT_Check = False | ||||
| 
 | ||||
|         if dlg.exec_(): | ||||
|             self.SimNDT_Check = True | ||||
| 
 | ||||
|         self.SimNDT_Scenario = copy.deepcopy(dlg.Scenario) | ||||
|         self.SimNDT_Boundaries = copy.deepcopy(dlg.Boundaries) | ||||
|         self.SimNDT_Inspection = copy.deepcopy(dlg.Inspection) | ||||
|         self.dirty = True | ||||
|         self.OpenSimFile = False | ||||
|         self.updateUI() | ||||
| 
 | ||||
| 
 | ||||
|     def runSimulation(self): | ||||
|         self.SimNDT_Simulation.lastSimulationSetup = self.lastSimulationSetup | ||||
|         dlg = RunSimulation(self.filename, self.SimNDT_Simulation) | ||||
|         if dlg.exec_(): | ||||
| 
 | ||||
|             DB = dlg.visualizacionRangeSpinBox.value() | ||||
|             color = dlg.colormapComboBox.currentIndex() | ||||
|             field = dlg.fieldSelectorComboBox.currentIndex() | ||||
|             step = dlg.snapshotStepSpinBox.value() | ||||
|             isView = dlg.viewCheckBox.isChecked() | ||||
|             isReceiverPlot = dlg.receiverCheckBox.isChecked() | ||||
|             isEnableFields = dlg.enableSavingFieldsCheckBox.isChecked() | ||||
|             isEnableSignals = dlg.enableSavingSignalsCheckBox.isChecked() | ||||
|             isEnableImages = dlg.enableSavingImagesCheckBox.isChecked() | ||||
|             isEnableNumPy = dlg.enableSavingNumpyCheckBox.isChecked() | ||||
|             isEnableVolume = dlg.enableSavingVolumeCheckBox.isChecked() | ||||
|             sensorShape = toIntList(dlg.signalShapeLineEdit.text()) | ||||
|             sensorPlacement = toIntList(dlg.signalPlacementLineEdit.text()) | ||||
|             sensorSize = float(dlg.signalSizeLineEdit.text()) | ||||
|             lastPath = self.lastSimulationSetup["lastPath"] | ||||
|             self.lastSimulationSetup = dict( | ||||
|               isView          = dlg.viewCheckBox.isChecked(), | ||||
|               color           = color, | ||||
|               dB              = DB, | ||||
|               step            = step, | ||||
|               field           = field, | ||||
|               isReceiverPlot  = isReceiverPlot, | ||||
|               isEnableFields  = isEnableFields, | ||||
|               isEnableSignals = isEnableSignals, | ||||
|               isEnableImages  = isEnableImages, | ||||
|               isEnableNumPy   = isEnableNumPy, | ||||
|               isEnableVolume  = isEnableVolume, | ||||
|               sensorShape     = sensorShape, | ||||
|               sensorPlacement = sensorPlacement, | ||||
|               sensorSize      = sensorSize, | ||||
|               lastPath        = lastPath            | ||||
|             ) | ||||
|             if isView: | ||||
|                 self.GraphicView.setColormap(color) | ||||
| 
 | ||||
|             if dlg.basename is not None: | ||||
|                 self.SimNDT_SnapShots = SnapShots(True, Step=step, Filename = dlg.basename, dB = DB,  | ||||
|                                                   Color = color, | ||||
|                                                   Field = field,  | ||||
|                                                   enableFields=isEnableFields, | ||||
|                                                   enableSignals=isEnableSignals, | ||||
|                                                   enableImages=isEnableImages, | ||||
|                                                   enableNumPy=isEnableNumPy, | ||||
|                                                   enableVolume=isEnableVolume, | ||||
|                                                   enableView=isView, | ||||
|                                                   sensorShape = sensorShape, | ||||
|                                                   sensorPlacement = sensorPlacement, | ||||
|                                                   sensorSize = sensorSize ) | ||||
|             else: | ||||
|                 self.SimNDT_SnapShots = SnapShots(dB = DB, | ||||
|                                                   enableFields=isEnableFields, | ||||
|                                                   enableSignals=isEnableSignals, | ||||
|                                                   enableImages=isEnableImages, | ||||
|                                                   enableNumPy=isEnableNumPy, | ||||
|                                                   enableVolume=isEnableVolume, | ||||
|                                                   enableView=isView) | ||||
| 
 | ||||
| 
 | ||||
|             self.runEngine(isView, isReceiverPlot) | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|     def runEngine(self, isView=False, isReceiverPlot=False): | ||||
| 
 | ||||
| 
 | ||||
|         self.dirty = True | ||||
| 
 | ||||
|         self.menuFile.menuAction().setEnabled(False) | ||||
|         self.menuConfiguration.menuAction().setEnabled(False) | ||||
|         self.menuPlotting_Tools.menuAction().setEnabled(False) | ||||
|         self.menuTools.menuAction().setEnabled(False) | ||||
|         HelperMethods.setEnabled(self.fileMenuActions, False) | ||||
|         HelperMethods.setEnabled(self.geometryMenuActions, False) | ||||
|         HelperMethods.setEnabled(self.inspectionMenuActions, False) | ||||
|         HelperMethods.setEnabled(self.simulationMenuActions, False) | ||||
| 
 | ||||
| 
 | ||||
|         self.statusBarWidget.startSimulation(self.SimNDT_Simulation.TimeSteps) | ||||
| 
 | ||||
|         if isView: | ||||
|             self.statusBarWidget.viewOn() | ||||
|         else: | ||||
|             self.statusBarWidget.updateGeometryFrame() | ||||
| 
 | ||||
| 
 | ||||
|         simPack = SimPack(self.SimNDT_Scenario, self.SimNDT_Materials, self.SimNDT_Boundaries, | ||||
|                           self.SimNDT_Inspection, self.SimNDT_Source, self.SimNDT_Transducers, self.SimNDT_Signal, | ||||
|                           self.SimNDT_Simulation) | ||||
| 
 | ||||
|         engine = EngineController(simPack, isView, isReceiverPlot, self.statusBarWidget, self) | ||||
| 
 | ||||
| 
 | ||||
|         state = engine.run() | ||||
| 
 | ||||
| 
 | ||||
|         self.statusBarWidget.endSimulation() | ||||
| 
 | ||||
|         self.PauseSimulation = False | ||||
| 
 | ||||
|         if state == "Stop": | ||||
|             self.StopSimulation = False | ||||
|             self.status.showMessage("Stop by User!!!!!", 15000) | ||||
|             message = WarningParms("Stop by User!!!") | ||||
|             message.exec_() | ||||
|         else: | ||||
|             self.status.showMessage("Done", 15000) | ||||
|             message = DoneParms() | ||||
|             message.exec_() | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|         self.menuFile.menuAction().setEnabled(True) | ||||
|         self.menuConfiguration.menuAction().setEnabled(True) | ||||
|         self.menuPlotting_Tools.menuAction().setEnabled(True) | ||||
|         self.menuTools.menuAction().setEnabled(True) | ||||
|         HelperMethods.setEnabled(self.fileMenuActions, True) | ||||
|         HelperMethods.setEnabled(self.geometryMenuActions, True) | ||||
|         HelperMethods.setEnabled(self.inspectionMenuActions, True) | ||||
|         HelperMethods.setEnabled(self.simulationMenuActions, True) | ||||
| 
 | ||||
| 
 | ||||
|         self.setPlotInspectionsMenu() | ||||
|         self.SimNDT_Receivers = Receivers(self.SimNDT_Inspection.Name) | ||||
|         self.SimNDT_Receivers.setReceivers(engine) | ||||
| 
 | ||||
| 
 | ||||
|     def generateVideo(self): | ||||
| 
 | ||||
|         dlg = GenerateVideo() | ||||
|         dlg.exec_() | ||||
| 
 | ||||
| 
 | ||||
|     def twoPhaseModelDryCase(self): | ||||
| 
 | ||||
|         dlg = TwoPhaseModelDryCaseDialog(None, self.SimNDT_Scenario, self.SimNDT_ConcreteMicrostructure) | ||||
|         if dlg.exec_(): | ||||
| 
 | ||||
|             self.SimNDT_Scenario.I = dlg.image | ||||
|             self.SimNDT_Scenario.resetBoundary() | ||||
|             self.SimNDT_ObjectList = None | ||||
|             self.SimNDT_Check = False | ||||
|             self.dirty = True | ||||
| 
 | ||||
| 
 | ||||
|             self.SimNDT_ConcreteMicrostructure = dlg.concrete2PhaseObject | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|             self.updateUI() | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|     def threePhaseModelDryCase(self): | ||||
| 
 | ||||
|         dlg = ThreePhaseModelDryCaseDialog(None, self.SimNDT_Scenario, self.SimNDT_ConcreteMicrostructure) | ||||
|         if dlg.exec_(): | ||||
| 
 | ||||
|             self.SimNDT_Scenario.I = dlg.image | ||||
|             self.SimNDT_Scenario.resetBoundary() | ||||
|             self.SimNDT_ObjectList = None | ||||
|             self.SimNDT_Check = False | ||||
|             self.dirty = True | ||||
| 
 | ||||
|             self.SimNDT_ConcreteMicrostructure = dlg.concrete3PhaseObject | ||||
| 
 | ||||
|             self.updateUI() | ||||
| 
 | ||||
| 
 | ||||
|     def twoPhaseModelImmersionCase(self): | ||||
| 
 | ||||
|         dlg = TwoPhaseModelImmersionCaseDialog(None, self.SimNDT_Scenario, self.SimNDT_ConcreteMicrostructure) | ||||
|         if dlg.exec_(): | ||||
| 
 | ||||
|             self.SimNDT_Scenario.I = dlg.image | ||||
|             self.SimNDT_Scenario.resetBoundary() | ||||
|             self.SimNDT_ObjectList = None | ||||
|             self.SimNDT_Check = False | ||||
|             self.dirty = True | ||||
| 
 | ||||
|             self.SimNDT_ConcreteMicrostructure = dlg.concrete2PhaseObjectImmersion | ||||
| 
 | ||||
| 
 | ||||
|             self.updateUI() | ||||
| 
 | ||||
| 
 | ||||
|     def threePhaseModelImmersionCase(self): | ||||
| 
 | ||||
|         dlg = ThreePhaseModelImmersionCaseDialog(None, self.SimNDT_Scenario, self.SimNDT_ConcreteMicrostructure) | ||||
|         if dlg.exec_(): | ||||
| 
 | ||||
|             self.SimNDT_Scenario.I = dlg.image | ||||
|             self.SimNDT_Scenario.resetBoundary() | ||||
|             self.SimNDT_ObjectList = None | ||||
|             self.SimNDT_Check = False | ||||
|             self.dirty = True | ||||
| 
 | ||||
|             self.SimNDT_ConcreteMicrostructure = dlg.concrete3PhaseObjectImmersion | ||||
| 
 | ||||
|             self.updateUI() | ||||
| 
 | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user