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:
True if the point is named.
"""
return self._name.strip() == ""
return self._name.strip() != ""

View File

@ -188,7 +188,9 @@ class ProfileXYZ(Profile):
Returns:
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
index_first_named_point = None
last_named_point = None
@ -227,6 +229,7 @@ class ProfileXYZ(Profile):
station_i = (normalized_direction_vec[0] * xi +
normalized_direction_vec[1] * yi)
station.append(station_i)
ret = np.array(station)
constant = ret[index_first_named_point]
elif first_named_point is None:
@ -246,8 +249,6 @@ class ProfileXYZ(Profile):
constant = ret[index_profile_z_min]
return (ret - constant)
else:
return np.array(np.nan)
def _first_point_not_nan(self):
first_point = self._points[0]

View File

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

View File

@ -42,6 +42,7 @@ class GeometryWindow(QMainWindow, WindowToolKit):
self.setup_model()
self.setup_connections()
self.setup_plot()
self.changed_slider_value()
def setup_window(self):
self.setWindowTitle(f"{self.ui.mainwindow_title} - {self._reach.name}")
@ -55,6 +56,7 @@ class GeometryWindow(QMainWindow, WindowToolKit):
self.tableView.setItemDelegate(qtableview_reach.Delegate())
def setup_plot(self):
if self._reach.number_profiles != 0:
self.graphic_1()
self.graphic_2()
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_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):
options = QFileDialog.Options()
DEFAULT_DIRECTORY = os.getenv("HOME")
@ -105,20 +123,6 @@ class GeometryWindow(QMainWindow, WindowToolKit):
self.graphic_2()
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):
@ -232,9 +236,13 @@ class GeometryWindow(QMainWindow, WindowToolKit):
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._reach.get_guidelines_x(),
self._reach.get_guidelines_y()
self.x_complete,
self.y_complete
)
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)
try:
self.line_kp_zgl = [
kp = self._reach.get_kp()
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._reach.get_kp(), i, lw=1.
) for i in self._reach.get_guidelines_z()
]
except:
print("Graphic 2: Z guidelines failed")
kp, z, lw=1.
)
)
self.line_kp_zmin, = self.ui.canvas_2.axes.plot(
kp, z_min,
@ -370,8 +382,8 @@ class GeometryWindow(QMainWindow, WindowToolKit):
self.line_kp_zgl[i][0].set_data(
kp, self._tablemodel.z_complete_guideline()[i]
)
except:
print("Failed to update graphic 2")
except Exception as e:
print(f"Failed to update graphic 2: {e}")
self.tableView.model().blockSignals(False)
self.ui.canvas_2.axes.autoscale_view(True, True, True)
@ -491,11 +503,12 @@ class GeometryWindow(QMainWindow, WindowToolKit):
gl = self._reach.profile(ind).name
complete, incomplete = self._reach.compute_guidelines()
try:
x_complete = []
self.x_complete = []
color_scat_complete = []
x_incomplete = []
self.x_incomplete = []
color_scat_incomplete = []
try:
for i, txt in enumerate(list(gl)):
if txt in complete:
annotate = self.ui.canvas_3.axes.annotate(
@ -508,7 +521,7 @@ class GeometryWindow(QMainWindow, WindowToolKit):
size=10
)
self.annotation_3.append(annotate)
x_complete.append([x[i], y[i]])
self.x_complete.append([x[i], y[i]])
color_scat_complete.append(
self.color_complete[self.complete.index(txt)]
)
@ -523,7 +536,7 @@ class GeometryWindow(QMainWindow, WindowToolKit):
size=10
)
self.annotation_3.append(annotate)
x_incomplete.append([x[i], y[i]])
self.x_incomplete.append([x[i], y[i]])
color_scat_incomplete.append(
self.color_incomplete[incomplete.index(txt)]
)
@ -668,7 +681,7 @@ class GeometryWindow(QMainWindow, WindowToolKit):
self.tableView.model().blockSignals(True)
if len(self.tableView.selectedIndexes()) > 0:
row = self.index_selected_row
row = self.index_selected_row()
self.ui.verticalSlider.setValue(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_2(slider_value)
self.select_row_profile_slider(slider_value)
self.tableView.model().blockSignals(False)
def increment_value_slider(self):
@ -729,7 +743,7 @@ class GeometryWindow(QMainWindow, WindowToolKit):
if len(self.tableView.selectedIndexes()) == 0:
self._tablemodel.insertRows(self._tablemodel.rowCount(), 1)
else:
row = self.index_selected_row
row = self.index_selected_row()
self._tablemodel.insertRows(row + 1, 1)
if self.filename is not None:
@ -751,9 +765,12 @@ class GeometryWindow(QMainWindow, WindowToolKit):
self.graphic_2()
self.changed_slider_value()
@property
def index_selected_row(self):
return self.tableView.selectedIndexes()[0].row()
return self.tableView\
.selectionModel()\
.selectedRows()[0]\
.row()
def sort_ascending(self):
self._tablemodel.sort_profiles(True)
@ -761,7 +778,7 @@ class GeometryWindow(QMainWindow, WindowToolKit):
self.changed_slider_value()
self.update_graphic_2()
self.update_graphic_3(self.index_selected_row)
self.update_graphic_3(self.index_selected_row())
def sort_descending(self):
self._tablemodel.sort_profiles(False)
@ -770,10 +787,10 @@ class GeometryWindow(QMainWindow, WindowToolKit):
self.changed_slider_value()
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):
row = self.index_selected_row
row = self.index_selected_row()
if row < self._tablemodel.rowCount() - 1:
self._tablemodel.moveRowDown(row)
@ -796,7 +813,7 @@ class GeometryWindow(QMainWindow, WindowToolKit):
self.update_graphic_2()
def move_row_up(self):
row = self.index_selected_row
row = self.index_selected_row()
if 0 < row <= self._tablemodel.rowCount() - 1:
self._tablemodel.moveRowUp(row)

View File

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