Wed 28 Aug 21:38:52 CEST 2024
This commit is contained in:
		
							parent
							
								
									c8719353a3
								
							
						
					
					
						commit
						76f58928f0
					
				
							
								
								
									
										325
									
								
								src/SimNDT/gui/linearScanController.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										325
									
								
								src/SimNDT/gui/linearScanController.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,325 @@ | ||||||
|  | __author__ = 'Miguel Molero' | ||||||
|  | 
 | ||||||
|  | import copy | ||||||
|  | import numpy as np | ||||||
|  | 
 | ||||||
|  | from PySide.QtCore import * | ||||||
|  | from PySide.QtGui import * | ||||||
|  | 
 | ||||||
|  | from SimNDT.gui.ui_linearscansetup import Ui_linearScanSetupDialog | ||||||
|  | 
 | ||||||
|  | from SimNDT.gui.Warnings import WarningParms | ||||||
|  | from SimNDT.gui.advancedSetupInspectionsController import AdvancedSetupInspections | ||||||
|  | from SimNDT.gui.signalSetupController import SignalSetup | ||||||
|  | from SimNDT.gui.previewInspectionsController import PreviewLinearScan | ||||||
|  | 
 | ||||||
|  | from SimNDT.core.constants import * | ||||||
|  | from SimNDT.core.transducer import Transducer | ||||||
|  | from SimNDT.core.inspectionMethods import Transmission, PulseEcho, Source, LinearScan | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class LinearScanSetup(QDialog, Ui_linearScanSetupDialog): | ||||||
|  |     def __init__(self, Scenario, Source, Inspection, Transducers, Signal, parent=None): | ||||||
|  |         super(LinearScanSetup, self).__init__(parent) | ||||||
|  |         self.setupUi(self) | ||||||
|  | 
 | ||||||
|  |         self.advancedParametersSetupPushButton.pressed.connect(self.advancedSetup) | ||||||
|  |         self.previewPushButton.pressed.connect(self.preview) | ||||||
|  |         self.connect(self.pointSourceCheckBox, SIGNAL("stateChanged(int)"), self.pointChanged) | ||||||
|  |         self.signalSetupPushButton.pressed.connect(self.signalSetup) | ||||||
|  | 
 | ||||||
|  |         self.locationComboBox.setEnabled(False) | ||||||
|  |         self.transmissionRadioButton.setChecked(True) | ||||||
|  | 
 | ||||||
|  |         self.backing = False | ||||||
|  |         self.window = False | ||||||
|  |         self.sourceType = 0 | ||||||
|  |         self.waveSource = 0 | ||||||
|  | 
 | ||||||
|  |         self.Scenario = Scenario | ||||||
|  |         self.Source = Source | ||||||
|  |         self.Inspection = Inspection | ||||||
|  |         self.Transducers = Transducers | ||||||
|  |         self.Signal = Signal | ||||||
|  | 
 | ||||||
|  |         if self.Transducers is not None: | ||||||
|  |             item = self.Transducers[0] | ||||||
|  |             self.pointSourceCheckBox.setChecked(bool(item.PointSource)) | ||||||
|  |             if not bool(item.PointSource): | ||||||
|  |                 self.transducerSizeLineEdit.setText(str(item.Size)) | ||||||
|  | 
 | ||||||
|  |             self.borderOffsetLineEdit.setText(str(item.BorderOffset)) | ||||||
|  | 
 | ||||||
|  |         else: | ||||||
|  |             self.borderOffsetLineEdit.setText(0) | ||||||
|  |             self.startOffsetLineEdit.clear() | ||||||
|  |             self.stopOffsetLineEdit.clear() | ||||||
|  |             self.stepOffsetLineEdit.clear() | ||||||
|  | 
 | ||||||
|  |         if self.Inspection is None or self.Source is None: | ||||||
|  |             return | ||||||
|  | 
 | ||||||
|  |         if Inspection.Name == "LinearScan": | ||||||
|  |             value = Inspection.ScanVectorString | ||||||
|  |             ini, end, step = tuple(map(float, value[1:-1].split(','))) | ||||||
|  |             self.startOffsetLineEdit.setText(str(ini)) | ||||||
|  |             self.stopOffsetLineEdit.setText(str(end)) | ||||||
|  |             self.stepOffsetLineEdit.setText(str(step)) | ||||||
|  | 
 | ||||||
|  |             if Inspection.Method == "Transmission": | ||||||
|  |                 self.transmissionRadioButton.setChecked(True) | ||||||
|  |             else: | ||||||
|  |                 self.pulseEchoRadioButton.setChecked(True) | ||||||
|  | 
 | ||||||
