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