geometry: Some minor fixes.

mesh
Pierre-Antoine Rouby 2023-04-18 10:57:43 +02:00
parent a601e7f029
commit 726921af6a
5 changed files with 72 additions and 51 deletions

View File

@ -19,4 +19,4 @@ class Point(object):
Returns: Returns:
True if the point is named. True if the point is named.
""" """
return self._name.strip() == "" return self._name.strip() != ""

View File

@ -188,7 +188,9 @@ class ProfileXYZ(Profile):
Returns: Returns:
Projection of the points of the profile on a plane. Projection of the points of the profile on a plane.
""" """
if self.nb_points >= 3: if self.nb_points < 3:
return np.array(np.nan)
else:
first_named_point = None first_named_point = None
index_first_named_point = None index_first_named_point = None
last_named_point = None last_named_point = None
@ -227,6 +229,7 @@ class ProfileXYZ(Profile):
station_i = (normalized_direction_vec[0] * xi + station_i = (normalized_direction_vec[0] * xi +
normalized_direction_vec[1] * yi) normalized_direction_vec[1] * yi)
station.append(station_i) station.append(station_i)
ret = np.array(station) ret = np.array(station)
constant = ret[index_first_named_point] constant = ret[index_first_named_point]
elif first_named_point is None: elif first_named_point is None:
@ -246,8 +249,6 @@ class ProfileXYZ(Profile):
constant = ret[index_profile_z_min] constant = ret[index_profile_z_min]
return (ret - constant) return (ret - constant)
else:
return np.array(np.nan)
def _first_point_not_nan(self): def _first_point_not_nan(self):
first_point = self._points[0] first_point = self._points[0]

View File