|  |     def pointChanged(self, state): | ||||||
|  | 
 | ||||||
|  |         self.transducerSizeLineEdit.setEnabled(not state) | ||||||
|  |         self.transducerSizeLineEdit.setVisible(not state) | ||||||
|  |         self.transducerSizeLabel.setEnabled(not state) | ||||||
|  |         self.transducerSizeLabel.setVisible(not state) | ||||||
|  |         if state: | ||||||
|  |             self.transducerSizeLineEdit.setText("") | ||||||
|  | 
 | ||||||
|  |     def advancedSetup(self): | ||||||
|  | 
 | ||||||
|  |         dlg = AdvancedSetupInspections(self.Source, self.Inspection, self.Transducers) | ||||||
|  |         if dlg.exec_(): | ||||||
|  |             self.backing = dlg.backing | ||||||
|  |             self.window = dlg.window | ||||||
|  |             self.sourceType = dlg.sourceType | ||||||
|  |             self.waveSource = dlg.waveSource | ||||||
|  | 
 | ||||||
|  |     def signalSetup(self): | ||||||
|  | 
 | ||||||
|  |         dlg = SignalSetup(self.Signal, self) | ||||||
|  |         if dlg.exec_(): | ||||||
|  |             self.Signal = copy.deepcopy(dlg.Signal) | ||||||
|  | 
 | ||||||
|  |     def preview(self): | ||||||
|  | 
 | ||||||
|  |         try: | ||||||
|  | 
 | ||||||
|  |             location = self.locationComboBox.currentText() | ||||||
|  |             Point = self.pointSourceCheckBox.isChecked() | ||||||
|  | 
 | ||||||
|  |             try: | ||||||
|  |                 if Point: | ||||||
|  |                     size = 0 | ||||||
|  |                 else: | ||||||
|  |                     size = float(self.transducerSizeLineEdit.text()) | ||||||
|  |             except: | ||||||
|  |                 msgBox = WarningParms("Give correctly the transducer Size") | ||||||
|  |                 if msgBox.exec_(): | ||||||
|  |                     return | ||||||
|  | 
 | ||||||
|  |             centerOffset = 0 | ||||||
|  |             borderOffset = float(self.borderOffsetLineEdit.text()) | ||||||
|  | 
 | ||||||
|  |             if size >= self.Scenario.Width: | ||||||
|  |                 msgBox = WarningParms("Transducer is larger than Scenario Width!!!!") | ||||||
|  |                 if msgBox.exec_(): | ||||||
|  |                     return | ||||||
|  |             elif size <= 0 and not Point: | ||||||
|  |                 msgBox = WarningParms("Incorrect Transducer Size!!!!") | ||||||
|  |                 if msgBox.exec_(): | ||||||
|  |                     return | ||||||
|  | 
 | ||||||
|  |             if borderOffset < 0 or borderOffset >= self.Scenario.Height: | ||||||
|  |                 msgBox = WarningParms("Transducer is out of Scenario!!!!") | ||||||
|  |                 if msgBox.exec_(): | ||||||
|  |                     return | ||||||
|  | 
 | ||||||
|  |             try: | ||||||
|  |                 ini = float(self.startOffsetLineEdit.text()) | ||||||
|  | 
 | ||||||
|  |             except: | ||||||
|  |                 msgBox = WarningParms("Please give correctly the Start Value") | ||||||
|  |                 if msgBox.exec_(): | ||||||
|  |                     return | ||||||
|  | 
 | ||||||
|  |             try: | ||||||
|  |                 end = float(self.stopOffsetLineEdit.text()) | ||||||
|  |             except: | ||||||
|  |                 msgBox = WarningParms("Please give correctly the Stop Value") | ||||||
|  |                 if msgBox.exec_(): | ||||||
|  |                     return | ||||||
|  | 
 | ||||||
|  |             try: | ||||||
|  |                 step = float(self.stepOffsetLineEdit.text()) | ||||||
|  | 
 | ||||||
|  |             except: | ||||||
|  |                 msgBox = WarningParms("Please give correctly the Step Value") | ||||||
|  |                 if msgBox.exec_(): | ||||||
|  |                     return | ||||||
|  | 
 | ||||||
|  |             vectorString = "(%g,%g,%g)" % (ini, end, step) | ||||||
|  |             OffsetVector = tuple(map(float, vectorString[1:-1].split(','))) | ||||||
|  | 
 | ||||||
