[FEM] get Gmsh version

This commit is contained in:
UR-0
2021-03-14 13:11:45 +01:00
committed by Bernd Hahnebach
parent 8ec3766b00
commit 381ce4a830
3 changed files with 75 additions and 4 deletions

View File

@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>400</width>
<height>413</height>
<height>439</height>
</rect>
</property>
<property name="windowTitle">
@@ -151,9 +151,9 @@
<property name="fieldGrowthPolicy">
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
</property>
<item row="0" column="1">
<item row="1" column="1">
<layout class="QGridLayout" name="gl_actions">
<item row="1" column="0">
<item row="5" column="0">
<widget class="QLabel" name="l_time">
<property name="font">
<font>
@@ -172,6 +172,32 @@
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QPushButton" name="pb_get_gmsh_version">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Gmsh version</string>
</property>
</widget>
</item>
<item row="6" column="0">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>

View File

@@ -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:

View File

@@ -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"