mirror of
https://gitlab.com/pamhyr/pamhyr2.git
synced 2026-10-30 03:20:41 +01:00
debug mesh + update_rk (verry slow mesh)
This commit is contained in:
1 parent
19045329dc
commit
f16856d23b
8 files changed
+184
-122
No files matched your search
@@ -250,12 +250,12 @@ class GeometryReachTableModel(PamhyrTableModel):
|
||||
self.layoutAboutToBeChanged.emit()
|
||||
self.layoutChanged.emit()
|
||||
|
||||
def meshing(self, mesher, data):
|
||||
def meshing(self, mesher, data, tableView):
|
||||
self.layoutAboutToBeChanged.emit()
|
||||
|
||||
self._undo.push(
|
||||
MeshingCommand(
|
||||
self._data, mesher, data, "mesh"
|
||||
self._data, mesher, data, tableView
|
||||
)
|
||||
)
|
||||
|
||||
@@ -266,8 +266,8 @@ class GeometryReachTableModel(PamhyrTableModel):
|
||||
self.layoutAboutToBeChanged.emit()
|
||||
|
||||
self._undo.push(
|
||||
MeshingCommand(
|
||||
self._data, mesher, data, "update_rk"
|
||||
UpdateRKCommand(
|
||||
self._data, mesher, data
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -22,8 +22,10 @@ from copy import deepcopy
|
||||
from tools import trace, timer, logger_exception
|
||||
|
||||
from PyQt5.QtWidgets import (
|
||||
QMessageBox, QUndoCommand, QUndoStack, QTableView
|
||||
QMessageBox, QUndoCommand, QUndoStack, QTableView,
|
||||
)
|
||||
from PyQt5.QtCore import (QItemSelection, QItemSelectionRange,
|
||||
QItemSelectionModel)
|
||||
|
||||
from Model.Geometry import Reach
|
||||
from Model.Except import exception_message_box
|
||||
@@ -227,47 +229,109 @@ class ImportCommand(QUndoCommand):
|
||||
self._reach.insert_profile(self._row, profile)
|
||||
|
||||
|
||||
class MeshingCommand(QUndoCommand):
|
||||
def __init__(self, reach, mesher, data, command):
|
||||
class UpdateRKCommand(QUndoCommand):
|
||||
def __init__(self, reach, mesher, data):
|
||||
QUndoCommand.__init__(self)
|
||||
|
||||
self._reach = reach
|
||||
self._data = data
|
||||
self._mesher = mesher
|
||||
self._command = command
|
||||
self._rks = reach.get_rk()
|
||||
|
||||
self._profiles = [p.copy() for p in reach.profiles]
|
||||
self._profiles.reverse()
|
||||
|
||||
self._new_profiles = None
|
||||
self._new_rks = None
|
||||
|
||||
def undo(self):
|
||||
self._reach.purge()
|
||||
for rk, profile in zip(self._rks, self._reach.profiles):
|
||||
profile.rk = rk
|
||||
|
||||
for profile in self._profiles:
|
||||
self._reach.insert_profile(0, profile)
|
||||
def redo(self):
|
||||
if self._new_rks is None:
|
||||
self._new_rks = self._mesher.update_rk(
|
||||
self._reach,
|
||||
**self._data
|
||||
)
|
||||
|
||||
for rk, profile in zip(self._new_rks, self._reach.profiles):
|
||||
profile.rk = rk
|
||||
|
||||
class MeshingCommand(QUndoCommand):
|
||||
def __init__(self, reach, mesher, data, tableView):
|
||||
QUndoCommand.__init__(self)
|
||||
|
||||
self._reach = reach
|
||||
self._data = data
|
||||
self._limites = data["limites"]
|
||||
self._mesher = mesher
|
||||
|
||||
self._new_profiles = None
|
||||
self._new_profiles_indexes = None
|
||||
self._tableView = tableView
|
||||
self._indexes = tableView.selectionModel().selection()
|
||||
|
||||
rows = list(
|
||||
set(
|
||||
(i.row() for i in tableView.selectedIndexes())
|
||||
)
|
||||
)
|
||||
self._selected_rk = [self._reach.profile(r).rk for r in rows]
|
||||
self._new_indexes = None
|
||||
|
||||
def undo(self):
|
||||
self._reach.hard_delete(self._new_profiles_indexes)
|
||||
|
||||
# Update selection
|
||||
selection = self._tableView.selectionModel()
|
||||
selection.select(
|
||||
self._indexes,
|
||||
QItemSelectionModel.Rows |
|
||||
QItemSelectionModel.ClearAndSelect |
|
||||
QItemSelectionModel.Select
|
||||
)
|
||||
|
||||
def redo(self):
|
||||
if self._new_profiles is None:
|
||||
if self._command == "update_rk":
|
||||
self._mesher.update_rk(
|
||||
self._reach,
|
||||
**self._data
|
||||
)
|
||||
else:
|
||||
self._mesher.meshing(
|
||||
self._reach,
|
||||
**self._data
|
||||
)
|
||||
self._new_profiles = self._mesher.meshing(
|
||||
self._reach,
|
||||
**self._data
|
||||
)
|
||||
|
||||
self._new_profiles = [p.copy() for p in self._reach.profiles]
|
||||
self._new_profiles.reverse()
|
||||
else:
|
||||
self._reach.purge()
|
||||
if self._new_profiles_indexes is None:
|
||||
k = self._limites[0]
|
||||
self._new_profiles_indexes = []
|
||||
for i in range(self._limites[1] - self._limites[0]):
|
||||
k += 1
|
||||
for p in self._new_profiles[i]:
|
||||
self._new_profiles_indexes.append(k)
|
||||
k += 1
|
||||
|
||||
for profile in self._new_profiles:
|
||||
self._reach.insert_profile(0, profile)
|
||||
k = self._limites[0]
|
||||
for i in range(self._limites[1] - self._limites[0]):
|
||||
k += 1
|
||||
for p in self._new_profiles[i]:
|
||||
self._reach.insert_profile(k, p)
|
||||
k += 1
|
||||
|
||||
# Update selection
|
||||
if self._new_indexes is None:
|
||||
ind = []
|
||||
for i in range(self._reach.number_profiles):
|
||||
if self._reach.profile(i).rk in self._selected_rk:
|
||||
ind.append(i)
|
||||
self._tableView.setFocus()
|
||||
self._new_indexes = QItemSelection()
|
||||
if len(ind) > 0:
|
||||
for i in ind:
|
||||
self._new_indexes.append(QItemSelectionRange(
|
||||
self._tableView.model().index(i, 0)
|
||||
))
|
||||
|
||||
selection = self._tableView.selectionModel()
|
||||
selection.select(
|
||||
self._new_indexes,
|
||||
QItemSelectionModel.Rows |
|
||||
QItemSelectionModel.ClearAndSelect |
|
||||
QItemSelectionModel.Select
|
||||
)
|
||||
|
||||
class PurgeCommand(QUndoCommand):
|
||||
def __init__(self, reach, np_purge):
|
||||
|
||||
@@ -64,8 +64,17 @@ class UpdateRKDialog(PamhyrDialog):
|
||||
self._end_dir = self._gl[i]
|
||||
|
||||
self._orientation = 0
|
||||
self._origin = self._reach.profile(0)
|
||||
self._origin_value = self._reach.profile(0).rk
|
||||
r = self.parent.tableView\
|
||||
.selectionModel()\
|
||||
.selectedRows()
|
||||
if len(r) < 1:
|
||||
self._origin = self._reach.profile(0)
|
||||
self._origin_value = self._reach.profile(0).rk
|
||||
self._origin_index = 0
|
||||
else:
|
||||
self._origin = self._reach.profile(r[0].row())
|
||||
self._origin_value = self._reach.profile(r[0].row()).rk
|
||||
self._origin_index = r[0].row()
|
||||
|
||||
self._init_default_values_profiles()
|
||||
self._init_default_values_guidelines()
|
||||
@@ -80,6 +89,8 @@ class UpdateRKDialog(PamhyrDialog):
|
||||
.connect(
|
||||
self.changed_profile
|
||||
)
|
||||
self.find(QComboBox, "comboBox_origin")\
|
||||
.setCurrentIndex(self._origin_index)
|
||||
|
||||
buttonbox = self.find(QButtonGroup, "buttonGroup_orientation")
|
||||
|
||||
|
||||
@@ -323,29 +323,10 @@ class GeometryWindow(PamhyrWindow):
|
||||
logger_exception(e)
|
||||
return
|
||||
|
||||
ind = []
|
||||
for i in range(self._reach.number_profiles):
|
||||
if self._reach.profile(i).rk in selected_rk:
|
||||
ind.append(i)
|
||||
self.tableView.setFocus()
|
||||
selection = self.tableView.selectionModel()
|
||||
index = QItemSelection()
|
||||
if len(ind) > 0:
|
||||
for i in ind:
|
||||
index.append(QItemSelectionRange(
|
||||
self.tableView.model().index(i, 0)
|
||||
))
|
||||
selection.select(
|
||||
index,
|
||||
QItemSelectionModel.Rows |
|
||||
QItemSelectionModel.ClearAndSelect |
|
||||
QItemSelectionModel.Select
|
||||
)
|
||||
|
||||
def _edit_meshing(self, data):
|
||||
try:
|
||||
mesher = InternalMeshing()
|
||||
self._table.meshing(mesher, data)
|
||||
self._table.meshing(mesher, data, self.tableView)
|
||||
except Exception as e:
|
||||
logger_exception(e)
|
||||
|
||||
@@ -370,7 +351,7 @@ class GeometryWindow(PamhyrWindow):
|
||||
|
||||
def _update_rk(self, data):
|
||||
try:
|
||||
mesher = MeshingWithMageMailleurTT()
|
||||
mesher = InternalMeshing()
|
||||
self._table.update_rk(mesher, data)
|
||||
except Exception as e:
|
||||
logger_exception(e)
|
||||
|
||||
Reference in new issue
Block a user