|  |             if OffsetVector[0] >= OffsetVector[1]: | ||||||
|  |                 msgBox = WarningParms("Please set correctly the Start and Stop Values") | ||||||
|  |                 if msgBox.exec_(): | ||||||
|  |                     return | ||||||
|  | 
 | ||||||
|  |             if OffsetVector[2] <= 0: | ||||||
|  |                 msgBox = WarningParms("Please give correctly the Step Value") | ||||||
|  |                 if msgBox.exec_(): | ||||||
|  |                     return | ||||||
|  | 
 | ||||||
|  |             if np.abs(OffsetVector[0]) + size / 2.0 >= self.Scenario.Width / 2.0 or np.abs( | ||||||
|  |                     OffsetVector[1]) + size / 2.0 >= self.Scenario.Width / 2.0: | ||||||
|  |                 msgBox = WarningParms("Transducer is out of Scenario for the given Start, Stop, Step Values!!!!") | ||||||
|  |                 if msgBox.exec_(): | ||||||
|  |                     return | ||||||
|  | 
 | ||||||
|  |             transducer = Transducer('SimNDT-emisor', size, centerOffset, borderOffset, location, Point) | ||||||
|  |             method = Transmission(location) if self.transmissionRadioButton.isChecked() else PulseEcho(location) | ||||||
|  | 
 | ||||||
|  |             linearScan = LinearScan(OffsetVector[0], OffsetVector[1], OffsetVector[2], location, method.Name, | ||||||
|  |                                     method.Theta) | ||||||
|  |             inspection = copy.deepcopy(linearScan) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |         except: | ||||||
|  | 
 | ||||||
|  |             msgBox = WarningParms() | ||||||
|  |             msgBox.exec_() | ||||||
|  |             return | ||||||
|  | 
 | ||||||
|  |         dlg = PreviewLinearScan(method, inspection, self.Scenario, transducer, self) | ||||||
|  |         dlg.show() | ||||||
|  | 
 | ||||||
|  |     def accept(self): | ||||||
|  | 
 | ||||||
|  |         try: | ||||||
|  | 
 | ||||||
|  |             if self.Source is None: | ||||||
|  |                 self.Source = Source() | ||||||
|  | 
 | ||||||
|  |             if self.waveSource == WaveSource.Longitudinal: | ||||||
|  |                 self.Source.Longitudinal = True | ||||||
|  |                 self.Source.Shear = False | ||||||
|  |             elif self.waveSource == WaveSource.Shear: | ||||||
|  |                 self.Source.Longitudinal = False | ||||||
|  |                 self.Source.Shear = True | ||||||
|  |             elif self.waveSource == WaveSource.LongitudinalAndShear: | ||||||
|  |                 self.Source.Longitudinal = True | ||||||
|  |                 self.Source.Shear = True | ||||||
|  |             else: | ||||||
|  |                 self.Source.Longitudinal = True | ||||||
|  |                 self.Source.Shear = False | ||||||
|  | 
 | ||||||
|  |             if self.sourceType == TypeSource.Pressure: | ||||||
|  |                 self.Source.Pressure = True | ||||||
|  |                 self.Source.Displacement = False | ||||||
|  |             elif self.sourceType == TypeSource.Displacement: | ||||||
|  |                 self.Source.Pressure = False | ||||||
|  |                 self.Source.Displacement = True | ||||||
|  |             elif self.sourceType == TypeSource.PressureAndDisplacement: | ||||||
|  |                 self.Source.Pressure = True | ||||||
|  |                 self.Source.Displacement = True | ||||||
|  |             else: | ||||||
|  |                 self.Source.Pressure = True | ||||||
|  |                 self.Source.Displacement = False | ||||||
|  | 
 | ||||||
|  |             location = self.locationComboBox.currentText() | ||||||
|  |             Point = self.pointSourceCheckBox.isChecked() | ||||||
|  | 
 | ||||||
|  |             try: | ||||||
|  | 
 | ||||||
|  |                 if Point: | ||||||
|  |                     size = 0 | ||||||
|  |                 else: | ||||||
|  |                     size = float(self.transducerSizeLineEdit.text()) | ||||||
|  | 
 | ||||||
|  |             except: | ||||||
|  |                 msgBox = WarningParms("Give correctly the transducer Size") | ||||||
|  |                 if msgBox.exec_(): | ||||||
|  |                     return | ||||||
|  | 
 | ||||||
|  |             try: | ||||||
|  |                 ini = float(self.startOffsetLineEdit.text()) | ||||||
|  | 
 | ||||||