@ -230,6 +230,9 @@ class Reach:
return (complete, incomplete) return (complete, incomplete)
def _map_guidelines_points(self, func, _filter=None): def _map_guidelines_points(self, func, _filter=None):
if len(self._guidelines) == 0:
_ = compute_guidelines()
return list( return list(
# Map for each guideline # Map for each guideline
map( map(

View File

@ -42,6 +42,7 @@ class GeometryWindow(QMainWindow, WindowToolKit):
self.setup_model() self.setup_model()
self.setup_connections() self.setup_connections()
self.setup_plot() self.setup_plot()
self.changed_slider_value()
def setup_window(self): def setup_window(self):
self.setWindowTitle(f"{self.ui.mainwindow_title} - {self._reach.name}") self.setWindowTitle(f"{self.ui.mainwindow_title} - {self._reach.name}")
@ -55,6 +56,7 @@ class GeometryWindow(QMainWindow, WindowToolKit):
self.tableView.setItemDelegate(qtableview_reach.Delegate()) self.tableView.setItemDelegate(qtableview_reach.Delegate())
def setup_plot(self): def setup_plot(self):
if self._reach.number_profiles != 0:
self.graphic_1() self.graphic_1()
self.graphic_2() self.graphic_2()
self.graphic_3() self.graphic_3()
@ -75,6 +77,22 @@ class GeometryWindow(QMainWindow, WindowToolKit):
self.ui.btn_slider_down.clicked.connect(self.increment_value_slider) self.ui.btn_slider_down.clicked.connect(self.increment_value_slider)
self.ui.btn_move_up.clicked.connect(self.changed_profile_slot) self.ui.btn_move_up.clicked.connect(self.changed_profile_slot)
# Profile selection when line change in table
self.tableView.selectionModel()\
.selectionChanged\
.connect(self.select_current_profile)
# Update plot when profile data change
self._tablemodel.dataChanged.connect(self.update_graphic_1)
self._tablemodel.dataChanged.connect(self.update_graphic_2)
self.tableView.selectionModel()\
.selectionChanged\
.connect(self.update_graphic_1)
self.tableView.selectionModel()\
.selectionChanged\
.connect(self.update_graphic_2)
def open_file_dialog(self): def open_file_dialog(self):
options = QFileDialog.Options() options = QFileDialog.Options()
DEFAULT_DIRECTORY = os.getenv("HOME") DEFAULT_DIRECTORY = os.getenv("HOME")
@ -105,20 +123,6 @@ class GeometryWindow(QMainWindow, WindowToolKit):
self.graphic_2() self.graphic_2()
self.graphic_3() self.graphic_3()
# Profile selection when line change in table
self.tableView.selectionModel()\
.selectionChanged\
.connect(self.select_current_profile)
# Update plot when profile data change
self._tablemodel.dataChanged.connect(self.update_graphic_1)
self._tablemodel.dataChanged.connect(self.update_graphic_2)
self.tableView.selectionModel()\
.selectionChanged\
.connect(self.update_graphic_1)
self.tableView.selectionModel()\
.selectionChanged\
.connect(self.update_graphic_2)
def messagebox_profile_editing(self): def messagebox_profile_editing(self):
@ -232,9 +236,13 @@ class GeometryWindow(QMainWindow, WindowToolKit):
for x, y in zip(self._reach.get_x(), self._reach.get_y()) for x, y in zip(self._reach.get_x(), self._reach.get_y())
] ]
self.x_complete = self._reach.get_guidelines_x()
self.y_complete = self._reach.get_guidelines_y()
self.line_gl_1 = self.ui.canvas_1.axes.plot( self.line_gl_1 = self.ui.canvas_1.axes.plot(
self._reach.get_guidelines_x(), self.x_complete,
self._reach.get_guidelines_y() self.y_complete
) )
self.plot_selected_1, = self.ui.canvas_1.axes.plot( self.plot_selected_1, = self.ui.canvas_1.axes.plot(
@ -310,14 +318,18 @@ class GeometryWindow(QMainWindow, WindowToolKit):
) )
self.after_plot_selected_2.set_visible(False) self.after_plot_selected_2.set_visible(False)
try: kp = self._reach.get_kp()
self.line_kp_zgl = [ self.line_kp_zgl = []
for z in self._reach.get_guidelines_z():
# Is incomplete guideline?
if len(z) != len(kp):
continue
self.line_kp_zgl.append(
self.ui.canvas_2.axes.plot( self.ui.canvas_2.axes.plot(
self._reach.get_kp(), i, lw=1. kp, z, lw=1.
) for i in self._reach.get_guidelines_z() )
] )
except:
print("Graphic 2: Z guidelines failed")
self.line_kp_zmin, = self.ui.canvas_2.axes.plot( self.line_kp_zmin, = self.ui.canvas_2.axes.plot(
kp, z_min, kp, z_min,
@ -370,8 +382,8 @@ class GeometryWindow(QMainWindow, WindowToolKit):
self.line_kp_zgl[i][0].set_data( self.line_kp_zgl[i][0].set_data(
kp, self._tablemodel.z_complete_guideline()[i] kp, self._tablemodel.z_complete_guideline()[i]
) )
except: except Exception as e:
print("Failed to update graphic 2") print(f"Failed to update graphic 2: {e}")
self.tableView.model().blockSignals(False) self.tableView.model().blockSignals(False)
self.ui.canvas_2.axes.autoscale_view(True, True, True) self.ui.canvas_2.axes.autoscale_view(True, True, True)
@ -491,11 +503,12 @@ class GeometryWindow(QMainWindow, WindowToolKit):
gl = self._reach.profile(ind).name gl = self._reach.profile(ind).name
complete, incomplete = self._reach.compute_guidelines() complete, incomplete = self._reach.compute_guidelines()
try: self.x_complete = []
x_complete = []
color_scat_complete = [] color_scat_complete = []
x_incomplete = [] self.x_incomplete = []
color_scat_incomplete = [] color_scat_incomplete = []
try:
for i, txt in enumerate(list(gl)): for i, txt in enumerate(list(gl)):
if txt in complete: if txt in complete:
annotate = self.ui.canvas_3.axes.annotate( annotate = self.ui.canvas_3.axes.annotate(
@ -508,7 +521,7 @@ class GeometryWindow(QMainWindow, WindowToolKit):
size=10 size=10
) )
self.annotation_3.append(annotate) self.annotation_3.append(annotate)
x_complete.append([x[i], y[i]]) self.x_complete.append([x[i], y[i]])
color_scat_complete.append( color_scat_complete.append(
self.color_complete[self.complete.index(txt)] self.color_complete[self.complete.index(txt)]
) )
@ -523,7 +536,7 @@ class GeometryWindow(QMainWindow, WindowToolKit):
size=10 size=10
) )
self.annotation_3.append(annotate) self.annotation_3.append(annotate)
x_incomplete.append([x[i], y[i]]) self.x_incomplete.append([x[i], y[i]])
color_scat_incomplete.append( color_scat_incomplete.append(
self.color_incomplete[incomplete.index(txt)] self.color_incomplete[incomplete.index(txt)]
) )
@ -668,7 +681,7 @@ class GeometryWindow(QMainWindow, WindowToolKit):
self.tableView.model().blockSignals(True) self.tableView.model().blockSignals(True)
if len(self.tableView.selectedIndexes()) > 0: if len(self.tableView.selectedIndexes()) > 0:
row = self.index_selected_row row = self.index_selected_row()
self.ui.verticalSlider.setValue(row) self.ui.verticalSlider.setValue(row)
self.select_plot_graphic_1(row) self.select_plot_graphic_1(row)
@ -715,6 +728,7 @@ class GeometryWindow(QMainWindow, WindowToolKit):
self.select_plot_graphic_1(slider_value) self.select_plot_graphic_1(slider_value)
self.select_plot_graphic_2(slider_value) self.select_plot_graphic_2(slider_value)
self.select_row_profile_slider(slider_value) self.select_row_profile_slider(slider_value)
self.tableView.model().blockSignals(False) self.tableView.model().blockSignals(False)
def increment_value_slider(self): def increment_value_slider(self):
@ -729,7 +743,7 @@ class GeometryWindow(QMainWindow, WindowToolKit):
if len(self.tableView.selectedIndexes()) == 0: if len(self.tableView.selectedIndexes()) == 0:
self._tablemodel.insertRows(self._tablemodel.rowCount(), 1) self._tablemodel.insertRows(self._tablemodel.rowCount(), 1)
else: else:
row = self.index_selected_row row = self.index_selected_row()
self._tablemodel.insertRows(row + 1, 1) self._tablemodel.insertRows(row + 1, 1)
if self.filename is not None: if self.filename is not None:
@ -751,9 +765,12 @@ class GeometryWindow(QMainWindow, WindowToolKit):
self.graphic_2() self.graphic_2()
self.changed_slider_value() self.changed_slider_value()
@property
def index_selected_row(self): def index_selected_row(self):
return self.tableView.selectedIndexes()[0].row() return self.tableView\
.selectionModel()\
.selectedRows()[0]\
.row()
def sort_ascending(self): def sort_ascending(self):
self._tablemodel.sort_profiles(True) self._tablemodel.sort_profiles(True)
@ -761,7 +778,7 @@ class GeometryWindow(QMainWindow, WindowToolKit):
self.changed_slider_value() self.changed_slider_value()
self.update_graphic_2() self.update_graphic_2()
self.update_graphic_3(self.index_selected_row) self.update_graphic_3(self.index_selected_row())
def sort_descending(self): def sort_descending(self):
self._tablemodel.sort_profiles(False) self._tablemodel.sort_profiles(False)
@ -770,10 +787,10 @@ class GeometryWindow(QMainWindow, WindowToolKit):
self.changed_slider_value() self.changed_slider_value()
self.update_graphic_2() self.update_graphic_2()
self.update_graphic_3(self.index_selected_row) self.update_graphic_3(self.index_selected_row())
def move_row_down(self): def move_row_down(self):
row = self.index_selected_row row = self.index_selected_row()
if row < self._tablemodel.rowCount() - 1: if row < self._tablemodel.rowCount() - 1:
self._tablemodel.moveRowDown(row) self._tablemodel.moveRowDown(row)
@ -796,7 +813,7 @@ class GeometryWindow(QMainWindow, WindowToolKit):
self.update_graphic_2() self.update_graphic_2()
def move_row_up(self): def move_row_up(self):
row = self.index_selected_row row = self.index_selected_row()
if 0 < row <= self._tablemodel.rowCount() - 1: if 0 < row <= self._tablemodel.rowCount() - 1:
self._tablemodel.moveRowUp(row) self._tablemodel.moveRowUp(row)

View File

@ -159,8 +159,8 @@ class ConfigureWindow(ASubWindow, ListedSubWindow):
self.close() self.close()
def edit_solver(self): def edit_solver(self):
indices = self.find(QTableView, "tableView_solver").selectionModel().selectedRows() indexes = self.find(QTableView, "tableView_solver").selectionModel().selectedRows()
for index in indices: for index in indexes:
self.edit_solver = ConfigureAddSolverWindow( self.edit_solver = ConfigureAddSolverWindow(
data=self.solver_table_model.rows[index.row()], data=self.solver_table_model.rows[index.row()],
parent=self parent=self