Fem: Rename base_femmeshtaskpanel to base_femlogtaskpanel

This commit is contained in:
marioalexis
2025-04-02 10:50:45 -03:00
parent 7d68db60b4
commit ce068a71c4
4 changed files with 49 additions and 29 deletions

View File

@@ -579,7 +579,7 @@ SET(FemGuiObjects_SRCS
SET(FemGuiTaskPanels_SRCS
femtaskpanels/__init__.py
femtaskpanels/base_femtaskpanel.py
femtaskpanels/base_femmeshtaskpanel.py
femtaskpanels/base_femlogtaskpanel.py
femtaskpanels/task_constraint_bodyheatsource.py
femtaskpanels/task_constraint_centrif.py
femtaskpanels/task_constraint_currentdensity.py

View File

@@ -21,13 +21,13 @@
# * *
# ***************************************************************************
__title__ = "FreeCAD FEM mesh base task panel for mesh object object"
__title__ = "FreeCAD FEM base task panel with logging"
__author__ = "Mario Passaglia"
__url__ = "https://www.freecad.org"
## @package base_femmeshtaskpanel
## @package base_femlogtaskpanel
# \ingroup FEM
# \brief base task panel for mesh object
# \brief base task panel for logging
from abc import ABC, abstractmethod
@@ -44,27 +44,34 @@ from . import base_femtaskpanel
class _Thread(QtCore.QThread):
"""
Class for thread and subprocess manipulation
'tool' argument must be an object with 'compute' and 'prepare' methods
'tool' argument must be an object with 'compute', 'prepare', 'update_properties' methods
and a 'process' attribute of type QProcess object
"""
def __init__(self, tool):
super().__init__()
self.tool = tool
self.prepare_ok = False
def run(self):
self.tool.prepare()
try:
self.tool.prepare()
self.prepare_ok = True
except Exception as e:
self.prepare_ok = False
FreeCAD.Console.PrintError("{}\n".format(e))
class _BaseMeshTaskPanel(base_femtaskpanel._BaseTaskPanel, ABC):
class _BaseLogTaskPanel(base_femtaskpanel._BaseTaskPanel, ABC):
"""
Abstract base class for FemMesh object TaskPanel
Abstract base class for TaskPanel with logging
"""
def __init__(self, obj, tool):
super().__init__(obj)
self.tool = tool
self.timer = QtCore.QTimer()
self.elapsed = QtCore.QElapsedTimer()
self._thread = _Thread(self.tool)
self.text_log = None
self.text_time = None
@@ -97,17 +104,27 @@ class _BaseMeshTaskPanel(base_femtaskpanel._BaseTaskPanel, ABC):
def thread_started(self):
self.text_log.clear()
self.write_log("Prepare meshing...\n", QtGui.QColor(getOutputWinColor("Text")))
self.write_log("Prepare process...\n", QtGui.QColor(getOutputWinColor("Text")))
QtGui.QApplication.setOverrideCursor(QtCore.Qt.WaitCursor)
def thread_finished(self):
QtGui.QApplication.restoreOverrideCursor()
if self._thread.prepare_ok:
self.write_log("Preparation finished\n", QtGui.QColor(getOutputWinColor("Text")))
self.preparation_finished()
else:
self.timer.stop()
self.write_log("Preparation failed.\n", QtGui.QColor(getOutputWinColor("Error")))
return None
def preparation_finished(self):
self.tool.compute()
def process_finished(self, code, status):
if status == QtCore.QProcess.ExitStatus.NormalExit:
if code != 0:
self.write_log(
"Process finished with errors. Mesh not updated\n",
"Process finished with errors. Result not updated\n",
QtGui.QColor(getOutputWinColor("Error")),
)
return
@@ -117,7 +134,8 @@ class _BaseMeshTaskPanel(base_femtaskpanel._BaseTaskPanel, ABC):
self.write_log("Process crashed\n", QtGui.QColor(getOutputWinColor("Error")))
def process_started(self):
self.write_log("Start meshing...\n", QtGui.QColor(getOutputWinColor("Text")))
QtGui.QApplication.setOverrideCursor(QtCore.Qt.WaitCursor)
self.write_log("Start process...\n", QtGui.QColor(getOutputWinColor("Text")))
def write_output(self):
self.write_log(
@@ -143,11 +161,11 @@ class _BaseMeshTaskPanel(base_femtaskpanel._BaseTaskPanel, ABC):
self.text_log.ensureCursorVisible()
@abstractmethod
def set_mesh_params(self):
def set_object_params(self):
pass
@abstractmethod
def get_mesh_params(self):
def get_object_params(self):
pass
def getStandardButtons(self):
@@ -166,7 +184,7 @@ class _BaseMeshTaskPanel(base_femtaskpanel._BaseTaskPanel, ABC):
self.timer.stop()
QtGui.QApplication.restoreOverrideCursor()
self.set_mesh_params()
self.set_object_params()
return super().accept()
def reject(self):
@@ -190,8 +208,10 @@ class _BaseMeshTaskPanel(base_femtaskpanel._BaseTaskPanel, ABC):
FreeCAD.Console.PrintWarning("Process already running\n")
return None
self.set_mesh_params()
self.run_mesher()
self.apply()
def apply(self):
self.run_process()
def update_timer_text(self):
self.text_time.setText(f"Time: {self.elapsed.elapsed()/1000:4.1f} s")
@@ -200,8 +220,8 @@ class _BaseMeshTaskPanel(base_femtaskpanel._BaseTaskPanel, ABC):
self.timer.stop()
QtGui.QApplication.restoreOverrideCursor()
def run_mesher(self):
self.elapsed = QtCore.QElapsedTimer()
def run_process(self):
self.set_object_params()
self.elapsed.start()
self.update_timer_text()
self.timer.start(100)
@@ -210,4 +230,4 @@ class _BaseMeshTaskPanel(base_femtaskpanel._BaseTaskPanel, ABC):
def get_version(self):
full_message = self.tool.version()
QtGui.QMessageBox.information(None, "{} - Information".format(self.tool.name), full_message)
QtGui.QMessageBox.information(None, "{} - Info".format(self.tool.name), full_message)

View File

@@ -36,10 +36,10 @@ import FreeCADGui
from femmesh import gmshtools
from . import base_femmeshtaskpanel
from . import base_femlogtaskpanel
class _TaskPanel(base_femmeshtaskpanel._BaseMeshTaskPanel):
class _TaskPanel(base_femlogtaskpanel._BaseLogTaskPanel):
"""
The TaskPanel for editing References property of
MeshGmsh objects and creation of new FEM mesh
@@ -78,16 +78,16 @@ class _TaskPanel(base_femmeshtaskpanel._BaseMeshTaskPanel):
self.form.pb_get_gmsh_version, QtCore.SIGNAL("clicked()"), self.get_version
)
self.get_mesh_params()
self.get_object_params()
self.set_widgets()
def get_mesh_params(self):
def get_object_params(self):
self.clmax = self.obj.CharacteristicLengthMax
self.clmin = self.obj.CharacteristicLengthMin
self.dimension = self.obj.ElementDimension
self.order = self.obj.ElementOrder
def set_mesh_params(self):
def set_object_params(self):
self.obj.CharacteristicLengthMax = self.clmax
self.obj.CharacteristicLengthMin = self.clmin
self.obj.ElementDimension = self.dimension

View File

@@ -36,10 +36,10 @@ import FreeCADGui
from femmesh import netgentools
from . import base_femmeshtaskpanel
from . import base_femlogtaskpanel
class _TaskPanel(base_femmeshtaskpanel._BaseMeshTaskPanel):
class _TaskPanel(base_femlogtaskpanel._BaseLogTaskPanel):
"""
The TaskPanel for editing References property of
MeshNetgen objects and creation of new FEM mesh
@@ -97,10 +97,10 @@ class _TaskPanel(base_femmeshtaskpanel._BaseMeshTaskPanel):
self.form.pb_get_netgen_version, QtCore.SIGNAL("clicked()"), self.get_version
)
self.get_mesh_params()
self.get_object_params()
self.set_widgets()
def get_mesh_params(self):
def get_object_params(self):
self.min_size = self.obj.MinSize
self.max_size = self.obj.MaxSize
self.fineness = self.obj.Fineness
@@ -110,7 +110,7 @@ class _TaskPanel(base_femmeshtaskpanel._BaseMeshTaskPanel):
self.second_order = self.obj.SecondOrder
self.user_p = self.get_user_fineness_params(self.obj)
def set_mesh_params(self):
def set_object_params(self):
self.obj.MinSize = self.min_size
self.obj.MaxSize = self.max_size
self.obj.Fineness = self.fineness