|  |             except: | ||||||
|  |                 msgBox = WarningParms("Please give correctly the Start Value") | ||||||
|  |                 if msgBox.exec_(): | ||||||
|  |                     return | ||||||
|  | 
 | ||||||
|  |             try: | ||||||
|  |                 end = float(self.stopOffsetLineEdit.text()) | ||||||
|  |             except: | ||||||
|  |                 msgBox = WarningParms("Please give correctly the Stop Value") | ||||||
|  |                 if msgBox.exec_(): | ||||||
|  |                     return | ||||||
|  | 
 | ||||||
|  |             try: | ||||||
|  |                 step = float(self.stepOffsetLineEdit.text()) | ||||||
|  | 
 | ||||||
|  |             except: | ||||||
|  |                 msgBox = WarningParms("Please give correctly the Step Value") | ||||||
|  |                 if msgBox.exec_(): | ||||||
|  |                     return | ||||||
|  | 
 | ||||||
|  |             vectorString = "(%g,%g,%g)" % (ini, end, step) | ||||||
|  |             OffsetVector = tuple(map(float, vectorString[1:-1].split(','))) | ||||||
|  | 
 | ||||||
|  |             if OffsetVector[0] >= OffsetVector[1]: | ||||||
|  |                 msgBox = WarningParms("Please set correctly the Start and Stop Values") | ||||||
|  |                 if msgBox.exec_(): | ||||||
|  |                     return | ||||||
|  | 
 | ||||||
|  |             if OffsetVector[2] <= 0: | ||||||
|  |                 msgBox = WarningParms("Please give correctly the Step Value") | ||||||
|  |                 if msgBox.exec_(): | ||||||
|  |                     return | ||||||
|  | 
 | ||||||
|  |             if np.abs(OffsetVector[0]) + size / 2.0 >= self.Scenario.Width / 2.0 or np.abs( | ||||||
|  |                     OffsetVector[1]) + size / 2.0 >= self.Scenario.Width / 2.0: | ||||||
|  |                 msgBox = WarningParms("Transducer is out of Scenario for the given Start, Stop, Step Values!!!!") | ||||||
|  |                 if msgBox.exec_(): | ||||||
|  |                     return | ||||||
|  | 
 | ||||||
|  |             borderOffset = float(self.borderOffsetLineEdit.text()) | ||||||
|  | 
 | ||||||
|  |             if size >= self.Scenario.Width: | ||||||
|  |                 msgBox = WarningParms("Transducer is larger than Scenario Width!!!!") | ||||||
|  |                 if msgBox.exec_(): | ||||||
|  |                     return | ||||||
|  |             elif size <= 0 and not Point: | ||||||
|  |                 msgBox = WarningParms("Incorrect Transducer Size!!!!") | ||||||
|  |                 if msgBox.exec_(): | ||||||
|  |                     return | ||||||
|  | 
 | ||||||
|  |             if borderOffset < 0 or borderOffset >= self.Scenario.Height: | ||||||
|  |                 msgBox = WarningParms("Transducer is out of Scenario!!!!") | ||||||
|  |                 if msgBox.exec_(): | ||||||
|  |                     return | ||||||
|  | 
 | ||||||
|  |             transducer = Transducer('SimNDT-emisor', size, 0, borderOffset, location, Point, self.window, False, | ||||||
|  |                                     self.backing) | ||||||
|  |             if self.Transducers is None: | ||||||
|  |                 self.Transducers = list() | ||||||
|  |                 self.Transducers.append(transducer) | ||||||
|  |             else: | ||||||
|  |                 self.Transducers[0] = transducer | ||||||
|  | 
 | ||||||
|  |             method = Transmission(location) if self.transmissionRadioButton.isChecked() else PulseEcho(location) | ||||||
|  | 
 | ||||||
|  |             linearScan = LinearScan(OffsetVector[0], OffsetVector[1], OffsetVector[2], location, method.Name, | ||||||
|  |                                     method.Theta) | ||||||
|  |             self.Inspection = copy.deepcopy(linearScan) | ||||||
|  | 
 | ||||||
|  |             if self.Signal is None: | ||||||
|  |                 msgBox = WarningParms("Please Setup Signal Parameters!!!!") | ||||||
|  |                 if msgBox.exec_(): | ||||||
|  |                     return | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |         except: | ||||||
|  | 
 | ||||||
|  |             msgBox = WarningParms() | ||||||
|  |             msgBox.exec_() | ||||||
|  |             return | ||||||
|  | 
 | ||||||
|  |         QDialog.accept(self) | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user