Ejemplo n.º 1
0
    def __init__(self, dir):
        """Constructor."""

        self.directory = dir

        # setup user interface
        self.widget = QtGui.QWidget()
        self.ui = Ui_CS()
        self.ui.setupUi(self.widget)
        
# module CS

        self.callbackCSOpenMeshFile = functools.partial(uih.getOpenFileName, "Open T3S-file", "2D T3 Scalar Mesh (ASCII SingleFrame) (*.t3s)", self.ui.lineEditInputMesh, self.directory, self.widget)
        QtCore.QObject.connect(self.ui.pushButtonInputMesh, QtCore.SIGNAL(_fromUtf8("clicked()")), self.callbackCSOpenMeshFile)

        self.callbackCSOpenDefinition = functools.partial(uih.getOpenFileName, "Open Control Sections Definition File", "Normal text file (*.txt)", self.ui.lineEditInputDefinition, self.directory, self.widget)
        QtCore.QObject.connect(self.ui.pushButtonInputDefinition, QtCore.SIGNAL(_fromUtf8("clicked()")), self.callbackCSOpenDefinition)

        self.callbackCSOpenResults = functools.partial(uih.getOpenFileName, "Open Control Sections Results File", "Normal text file (*.txt)", self.ui.lineEditInputResults, self.directory, self.widget)
        QtCore.QObject.connect(self.ui.pushButtonInputResults, QtCore.SIGNAL(_fromUtf8("clicked()")), self.callbackCSOpenResults)

        self.callbacCSOutCheckFormatted = functools.partial(uih.setEnabled, self.ui.checkBoxOutputFormatted, self.ui.pushButtonOutputFormatted, self.ui.lineEditOutputFormatted)
        QtCore.QObject.connect(self.ui.checkBoxOutputFormatted, QtCore.SIGNAL("clicked()"), self.callbacCSOutCheckFormatted)
        
        self.callbacCSOutFormatted = functools.partial(uih.getSaveFileName, "Save Data File As", "Normal text file (*.txt)", self.ui.lineEditOutputFormatted, self.directory, self.widget)
        QtCore.QObject.connect(self.ui.pushButtonOutputFormatted, QtCore.SIGNAL(_fromUtf8("clicked()")), self.callbacCSOutFormatted)

        QtCore.QObject.connect(self.ui.checkBoxOutputCS, QtCore.SIGNAL("clicked()"), self.setEnabledCS)
        
        self.callbacCSOutCS = functools.partial(uih.getSaveFileName, "Save Control Sections As", "Drawing Interchange File (*.dxf)", self.ui.lineEditOutputCS, self.directory, self.widget)
        QtCore.QObject.connect(self.ui.pushButtonOutputCS, QtCore.SIGNAL(_fromUtf8("clicked()")), self.callbacCSOutCS)

        QtCore.QObject.connect(self.ui.pushButtonCreate, QtCore.SIGNAL("clicked()"), self.create)
Ejemplo n.º 2
0
class WrapCS():
    """Wrapper for module CS"""

    def __init__(self, dir):
        """Constructor."""

        self.directory = dir

        # setup user interface
        self.widget = QtGui.QWidget()
        self.ui = Ui_CS()
        self.ui.setupUi(self.widget)
        
