Wed 28 Aug 21:38:52 CEST 2024

This commit is contained in:
sbosse 2024-08-28 21:40:10 +02:00
parent c8719353a3
commit 76f58928f0

View 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)