Beispiel #1
0
    def get_geometry(self):
        '''
        Build section instance from geometry table
        '''
        X, Y, T, rho_long, rho_trans = [], [], [], [], []
        table = self.geometry_table
        row_count = table.rowCount()  # get number of rows
        for row in range(row_count):
            row_values = self.get_table_row(table, row)
            X.append(row_values[0])
            Y.append(row_values[1])
            T.append(row_values[2])
            rho_long.append(row_values[3])
            rho_trans.append(row_values[4])
        # Geometry = {'X': X, 'Y': Y, 'T': T, 'rho_long': rho_long, 'rho_trans': rho_trans}

        # initiate cross-section instances
        section = Geometry.CrossSection()
        # Loop over geometry nodes to calculate geometric properties
        for i in range(len(X)):
            X0, Y0 = X[i], Y[i]  # start node
            if i + 1 == len(X):  # if last node
                X1, Y1 = X[0], Y[0]  # end node
            else:
                X1, Y1 = X[i + 1], Y[i + 1]
            wall = Geometry.Wall([X0, X1], [Y0, Y1], T[i], rho_long[i],
                                 rho_trans[i])
            section.add_wall(wall)

        obj = self.lineEdit_wallNodeN
        try:
            value = int(obj.text())  # convert item text to integer
            if value == 0:
                raise ValueError
            section.set_wallNodeN(value)  # Send input value to section class
        except ValueError:
            # value = 25  # set value back to default
            self.show_msg_box([
                'Geometry input error',
                'Input value "{}" for {} is not valid. {} returned to default value.'
                .format(obj.text(), 'no. of data points', 'No. of data points')
            ])
            value = Geometry.Wall.wallNodeN  # set value back to class default
            obj.setText(str(value))  # Replace bad item content

        self.statusbar.showMessage('Geometry table data loaded')

        # return Geometry
        return section