diff --git a/src/Mod/Fem/Gui/Resources/ui/MeshGmsh.ui b/src/Mod/Fem/Gui/Resources/ui/MeshGmsh.ui
index 607be25b97..249eee0c5a 100644
--- a/src/Mod/Fem/Gui/Resources/ui/MeshGmsh.ui
+++ b/src/Mod/Fem/Gui/Resources/ui/MeshGmsh.ui
@@ -7,7 +7,7 @@
0
0
400
- 413
+ 439
@@ -151,9 +151,9 @@
QFormLayout::AllNonFixedFieldsGrow
- -
+
-
-
-
+
-
@@ -172,6 +172,32 @@
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Gmsh version
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
diff --git a/src/Mod/Fem/femmesh/gmshtools.py b/src/Mod/Fem/femmesh/gmshtools.py
index 427a6d038f..d64a6e9d8e 100644
--- a/src/Mod/Fem/femmesh/gmshtools.py
+++ b/src/Mod/Fem/femmesh/gmshtools.py
@@ -30,6 +30,7 @@ __url__ = "https://www.freecadweb.org"
import subprocess
import sys
import os
+import re
import FreeCAD
from FreeCAD import Console
@@ -366,6 +367,36 @@ class GmshTools():
if self.group_elements:
Console.PrintMessage(" {}\n".format(self.group_elements))
+ def get_gmsh_version(self):
+ self.get_gmsh_command()
+ if os.path.exists(self.gmsh_bin):
+ found_message = "executable found: " + self.gmsh_bin
+ Console.PrintMessage(found_message + "\n")
+ else:
+ found_message = "executable not found: " + self.gmsh_bin
+ Console.PrintError(found_message + "\n")
+ return (None, None, None), found_message
+
+ command_list = [self.gmsh_bin, "--info"]
+ p = subprocess.Popen(
+ command_list,
+ shell=False,
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE,
+ text=True
+ )
+ gmsh_stdout, gmsh_stderr = p.communicate()
+
+ Console.PrintMessage("Gmsh: StdOut:\n" + gmsh_stdout + "\n")
+ if gmsh_stderr:
+ Console.PrintError("Gmsh: StdErr:\n" + gmsh_stderr + "\n")
+
+ match = re.search("^Version\s*:\s*(\d+)\.(\d+)\.(\d+)", gmsh_stdout)
+ if match:
+ return match.group(1, 2, 3), found_message + "\n\n" + gmsh_stdout # major, minor, patch, fullmessage
+ else:
+ return (None, None, None), found_message + "\n\n" + gmsh_stdout
+
def get_region_data(self):
# mesh regions
if not self.mesh_obj.MeshRegionList:
diff --git a/src/Mod/Fem/femtaskpanels/task_mesh_gmsh.py b/src/Mod/Fem/femtaskpanels/task_mesh_gmsh.py
index d9ef6f7d10..31c2400304 100644
--- a/src/Mod/Fem/femtaskpanels/task_mesh_gmsh.py
+++ b/src/Mod/Fem/femtaskpanels/task_mesh_gmsh.py
@@ -82,6 +82,11 @@ class _TaskPanel:
QtCore.SIGNAL("timeout()"),
self.update_timer_text
)
+ QtCore.QObject.connect(
+ self.form.pb_get_gmsh_version,
+ QtCore.SIGNAL("clicked()"),
+ self.get_gmsh_version
+ )
self.form.cb_dimension.addItems(
mesh_gmsh.MeshGmsh.known_element_dimensions
@@ -109,6 +114,7 @@ class _TaskPanel:
def reject(self):
self.mesh_obj.ViewObject.Document.resetEdit()
self.mesh_obj.Document.recompute()
+ self.Timer.stop()
return True
def clicked(self, button):
@@ -162,6 +168,15 @@ class _TaskPanel:
self.form.cb_dimension.setCurrentIndex(index)
self.dimension = str(self.form.cb_dimension.itemText(index)) # form returns unicode
+ def get_gmsh_version(self):
+ from femmesh import gmshtools
+ version, full_message = gmshtools.GmshTools(self.mesh_obj, self.analysis).get_gmsh_version()
+ QtGui.QMessageBox.information(
+ None,
+ "Gmsh - Information",
+ full_message
+ )
+
def run_gmsh(self):
QApplication.setOverrideCursor(Qt.WaitCursor)
part = self.mesh_obj.Part
@@ -202,7 +217,6 @@ class _TaskPanel:
try:
error = gmsh_mesh.create_mesh()
except Exception:
- import sys
error = sys.exc_info()[1]
FreeCAD.Console.PrintMessage(
"Unexpected error when creating mesh: {}\n"