Mesh: give choice to export only handwritten points in geometry, or all points with interpolated ones

mesh_tab
JeaDylan 2026-08-20 00:01:55 +02:00
parent 059d7203a9
commit ef5430ae2c
2 changed files with 47 additions and 5 deletions

View File

@ -97,6 +97,15 @@ class GeometryTranslate(MainTranslate):
self._dict["format_not_exportable"] = _translate(
"Geometry", "The format of the file is not exportable."
)
self._dict["export_options"] = _translate(
"Geometry", "Export options"
)
self._dict["export_options_text"] = _translate(
"Geometry", "Choose which cross-sections to export."
)
self._dict["export_interpolated_profiles"] = _translate(
"Geometry", "Export interpolated cross-sections"
)
self._dict["update_rk_error"] = _translate(
"Geometry",
"RK update can't be executed."

View File

@ -739,7 +739,11 @@ class GeometryWindow(PamhyrWindow):
suffix = Path(filename).suffix
if suffix != "":
if suffix == ".st" or suffix == ".ST":
self._export_to_file_st(filename[:-3])
export_interpolated = self._ask_export_options()
if export_interpolated is not None:
self._export_to_file_st(
filename[:-3], export_interpolated
)
else:
# Warning popup when the format is not exportable
win = QtWidgets.QMessageBox()
@ -750,16 +754,45 @@ class GeometryWindow(PamhyrWindow):
pass
else:
self._export_to_file_st(filename)
export_interpolated = self._ask_export_options()
if export_interpolated is not None:
self._export_to_file_st(filename, export_interpolated)
def _export_to_file_st(self, filename):
def _ask_export_options(self):
win = QtWidgets.QMessageBox(self)
win.setIcon(QtWidgets.QMessageBox.Question)
win.setWindowTitle(self._trad["export_options"])
win.setText(self._trad["export_options_text"])
win.setStandardButtons(
QtWidgets.QMessageBox.Ok | QtWidgets.QMessageBox.Cancel
)
export_interpolated = QCheckBox(
self._trad["export_interpolated_profiles"], win
)
export_interpolated.setChecked(True)
win.setCheckBox(export_interpolated)
if win.exec() != QtWidgets.QMessageBox.Ok:
return None
return export_interpolated.isChecked()
def _export_to_file_st(self, filename, export_interpolated=True):
with open(filename+".st", "w+") as f:
f.write("# Exported from Pamhyr2\n")
self._export_to_file_st_reach(f, self._reach)
self._export_to_file_st_reach(
f, self._reach, export_interpolated
)
def _export_to_file_st_reach(self, wfile, reach):
def _export_to_file_st_reach(self, wfile, reach,
export_interpolated=True):
pid = 0
for profile in reach.profiles:
is_interpolated = profile.name.lower().startswith("interpol")
if is_interpolated and not export_interpolated:
continue
self._export_to_file_st_profile(wfile, profile, pid)
pid += 1