[FEM] get Gmsh version
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user