# module CS

        self.callbackCSOpenMeshFile = functools.partial(uih.getOpenFileName, "Open T3S-file", "2D T3 Scalar Mesh (ASCII SingleFrame) (*.t3s)", self.ui.lineEditInputMesh, self.directory, self.widget)
        QtCore.QObject.connect(self.ui.pushButtonInputMesh, QtCore.SIGNAL(_fromUtf8("clicked()")), self.callbackCSOpenMeshFile)

        self.callbackCSOpenDefinition = functools.partial(uih.getOpenFileName, "Open Control Sections Definition File", "Normal text file (*.txt)", self.ui.lineEditInputDefinition, self.directory, self.widget)
        QtCore.QObject.connect(self.ui.pushButtonInputDefinition, QtCore.SIGNAL(_fromUtf8("clicked()")), self.callbackCSOpenDefinition)

        self.callbackCSOpenResults = functools.partial(uih.getOpenFileName, "Open Control Sections Results File", "Normal text file (*.txt)", self.ui.lineEditInputResults, self.directory, self.widget)
        QtCore.QObject.connect(self.ui.pushButtonInputResults, QtCore.SIGNAL(_fromUtf8("clicked()")), self.callbackCSOpenResults)

        self.callbacCSOutCheckFormatted = functools.partial(uih.setEnabled, self.ui.checkBoxOutputFormatted, self.ui.pushButtonOutputFormatted, self.ui.lineEditOutputFormatted)
        QtCore.QObject.connect(self.ui.checkBoxOutputFormatted, QtCore.SIGNAL("clicked()"), self.callbacCSOutCheckFormatted)
        
        self.callbacCSOutFormatted = functools.partial(uih.getSaveFileName, "Save Data File As", "Normal text file (*.txt)", self.ui.lineEditOutputFormatted, self.directory, self.widget)
        QtCore.QObject.connect(self.ui.pushButtonOutputFormatted, QtCore.SIGNAL(_fromUtf8("clicked()")), self.callbacCSOutFormatted)

        QtCore.QObject.connect(self.ui.checkBoxOutputCS, QtCore.SIGNAL("clicked()"), self.setEnabledCS)
        
        self.callbacCSOutCS = functools.partial(uih.getSaveFileName, "Save Control Sections As", "Drawing Interchange File (*.dxf)", self.ui.lineEditOutputCS, self.directory, self.widget)
        QtCore.QObject.connect(self.ui.pushButtonOutputCS, QtCore.SIGNAL(_fromUtf8("clicked()")), self.callbacCSOutCS)

        QtCore.QObject.connect(self.ui.pushButtonCreate, QtCore.SIGNAL("clicked()"), self.create)

    def setDir(self, directory):
        self.directory = directory
    
    def initialize(self):
        
        import os
        abs_path = os.path.abspath('.')
        dir = os.path.join(abs_path, 'examples/').replace('\\', '/')
  
        ###   ~   module CS   ~   ###
        
        self.ui.lineEditInputMesh.setText(dir + "example_07/BOTTOM_Case_A.t3s")
        self.ui.lineEditInputDefinition.setText(dir + "example_07/cs_input.txt")
        self.ui.lineEditInputResults.setText(dir + "example_07/cs_output_donau.txt")
        self.ui.doubleSpinBoxSizeFactor.setValue(7.5)
        
        uih.setEnabledInitialize(self.ui.checkBoxOutputFormatted, self.ui.pushButtonOutputFormatted, self.ui.lineEditOutputFormatted)
        uih.setEnabledInitialize(self.ui.checkBoxOutputCS, self.ui.pushButtonOutputCS, self.ui.lineEditOutputCS)

        self.ui.lineEditOutputFormatted.setText(dir + "example_07/output/cs_formatted.txt")
        self.ui.lineEditOutputCS.setText(dir + "example_07/output/cs.dxf")
        
    def setEnabledCS(self):
        checked = self.ui.checkBoxOutputCS.isChecked()
        self.ui.doubleSpinBoxSizeFactor.setEnabled(checked)
        self.ui.lineEditInputPrefix.setEnabled(checked)       
        self.ui.lineEditInputSuffix.setEnabled(checked) 
        self.ui.pushButtonOutputCS.setEnabled(checked)    
        self.ui.lineEditOutputCS.setEnabled(checked)        
        
    def create(self):
        
        info = ""
        info += "Input data:\n"
        
        # read input meshes
        nodes = {}
        mesh = {}
        
        try:
            nodes, mesh = fh.readT3S(self.ui.lineEditInputMesh.text())
            info += " - Mesh loaded with {0} nodes and {1} elements.\n".format(len(nodes), len(mesh))
        except:
            QMessageBox.critical(self.widget, "Error", "Not able to load mesh file!\nCheck filename or content!")
            return
    
        # read control sections definition file
        nCS = 0
        nameCS = {}
        nodeIDsCS = {}
        try:
            nCS, nameCS, nodeIDsCS, coordsCS, type = fh.readCSDefinition(self.ui.lineEditInputDefinition.text())
            info += " - Control section definition loaded with {0} control sections.\n".format(nCS)
        except:
            QMessageBox.critical(self.widget, "Error", "Not able to load control sections definition file!\nCheck filename or content!")
            return

        # read control sections results file
        time = []
        resultsCS = {}
        try:
            time, resultsCS = fh.readCSResults(self.ui.lineEditInputResults.text(), nCS)
            info += " - Control section results loaded with {0} time steps.\n".format(len(time))
        except:
            QMessageBox.critical(self.widget, "Error", "Not able to load control sections results file!\nCheck filename or content!")
            return        
        
        decTime = self.ui.spinBoxTime.value()
        decFlow = self.ui.spinBoxFlow.value()

        info += "\nOutput data:\n"
                    
        if self.ui.checkBoxOutputFormatted.isChecked():
            try:
                fh.writeCSFormatted(self.ui.lineEditOutputFormatted.text(), nameCS, time, resultsCS, decTime, decFlow)
                info += " - Formatted control section data file written to {0}.\n".format(self.ui.lineEditOutputFormatted.text())
            except:
                QMessageBox.critical(self.widget, "Error", "Not able to write formatted data file!")
                return

        if self.ui.checkBoxOutputCS.isChecked():
            try:
                nodesCS = {}
                valuesCS = {}

                if type == "1":
                    nodesCS = coordsCS
                    for nID in nodeIDsCS:
                        valuesCS[nID] = [min(resultsCS[nID]), max(resultsCS[nID])]
                else:
                    for nID in nodeIDsCS:
                        nodesCS[nodeIDsCS[nID][0]] = nodes[nodeIDsCS[nID][0]]
                        nodesCS[nodeIDsCS[nID][1]] = nodes[nodeIDsCS[nID][1]]
                        valuesCS[nID] = [min(resultsCS[nID]), max(resultsCS[nID])]

                scale = self.ui.doubleSpinBoxSizeFactor.value()
                prefix = self.ui.lineEditInputPrefix.text()
                suffix = self.ui.lineEditInputSuffix.text()
                fh.writeCSDXF(self.ui.lineEditOutputCS.text(), nameCS, nodeIDsCS, nodesCS, valuesCS, decFlow, scale, prefix, suffix)
                info += " - Control sections written to {0}.\n".format(self.ui.lineEditOutputCS.text())
                for key in valuesCS:
                    info += "\t{0} to {1} ({2})\n".format(round(valuesCS[key][0], decFlow), round(valuesCS[key][1], decFlow), nameCS[key])
            except:
                QMessageBox.critical(self.widget, "Error", "Not able to write control section file!")
                return               
    
        QMessageBox.information(self.widget, "Module CS", info)