mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-12-26 17:30:35 +05:00
spns #19079: top-ii-vol integration in SMESH
This commit is contained in:
parent
e1682190e9
commit
d83b63b2c3
@ -9,6 +9,7 @@ The following plugins are accessible via **Mesh > SMESH plugins** menu:
|
|||||||
* `SpherePadder plugin <padder/padder_userguide_page.html>`_
|
* `SpherePadder plugin <padder/padder_userguide_page.html>`_
|
||||||
* `MGSurfOpt plugin <yams/index.html>`_
|
* `MGSurfOpt plugin <yams/index.html>`_
|
||||||
* `MGCleaner plugin <MGCleaner/index.html>`_
|
* `MGCleaner plugin <MGCleaner/index.html>`_
|
||||||
|
* `topIIVolMesh plugin <TopIIVolMesh/index.html>`_
|
||||||
* `Z-cracks plugin <zcracks/index.html>`_
|
* `Z-cracks plugin <zcracks/index.html>`_
|
||||||
* `MacMesh plugin <MacMesh/index.html>`_
|
* `MacMesh plugin <MacMesh/index.html>`_
|
||||||
* `blocFissure plugin <blocFissure/index.html>`_
|
* `blocFissure plugin <blocFissure/index.html>`_
|
||||||
|
@ -26,6 +26,7 @@ ADD_SUBDIRECTORY(MacMesh)
|
|||||||
IF(SALOME_BUILD_GUI)
|
IF(SALOME_BUILD_GUI)
|
||||||
ADD_SUBDIRECTORY(MGCleanerPlug)
|
ADD_SUBDIRECTORY(MGCleanerPlug)
|
||||||
ADD_SUBDIRECTORY(YamsPlug)
|
ADD_SUBDIRECTORY(YamsPlug)
|
||||||
|
ADD_SUBDIRECTORY(TopIIVolMeshPlug)
|
||||||
# ADD_SUBDIRECTORY(ZCracksPlug)
|
# ADD_SUBDIRECTORY(ZCracksPlug)
|
||||||
ENDIF(SALOME_BUILD_GUI)
|
ENDIF(SALOME_BUILD_GUI)
|
||||||
|
|
||||||
|
60
src/Tools/TopIIVolMeshPlug/CMakeLists.txt
Normal file
60
src/Tools/TopIIVolMeshPlug/CMakeLists.txt
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
# Copyright (C) 2013-2021 EDF R&D
|
||||||
|
#
|
||||||
|
# This library is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU Lesser General Public
|
||||||
|
# License as published by the Free Software Foundation; either
|
||||||
|
# version 2.1 of the License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This library is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
# Lesser General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Lesser General Public
|
||||||
|
# License along with this library; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
#
|
||||||
|
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
|
#
|
||||||
|
|
||||||
|
IF(SALOME_BUILD_DOC)
|
||||||
|
ADD_SUBDIRECTORY(doc)
|
||||||
|
ENDIF(SALOME_BUILD_DOC)
|
||||||
|
|
||||||
|
IF(SALOME_BUILD_GUI)
|
||||||
|
INCLUDE(UsePyQt)
|
||||||
|
ENDIF(SALOME_BUILD_GUI)
|
||||||
|
|
||||||
|
# --- scripts ---
|
||||||
|
|
||||||
|
# scripts / static
|
||||||
|
SET(_plugin_SCRIPTS
|
||||||
|
TopIIVolMeshPluginDialog.py
|
||||||
|
TopIIVolMeshPlugin.py
|
||||||
|
TopIIVolMeshPlugin_plugin.py
|
||||||
|
TopIIVolMeshMonitor.py
|
||||||
|
README
|
||||||
|
)
|
||||||
|
|
||||||
|
IF(SALOME_BUILD_GUI)
|
||||||
|
# uic files / to be processed by pyuic
|
||||||
|
SET(_pyuic_FILES
|
||||||
|
TopIIVolMeshPluginDialog.ui
|
||||||
|
TopIIVolMeshMonitor.ui
|
||||||
|
)
|
||||||
|
# scripts / pyuic wrappings
|
||||||
|
PYQT_WRAP_UIC(_pyuic_SCRIPTS ${_pyuic_FILES} TARGET_NAME _target_name_pyuic)
|
||||||
|
ENDIF(SALOME_BUILD_GUI)
|
||||||
|
|
||||||
|
# --- rules ---
|
||||||
|
|
||||||
|
SALOME_INSTALL_SCRIPTS("${_plugin_SCRIPTS}" ${SALOME_SMESH_INSTALL_PLUGINS})
|
||||||
|
MESSAGE(VERBOSE "iNSTALLATION FOLDER ${SALOME_SMESH_INSTALL_PLUGINS}")
|
||||||
|
IF(SALOME_BUILD_GUI)
|
||||||
|
SALOME_INSTALL_SCRIPTS("${_pyuic_SCRIPTS}" ${SALOME_SMESH_INSTALL_PLUGINS} TARGET_NAME _target_name_pyuic_py)
|
||||||
|
# add dependency of compiled py files on uic files in order
|
||||||
|
# to avoid races problems when compiling in parallel
|
||||||
|
ADD_DEPENDENCIES(${_target_name_pyuic_py} ${_target_name_pyuic})
|
||||||
|
# Install the CMake configuration files:
|
||||||
|
INSTALL(FILES "${PROJECT_SOURCE_DIR}/README" DESTINATION "${SALOME_INSTALL_CMAKE_LOCAL}")
|
||||||
|
ENDIF(SALOME_BUILD_GUI)
|
37
src/Tools/TopIIVolMeshPlug/README
Normal file
37
src/Tools/TopIIVolMeshPlug/README
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
******************************
|
||||||
|
About SALOME TopIIVolMesh plug-in
|
||||||
|
******************************
|
||||||
|
|
||||||
|
SALOME TopIIVolMesh plug-in implements an interface to the topIIvol meshing tool.
|
||||||
|
|
||||||
|
SALOME TopIIVolMesh plug-in is integrated into SALOME platform via the SALOME Mesh
|
||||||
|
module.
|
||||||
|
|
||||||
|
For more information please visit the SALOME platform web site:
|
||||||
|
|
||||||
|
<http://www.salome-platform.org/>
|
||||||
|
|
||||||
|
=======
|
||||||
|
License
|
||||||
|
=======
|
||||||
|
|
||||||
|
SALOME platform is distributed under the GNU Lesser General Public License.
|
||||||
|
See COPYING file for more details.
|
||||||
|
|
||||||
|
Also, additional information can be found at SALOME platform web site:
|
||||||
|
|
||||||
|
<http://www.salome-platform.org/downloads/license/>
|
||||||
|
|
||||||
|
============
|
||||||
|
Installation
|
||||||
|
============
|
||||||
|
|
||||||
|
=============
|
||||||
|
Documentation
|
||||||
|
=============
|
||||||
|
|
||||||
|
===============
|
||||||
|
Troubleshooting
|
||||||
|
===============
|
||||||
|
|
||||||
|
Please, send a mail to webmaster.salome@opencascade.com.
|
97
src/Tools/TopIIVolMeshPlug/TopIIVolMeshMonitor.py
Normal file
97
src/Tools/TopIIVolMeshPlug/TopIIVolMeshMonitor.py
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Copyright (C) 2013-2020 EDF R&D
|
||||||
|
#
|
||||||
|
# This library is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU Lesser General Public
|
||||||
|
# License as published by the Free Software Foundation; either
|
||||||
|
# version 2.1 of the License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This library is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
# Lesser General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Lesser General Public
|
||||||
|
# License along with this library; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
#
|
||||||
|
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
|
#
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import string
|
||||||
|
import types
|
||||||
|
import tempfile
|
||||||
|
import traceback
|
||||||
|
import pprint as PP #pretty print
|
||||||
|
|
||||||
|
from qtsalome import *
|
||||||
|
|
||||||
|
# Import des panels
|
||||||
|
|
||||||
|
from TopIIVolMeshMonitor_ui import Ui_qdLogger
|
||||||
|
|
||||||
|
verbose = True
|
||||||
|
|
||||||
|
class TopIIVolMeshMonitor(Ui_qdLogger, QDialog):
|
||||||
|
def __init__(self, parent, txt):
|
||||||
|
QDialog.__init__(self,parent)
|
||||||
|
self.setupUi(self)
|
||||||
|
self.resize( QSize(1000,600).expandedTo(self.minimumSizeHint()) )
|
||||||
|
self.qpbOK.clicked.connect( self.OnQpbOKClicked )
|
||||||
|
# Button OK is disabled until computation is finished
|
||||||
|
self.qpbOK.setEnabled(False)
|
||||||
|
self.qpbSave.clicked.connect( self.OnQpbSaveClicked )
|
||||||
|
self.qpbSave.setToolTip("Save trace in log file")
|
||||||
|
self.qpbOK.setToolTip("Close view")
|
||||||
|
self.myExecutable=QProcess(self)
|
||||||
|
self.myExecutable.readyReadStandardOutput.connect( self.readFromStdOut )
|
||||||
|
self.myExecutable.readyReadStandardError.connect( self.readFromStdErr )
|
||||||
|
self.myExecutable.finished.connect( self.computationFinished )
|
||||||
|
self.myExecutable.errorOccurred.connect( self.computationOnError )
|
||||||
|
if os.path.exists(self.parent().outputMesh):
|
||||||
|
os.remove(self.parent().outputMesh)
|
||||||
|
self.myExecutable.start(txt)
|
||||||
|
self.myExecutable.closeWriteChannel()
|
||||||
|
self.show()
|
||||||
|
|
||||||
|
def OnQpbOKClicked(self):
|
||||||
|
self.close()
|
||||||
|
|
||||||
|
def OnQpbSaveClicked(self):
|
||||||
|
outputDirectory=os.path.expanduser("~")
|
||||||
|
fn, mask = QFileDialog.getSaveFileName(None,"Save File",outputDirectory)
|
||||||
|
if not fn:
|
||||||
|
return
|
||||||
|
ulfile = os.path.abspath(str(fn))
|
||||||
|
try:
|
||||||
|
f = open(fn, 'wb')
|
||||||
|
f.write(self.qtbLogWindow.toPlainText().encode("utf-8"))
|
||||||
|
f.close()
|
||||||
|
except IOError as why:
|
||||||
|
QMessageBox.critical(self, 'Save File',
|
||||||
|
'The file <b>%s</b> could not be saved.<br>Reason: %s'%(str(fn), str(why)))
|
||||||
|
|
||||||
|
def readFromStdErr(self):
|
||||||
|
a=self.myExecutable.readAllStandardError()
|
||||||
|
aa=a.data().decode(errors='ignore')
|
||||||
|
self.qtbLogWindow.append(aa)
|
||||||
|
|
||||||
|
def readFromStdOut(self) :
|
||||||
|
a=self.myExecutable.readAllStandardOutput()
|
||||||
|
aa=a.data().decode(errors='ignore')
|
||||||
|
self.qtbLogWindow.append(aa)
|
||||||
|
|
||||||
|
def computationFinished(self):
|
||||||
|
self.qpbOK.setEnabled(True)
|
||||||
|
if self.myExecutable.exitCode() == 0:
|
||||||
|
self.parent().saveOutputMesh()
|
||||||
|
else:
|
||||||
|
QMessageBox.critical(self, 'Computation failed',
|
||||||
|
'The computation has failed.<br>Please, check the log message.')
|
||||||
|
|
||||||
|
def computationOnError(self):
|
||||||
|
self.qpbOK.setEnabled(True)
|
||||||
|
QMessageBox.critical(self, 'Computation failed',
|
||||||
|
'The computation has failed.<br>Please, check the log message.')
|
38
src/Tools/TopIIVolMeshPlug/TopIIVolMeshMonitor.ui
Normal file
38
src/Tools/TopIIVolMeshPlug/TopIIVolMeshMonitor.ui
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>qdLogger</class>
|
||||||
|
<widget class="QDialog" name="qdLogger">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>469</width>
|
||||||
|
<height>489</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Run TopIIVolMesh</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QPushButton" name="qpbSave">
|
||||||
|
<property name="text">
|
||||||
|
<string>Save log</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="0" colspan="2">
|
||||||
|
<widget class="QTextBrowser" name="qtbLogWindow"/>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QPushButton" name="qpbOK">
|
||||||
|
<property name="text">
|
||||||
|
<string>Ok</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
36
src/Tools/TopIIVolMeshPlug/TopIIVolMeshPlugin.py
Normal file
36
src/Tools/TopIIVolMeshPlug/TopIIVolMeshPlugin.py
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Copyright (C) 2013-2020 EDF R&D
|
||||||
|
#
|
||||||
|
# This library is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU Lesser General Public
|
||||||
|
# License as published by the Free Software Foundation; either
|
||||||
|
# version 2.1 of the License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This library is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
# Lesser General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Lesser General Public
|
||||||
|
# License along with this library; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
#
|
||||||
|
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
|
#
|
||||||
|
|
||||||
|
# if you already have plugins defined in a salome_plugins.py file, add this file at the end.
|
||||||
|
# if not, copy this file as ${HOME}/Plugins/smesh_plugins.py or ${APPLI}/Plugins/smesh_plugins.py
|
||||||
|
|
||||||
|
def TopIIVolMeshLct(context):
|
||||||
|
# get context study, salomeGui
|
||||||
|
study = context.study
|
||||||
|
sg = context.sg
|
||||||
|
|
||||||
|
import os
|
||||||
|
import subprocess
|
||||||
|
import tempfile
|
||||||
|
from qtsalome import QFileDialog, QMessageBox
|
||||||
|
|
||||||
|
import TopIIVolMeshPluginDialog
|
||||||
|
window = TopIIVolMeshPluginDialog.getInstance()
|
||||||
|
window.show()
|
164
src/Tools/TopIIVolMeshPlug/TopIIVolMeshPluginDialog.py
Normal file
164
src/Tools/TopIIVolMeshPlug/TopIIVolMeshPluginDialog.py
Normal file
@ -0,0 +1,164 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Copyright (C) 2013-2020 EDF R&D
|
||||||
|
#
|
||||||
|
# This library is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU Lesser General Public
|
||||||
|
# License as published by the Free Software Foundation; either
|
||||||
|
# version 2.1 of the License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This library is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
# Lesser General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Lesser General Public
|
||||||
|
# License along with this library; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
#
|
||||||
|
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
import os, subprocess
|
||||||
|
import random
|
||||||
|
import getpass
|
||||||
|
import time
|
||||||
|
import pathlib
|
||||||
|
|
||||||
|
# set seed
|
||||||
|
from datetime import datetime
|
||||||
|
random.seed(datetime.now())
|
||||||
|
|
||||||
|
import platform
|
||||||
|
import tempfile
|
||||||
|
from TopIIVolMeshPluginDialog_ui import Ui_TopIIVolMeshMainFrame
|
||||||
|
from TopIIVolMeshMonitor import TopIIVolMeshMonitor
|
||||||
|
from qtsalome import *
|
||||||
|
|
||||||
|
verbose = True
|
||||||
|
|
||||||
|
class TopIIVolMeshPluginDialog(Ui_TopIIVolMeshMainFrame,QWidget):
|
||||||
|
"""
|
||||||
|
"""
|
||||||
|
def __init__(self):
|
||||||
|
QWidget.__init__(self)
|
||||||
|
self.setupUi(self)
|
||||||
|
self.qpbHelp.clicked.connect(self.OnQpbHelpClicked)
|
||||||
|
self.qpbCompute.clicked.connect(self.OnQpbComputeClicked)
|
||||||
|
self.qpbMeshFile.clicked.connect(self.OnQpbMeshFileClicked)
|
||||||
|
self.qpbMeshFile.setToolTip("Select input DEM file")
|
||||||
|
self.qpbClose.clicked.connect(self.OnQpbCloseClicked)
|
||||||
|
self.qcbDistributed.stateChanged[int].connect(self.OnqcbDistributedClicked)
|
||||||
|
self.qlbXParts.setVisible(False)
|
||||||
|
self.qlbYParts.setVisible(False)
|
||||||
|
self.qlbZParts.setVisible(False)
|
||||||
|
self.qsbXParts.setVisible(False)
|
||||||
|
self.qsbYParts.setVisible(False)
|
||||||
|
self.qsbZParts.setVisible(False)
|
||||||
|
self.SALOME_TMP_DIR = None
|
||||||
|
try:
|
||||||
|
self.qleTmpDir.setText(os.path.join('/tmp',getpass.getuser(),'top-ii-vol'))
|
||||||
|
except:
|
||||||
|
self.qleTmpDir.setText('/tmp')
|
||||||
|
self.resize(800, 500)
|
||||||
|
self.outputMesh = ''
|
||||||
|
|
||||||
|
def OnQpbHelpClicked(self):
|
||||||
|
import SalomePyQt
|
||||||
|
sgPyQt = SalomePyQt.SalomePyQt()
|
||||||
|
try:
|
||||||
|
mydir=os.environ["SMESH_ROOT_DIR"]
|
||||||
|
except Exception:
|
||||||
|
QMessageBox.warning(self, "Help", "Help unavailable $SMESH_ROOT_DIR not found")
|
||||||
|
return
|
||||||
|
|
||||||
|
myDoc=mydir + "/share/doc/salome/gui/SMESH/TopIIVolMesh/index.html"
|
||||||
|
sgPyQt.helpContext(myDoc,"")
|
||||||
|
|
||||||
|
def OnQpbMeshFileClicked(self):
|
||||||
|
fd = QFileDialog(self, "select an existing Mesh file", self.qleMeshFile.text(), "Mesh-Files (*.xyz);;All Files (*)")
|
||||||
|
if fd.exec_():
|
||||||
|
infile = fd.selectedFiles()[0]
|
||||||
|
self.qleMeshFile.setText(infile)
|
||||||
|
|
||||||
|
def OnQpbComputeClicked(self):
|
||||||
|
if self.qleMeshFile.text() == '':
|
||||||
|
QMessageBox.critical(self, "Mesh", "select an input mesh")
|
||||||
|
return
|
||||||
|
inputMesh = self.qleMeshFile.text()
|
||||||
|
# retrieve x,y,z and depth parameters
|
||||||
|
xPoints = self.qsbXPoints.value()
|
||||||
|
yPoints = self.qsbYPoints.value()
|
||||||
|
zPoints = self.qsbZPoints.value()
|
||||||
|
depth = self.qsbDepth.value()
|
||||||
|
nProcs = self.qsbNBprocs.value()
|
||||||
|
if not self.qcbDistributed.isChecked():
|
||||||
|
if nProcs == 1:
|
||||||
|
shellCmd = "topIIvol_Mesher"
|
||||||
|
else:
|
||||||
|
shellCmd = "mpirun -np {} topIIvol_ParMesher".format(nProcs)
|
||||||
|
shellCmd+= " --xpoints " + str(xPoints)
|
||||||
|
shellCmd+= " --ypoints " + str(yPoints)
|
||||||
|
shellCmd+= " --zpoints " + str(zPoints)
|
||||||
|
shellCmd+= " --depth " + str(depth)
|
||||||
|
shellCmd+= " --in " + inputMesh
|
||||||
|
else:
|
||||||
|
xParts = self.qsbXParts.value()
|
||||||
|
yParts = self.qsbYParts.value()
|
||||||
|
zParts = self.qsbZParts.value()
|
||||||
|
shellCmd = "mpirun -np {} topIIvol_DistMesher".format(nProcs)
|
||||||
|
shellCmd+= " --xpoints " + str(xPoints)
|
||||||
|
shellCmd+= " --ypoints " + str(yPoints)
|
||||||
|
shellCmd+= " --zpoints " + str(zPoints)
|
||||||
|
shellCmd+= " --depth " + str(depth)
|
||||||
|
shellCmd+= " --partition_x " + str(xParts)
|
||||||
|
shellCmd+= " --partition_y " + str(xParts)
|
||||||
|
shellCmd+= " --partition_z " + str(xParts)
|
||||||
|
shellCmd+= " --in " + inputMesh
|
||||||
|
if platform.system()=="Windows" :
|
||||||
|
self.SALOME_TMP_DIR = os.getenv("SALOME_TMP_DIR")
|
||||||
|
else:
|
||||||
|
self.SALOME_TMP_DIR = os.path.join(self.qleTmpDir.text(), time.strftime("%Y-%m-%d-%H-%M-%S"))
|
||||||
|
pathlib.Path(self.SALOME_TMP_DIR).mkdir(parents=True, exist_ok=True)
|
||||||
|
self.outputMesh= os.path.join(self.SALOME_TMP_DIR, inputMesh.split('/').pop().replace('.xyz','.mesh'))
|
||||||
|
shellCmd+= " --out " + self.outputMesh
|
||||||
|
print("INFO: ", shellCmd)
|
||||||
|
myMonitorView=TopIIVolMeshMonitor(self, shellCmd)
|
||||||
|
|
||||||
|
def OnqcbDistributedClicked(self):
|
||||||
|
state = self.qcbDistributed.isChecked()
|
||||||
|
self.qlbXParts.setVisible(state)
|
||||||
|
self.qlbYParts.setVisible(state)
|
||||||
|
self.qlbZParts.setVisible(state)
|
||||||
|
self.qsbXParts.setVisible(state)
|
||||||
|
self.qsbYParts.setVisible(state)
|
||||||
|
self.qsbZParts.setVisible(state)
|
||||||
|
|
||||||
|
def OnQpbCloseClicked(self):
|
||||||
|
self.close()
|
||||||
|
|
||||||
|
def saveOutputMesh(self):
|
||||||
|
if not self.qcbDisplayMesh.isChecked():
|
||||||
|
return True
|
||||||
|
import salome
|
||||||
|
import SMESH, SALOMEDS
|
||||||
|
from salome.smesh import smeshBuilder
|
||||||
|
smesh = smeshBuilder.New()
|
||||||
|
self.outputMesh.split('/')
|
||||||
|
for mesh in pathlib.Path(self.SALOME_TMP_DIR).glob('*.mesh'):
|
||||||
|
(outputMesh, status) = smesh.CreateMeshesFromGMF(os.path.join(self.SALOME_TMP_DIR, mesh))
|
||||||
|
if salome.sg.hasDesktop():
|
||||||
|
salome.sg.updateObjBrowser()
|
||||||
|
return True
|
||||||
|
|
||||||
|
__instance = None
|
||||||
|
|
||||||
|
def getInstance():
|
||||||
|
"""
|
||||||
|
This function returns a singleton instance of the plugin dialog.
|
||||||
|
It is mandatory in order to call show without a parent ...
|
||||||
|
"""
|
||||||
|
global __instance
|
||||||
|
if __instance is None:
|
||||||
|
__instance = TopIIVolMeshPluginDialog()
|
||||||
|
return __instance
|
474
src/Tools/TopIIVolMeshPlug/TopIIVolMeshPluginDialog.ui
Normal file
474
src/Tools/TopIIVolMeshPlug/TopIIVolMeshPluginDialog.ui
Normal file
@ -0,0 +1,474 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>TopIIVolMeshMainFrame</class>
|
||||||
|
<widget class="QWidget" name="TopIIVolMeshMainFrame">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>780</width>
|
||||||
|
<height>411</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Tetra Mesh from cloud of xyz points mesh generator</string>
|
||||||
|
</property>
|
||||||
|
<widget class="QGroupBox" name="groupBox">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>10</x>
|
||||||
|
<y>10</y>
|
||||||
|
<width>761</width>
|
||||||
|
<height>101</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>10</pointsize>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string>Input Mesh</string>
|
||||||
|
</property>
|
||||||
|
<widget class="QPushButton" name="qpbMeshFile">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>10</x>
|
||||||
|
<y>50</y>
|
||||||
|
<width>151</width>
|
||||||
|
<height>31</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>10</pointsize>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>DEM input file</string>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>18</width>
|
||||||
|
<height>18</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLineEdit" name="qleMeshFile">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>170</x>
|
||||||
|
<y>50</y>
|
||||||
|
<width>531</width>
|
||||||
|
<height>31</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>10</pointsize>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
<widget class="QGroupBox" name="gbOptions">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>10</x>
|
||||||
|
<y>120</y>
|
||||||
|
<width>761</width>
|
||||||
|
<height>231</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string>Options</string>
|
||||||
|
</property>
|
||||||
|
<widget class="QSpinBox" name="qsbXPoints">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>10</x>
|
||||||
|
<y>30</y>
|
||||||
|
<width>62</width>
|
||||||
|
<height>22</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="minimum">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>999999999</number>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<number>10</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" name="qlXpoints">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>80</x>
|
||||||
|
<y>30</y>
|
||||||
|
<width>201</width>
|
||||||
|
<height>20</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Number of points in X direction</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QSpinBox" name="qsbYPoints">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>10</x>
|
||||||
|
<y>70</y>
|
||||||
|
<width>62</width>
|
||||||
|
<height>22</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="minimum">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>999999999</number>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<number>10</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QSpinBox" name="qsbZPoints">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>10</x>
|
||||||
|
<y>110</y>
|
||||||
|
<width>62</width>
|
||||||
|
<height>22</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="minimum">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>999999999</number>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<number>10</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" name="qlYpoints">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>80</x>
|
||||||
|
<y>70</y>
|
||||||
|
<width>211</width>
|
||||||
|
<height>20</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Number of points in Y direction</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" name="qlZpoints">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>80</x>
|
||||||
|
<y>110</y>
|
||||||
|
<width>211</width>
|
||||||
|
<height>20</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Number of points in Z direction</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QSpinBox" name="qsbDepth">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>10</x>
|
||||||
|
<y>150</y>
|
||||||
|
<width>62</width>
|
||||||
|
<height>22</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="minimum">
|
||||||
|
<number>-999999999</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>999999999</number>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" name="qlDepth">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>80</x>
|
||||||
|
<y>150</y>
|
||||||
|
<width>201</width>
|
||||||
|
<height>20</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Depth in Z direction</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QCheckBox" name="qcbDistributed">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>630</x>
|
||||||
|
<y>30</y>
|
||||||
|
<width>91</width>
|
||||||
|
<height>21</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" name="qlbNbProcs">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>370</x>
|
||||||
|
<y>30</y>
|
||||||
|
<width>151</width>
|
||||||
|
<height>16</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Number of processors</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" name="qlDistributed">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>660</x>
|
||||||
|
<y>30</y>
|
||||||
|
<width>101</width>
|
||||||
|
<height>16</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Distributed</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" name="qlbXParts">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>370</x>
|
||||||
|
<y>70</y>
|
||||||
|
<width>261</width>
|
||||||
|
<height>16</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Number of partitions in X direction</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" name="qlbYParts">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>370</x>
|
||||||
|
<y>110</y>
|
||||||
|
<width>251</width>
|
||||||
|
<height>16</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Number of partitions in Y direction</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" name="qlbZParts">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>370</x>
|
||||||
|
<y>150</y>
|
||||||
|
<width>251</width>
|
||||||
|
<height>16</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Number of partitions in Z direction</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QSpinBox" name="qsbNBprocs">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>300</x>
|
||||||
|
<y>30</y>
|
||||||
|
<width>62</width>
|
||||||
|
<height>22</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="minimum">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>999999999</number>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QSpinBox" name="qsbXParts">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>300</x>
|
||||||
|
<y>70</y>
|
||||||
|
<width>62</width>
|
||||||
|
<height>22</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="minimum">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>999999999</number>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QSpinBox" name="qsbYParts">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>300</x>
|
||||||
|
<y>110</y>
|
||||||
|
<width>62</width>
|
||||||
|
<height>22</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="minimum">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>999999999</number>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QSpinBox" name="qsbZParts">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>300</x>
|
||||||
|
<y>150</y>
|
||||||
|
<width>62</width>
|
||||||
|
<height>22</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="minimum">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>999999999</number>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLineEdit" name="qleTmpDir">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>10</x>
|
||||||
|
<y>200</y>
|
||||||
|
<width>611</width>
|
||||||
|
<height>23</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" name="qlTmpDir">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>10</x>
|
||||||
|
<y>180</y>
|
||||||
|
<width>391</width>
|
||||||
|
<height>16</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Workspace</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QCheckBox" name="qcbDisplayMesh">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>630</x>
|
||||||
|
<y>70</y>
|
||||||
|
<width>91</width>
|
||||||
|
<height>21</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" name="qlDisplayMesh">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>660</x>
|
||||||
|
<y>70</y>
|
||||||
|
<width>101</width>
|
||||||
|
<height>16</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Display mesh</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidget" name="layoutWidget">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>10</x>
|
||||||
|
<y>370</y>
|
||||||
|
<width>761</width>
|
||||||
|
<height>27</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="qpbCompute">
|
||||||
|
<property name="text">
|
||||||
|
<string>Compute</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="qpbClose">
|
||||||
|
<property name="text">
|
||||||
|
<string>Close</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="qpbHelp">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>10</pointsize>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Help</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
36
src/Tools/TopIIVolMeshPlug/TopIIVolMeshPlugin_plugin.py
Normal file
36
src/Tools/TopIIVolMeshPlug/TopIIVolMeshPlugin_plugin.py
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Copyright (C) 2013-2020 EDF R&D
|
||||||
|
#
|
||||||
|
# This library is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU Lesser General Public
|
||||||
|
# License as published by the Free Software Foundation; either
|
||||||
|
# version 2.1 of the License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This library is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
# Lesser General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Lesser General Public
|
||||||
|
# License along with this library; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
#
|
||||||
|
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
|
#
|
||||||
|
|
||||||
|
# if you already have plugins defined in a salome_plugins.py file, add this file at the end.
|
||||||
|
# if not, copy this file as ${HOME}/Plugins/smesh_plugins.py or ${APPLI}/Plugins/smesh_plugins.py
|
||||||
|
|
||||||
|
def TopIIVolMeshLct(context):
|
||||||
|
# get context study, salomeGui
|
||||||
|
study = context.study
|
||||||
|
sg = context.sg
|
||||||
|
|
||||||
|
import os
|
||||||
|
import subprocess
|
||||||
|
import tempfile
|
||||||
|
from qtsalome import QFileDialog, QMessageBox
|
||||||
|
|
||||||
|
import TopIIVolMeshPluginDialog
|
||||||
|
window = TopIIVolMeshPluginDialog.getDialog()
|
||||||
|
window.show()
|
30
src/Tools/TopIIVolMeshPlug/doc/CMakeLists.txt
Normal file
30
src/Tools/TopIIVolMeshPlug/doc/CMakeLists.txt
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
# Copyright (C) 2012-2021 CEA
|
||||||
|
#
|
||||||
|
# This library is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU Lesser General Public
|
||||||
|
# License as published by the Free Software Foundation; either
|
||||||
|
# version 2.1 of the License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This library is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
# Lesser General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Lesser General Public
|
||||||
|
# License along with this library; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
#
|
||||||
|
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
|
#
|
||||||
|
|
||||||
|
SALOME_CONFIGURE_FILE(conf.py.in conf.py)
|
||||||
|
|
||||||
|
SET(_cmd_options -c ${CMAKE_CURRENT_BINARY_DIR} -b html -d doctrees ${CMAKE_CURRENT_SOURCE_DIR} docutils)
|
||||||
|
SALOME_GENERATE_ENVIRONMENT_SCRIPT(_cmd env_script "${SPHINX_EXECUTABLE}" "${_cmd_options}" CONTEXT TopIIVolMeshPlug_DOC)
|
||||||
|
ADD_CUSTOM_TARGET(html_docs_TopIIVolMeshPlug COMMAND ${_cmd})
|
||||||
|
|
||||||
|
INSTALL(CODE "EXECUTE_PROCESS(COMMAND \"${CMAKE_COMMAND}\" --build ${PROJECT_BINARY_DIR} --target html_docs_TopIIVolMeshPlug)")
|
||||||
|
INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/docutils/ DESTINATION ${SALOME_INSTALL_DOC}/gui/SMESH/TopIIVolMesh)
|
||||||
|
|
||||||
|
SET(make_clean_files docutils doctrees)
|
||||||
|
SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${make_clean_files}")
|
63
src/Tools/TopIIVolMeshPlug/doc/TopIIVolMesh.rst
Normal file
63
src/Tools/TopIIVolMeshPlug/doc/TopIIVolMesh.rst
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
Introduction
|
||||||
|
============
|
||||||
|
|
||||||
|
**topIIvol** meshing tool provides sequential/parallel tools for creating volumetric tetrahedral meshes from a given topology (point-cloud `*.xyz`).
|
||||||
|
|
||||||
|
Running topIIvol Plug-in
|
||||||
|
========================
|
||||||
|
|
||||||
|
**topIIVolMesh** plug-in can be invoked via SMESH Plugin item in Mesh menu bar
|
||||||
|
|
||||||
|
.. image:: images/callTopIIVolMesh.png
|
||||||
|
:align: center
|
||||||
|
|
||||||
|
|
||||||
|
**topIIVolMesh** Options
|
||||||
|
========================
|
||||||
|
|
||||||
|
|
||||||
|
Sequential mode
|
||||||
|
---------------
|
||||||
|
If the number of processors is set to 1, **topIIvol_Mesher** sequential tool is called for creating volumetric tetrahedral meshes from a given topology. The volumetric mesh can be displayed in SALOME by ticking the "Display mesh" check-box.
|
||||||
|
|
||||||
|
The list of input parameters are:
|
||||||
|
|
||||||
|
- DEM input file: input point cloud file;
|
||||||
|
- Number of X points present in the input point cloud;
|
||||||
|
- Number of Y points present in the input point cloud;
|
||||||
|
- Number of Z points intended in the z direction;
|
||||||
|
- Depth of the mesh needed;
|
||||||
|
- temporary directory for calculation.
|
||||||
|
|
||||||
|
Parallel mode
|
||||||
|
---------------
|
||||||
|
If the number of processors is greater than one, **topIIvol_ParMesher** parallel computing tool is called for creating volumetric tetrahedral meshes from a given topology. The volumetric mesh can be displayed in SALOME by ticking the "Display mesh" check-box.
|
||||||
|
|
||||||
|
The list of input parameters are:
|
||||||
|
|
||||||
|
- DEM input file: input point cloud file;
|
||||||
|
- Number of X points present in the input point cloud;
|
||||||
|
- Number of Y points present in the input point cloud;
|
||||||
|
- Number of Z points intended in the z direction;
|
||||||
|
- Depth of the mesh needed;
|
||||||
|
- Number of MPI ranks
|
||||||
|
- temporary directory for calculation.
|
||||||
|
|
||||||
|
|
||||||
|
Distributed mode
|
||||||
|
-----------------
|
||||||
|
If the check-box **Distributed** is ticked, **topIIvol_DistMesher** computing tool is called for creating embarassingly parallel distributed meshes from a given topology.
|
||||||
|
|
||||||
|
The list of input parameters are:
|
||||||
|
|
||||||
|
- DEM input file: input point cloud file;
|
||||||
|
- Number of X points present in the input point cloud;
|
||||||
|
- Number of Y points present in the input point cloud;
|
||||||
|
- Number of Z points intended in the z direction;
|
||||||
|
- Number of partitions in X direction;
|
||||||
|
- Number of partitions in Y direction;
|
||||||
|
- Number of partitions in Z direction;
|
||||||
|
- Depth of the mesh needed;
|
||||||
|
- Number of MPI ranks
|
||||||
|
- temporary directory for calculation.
|
||||||
|
|
187
src/Tools/TopIIVolMeshPlug/doc/conf.py.in
Normal file
187
src/Tools/TopIIVolMeshPlug/doc/conf.py.in
Normal file
@ -0,0 +1,187 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
# TopIIVolMesh PlugIn documentation build configuration file
|
||||||
|
#
|
||||||
|
|
||||||
|
import sys, os
|
||||||
|
import sphinx
|
||||||
|
|
||||||
|
# If your extensions are in another directory, add it here. If the directory
|
||||||
|
# is relative to the documentation root, use os.path.abspath to make it
|
||||||
|
# absolute, like shown here.
|
||||||
|
#sys.path.append(os.path.abspath('some/directory'))
|
||||||
|
|
||||||
|
# General configuration
|
||||||
|
# ---------------------
|
||||||
|
|
||||||
|
# Add any Sphinx extension module names here, as strings. They can be extensions
|
||||||
|
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
|
||||||
|
extensions = ['sphinx.ext.autodoc']
|
||||||
|
try:
|
||||||
|
import sphinx_rtd_theme
|
||||||
|
extensions += ['sphinx_rtd_theme']
|
||||||
|
use_rtd_theme = True
|
||||||
|
except:
|
||||||
|
use_rtd_theme = False
|
||||||
|
|
||||||
|
# Add any paths that contain templates here, relative to this directory.
|
||||||
|
templates_path = ['.templates']
|
||||||
|
|
||||||
|
# The suffix of source filenames.
|
||||||
|
source_suffix = '.rst'
|
||||||
|
|
||||||
|
# The master toctree document.
|
||||||
|
master_doc = 'index'
|
||||||
|
|
||||||
|
# General substitutions.
|
||||||
|
project = 'topIIvol Plug-in'
|
||||||
|
copyright = '2007-2021 CEA'
|
||||||
|
|
||||||
|
# The default replacements for |version| and |release|, also used in various
|
||||||
|
# other places throughout the built documents.
|
||||||
|
#
|
||||||
|
# The short X.Y version.
|
||||||
|
version = '@SALOMESMESH_VERSION@'
|
||||||
|
# The full version, including alpha/beta/rc tags.
|
||||||
|
release = '@SALOMESMESH_VERSION@'
|
||||||
|
|
||||||
|
# There are two options for replacing |today|: either, you set today to some
|
||||||
|
# non-false value, then it is used:
|
||||||
|
#today = ''
|
||||||
|
# Else, today_fmt is used as the format for a strftime call.
|
||||||
|
#today_fmt = '%B %d, %Y'
|
||||||
|
|
||||||
|
# List of documents that shouldn't be included in the build.
|
||||||
|
#unused_docs = []
|
||||||
|
|
||||||
|
# List of directories, relative to source directories, that shouldn't be searched
|
||||||
|
# for source files.
|
||||||
|
#exclude_dirs = []
|
||||||
|
|
||||||
|
# The reST default role (used for this markup: `text`) to use for all documents.
|
||||||
|
#default_role = None
|
||||||
|
|
||||||
|
# If true, '()' will be appended to :func: etc. cross-reference text.
|
||||||
|
#add_function_parentheses = True
|
||||||
|
|
||||||
|
# If true, the current module name will be prepended to all description
|
||||||
|
# unit titles (such as .. function::).
|
||||||
|
#add_module_names = True
|
||||||
|
|
||||||
|
# If true, sectionauthor and moduleauthor directives will be shown in the
|
||||||
|
# output. They are ignored by default.
|
||||||
|
#show_authors = False
|
||||||
|
|
||||||
|
# The name of the Pygments (syntax highlighting) style to use.
|
||||||
|
pygments_style = 'sphinx'
|
||||||
|
|
||||||
|
|
||||||
|
# Options for HTML output
|
||||||
|
# -----------------------
|
||||||
|
|
||||||
|
# The theme to use for HTML and HTML Help pages. Major themes that come with
|
||||||
|
# Sphinx are currently 'default' and 'sphinxdoc'.
|
||||||
|
if use_rtd_theme:
|
||||||
|
html_theme = 'sphinx_rtd_theme'
|
||||||
|
else:
|
||||||
|
html_theme = 'default' if sphinx.version_info[:2] < (1,3) else 'classic'
|
||||||
|
|
||||||
|
themes_options = {}
|
||||||
|
themes_options['classic'] = {
|
||||||
|
'body_max_width':'none',
|
||||||
|
'body_min_width':0,
|
||||||
|
}
|
||||||
|
html_theme_options = themes_options.get(html_theme, {})
|
||||||
|
|
||||||
|
# The name for this set of Sphinx documents. If None, it defaults to
|
||||||
|
# "<project> v<release> documentation".
|
||||||
|
#html_title = None
|
||||||
|
|
||||||
|
# A shorter title for the navigation bar. Default is the same as html_title.
|
||||||
|
#html_short_title = None
|
||||||
|
|
||||||
|
# The name of an image file (within the static path) to place at the top of
|
||||||
|
# the sidebar.
|
||||||
|
#html_logo = None
|
||||||
|
|
||||||
|
# The name of an image file (within the static path) to use as favicon of the
|
||||||
|
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
|
||||||
|
# pixels large.
|
||||||
|
#html_favicon = None
|
||||||
|
|
||||||
|
# Add any paths that contain custom static files (such as style sheets) here,
|
||||||
|
# relative to this directory. They are copied after the builtin static files,
|
||||||
|
# so a file named "default.css" will overwrite the builtin "default.css".
|
||||||
|
#html_static_path = ['.static']
|
||||||
|
|
||||||
|
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
|
||||||
|
# using the given strftime format.
|
||||||
|
#html_last_updated_fmt = '%b %d, %Y'
|
||||||
|
|
||||||
|
# If true, SmartyPants will be used to convert quotes and dashes to
|
||||||
|
# typographically correct entities.
|
||||||
|
#html_use_smartypants = True
|
||||||
|
|
||||||
|
# Custom sidebar templates, maps document names to template names.
|
||||||
|
#html_sidebars = {}
|
||||||
|
|
||||||
|
# Additional templates that should be rendered to pages, maps page names to
|
||||||
|
# template names.
|
||||||
|
#html_additional_pages = {}
|
||||||
|
|
||||||
|
# If false, no module index is generated.
|
||||||
|
#html_use_modindex = True
|
||||||
|
|
||||||
|
# If false, no index is generated.
|
||||||
|
#html_use_index = True
|
||||||
|
|
||||||
|
# If true, the index is split into individual pages for each letter.
|
||||||
|
#html_split_index = False
|
||||||
|
|
||||||
|
# If true, the reST sources are included in the HTML build as _sources/<name>.
|
||||||
|
#html_copy_source = True
|
||||||
|
|
||||||
|
# If true, an OpenSearch description file will be output, and all pages will
|
||||||
|
# contain a <link> tag referring to it. The value of this option must be the
|
||||||
|
# base URL from which the finished HTML is served.
|
||||||
|
#html_use_opensearch = ''
|
||||||
|
|
||||||
|
# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
|
||||||
|
#html_file_suffix = ''
|
||||||
|
|
||||||
|
# Output file base name for HTML help builder.
|
||||||
|
htmlhelp_basename = 'TopIIVolMeshPlug-in doc'
|
||||||
|
|
||||||
|
|
||||||
|
# Options for LaTeX output
|
||||||
|
# ------------------------
|
||||||
|
|
||||||
|
# The paper size ('letter' or 'a4').
|
||||||
|
#latex_paper_size = 'letter'
|
||||||
|
|
||||||
|
# The font size ('10pt', '11pt' or '12pt').
|
||||||
|
#latex_font_size = '10pt'
|
||||||
|
|
||||||
|
# Grouping the document tree into LaTeX files. List of tuples
|
||||||
|
# (source start file, target name, title, author, document class [howto/manual]).
|
||||||
|
latex_documents = [
|
||||||
|
('index', 'TopIIVolMeshPlugIn.tex', 'TopIIVolMesh PlugIn Documentation',
|
||||||
|
'CEA', 'manual'),
|
||||||
|
]
|
||||||
|
|
||||||
|
# The name of an image file (relative to this directory) to place at the top of
|
||||||
|
# the title page.
|
||||||
|
#latex_logo = None
|
||||||
|
|
||||||
|
# For "manual" documents, if this is true, then toplevel headings are parts,
|
||||||
|
# not chapters.
|
||||||
|
#latex_use_parts = False
|
||||||
|
|
||||||
|
# Additional stuff for the LaTeX preamble.
|
||||||
|
#latex_preamble = ''
|
||||||
|
|
||||||
|
# Documents to append as an appendix to all manuals.
|
||||||
|
#latex_appendices = []
|
||||||
|
|
||||||
|
# If false, no module index is generated.
|
||||||
|
#latex_use_modindex = True
|
BIN
src/Tools/TopIIVolMeshPlug/doc/images/callTopIIVolMesh.png
Normal file
BIN
src/Tools/TopIIVolMeshPlug/doc/images/callTopIIVolMesh.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 30 KiB |
22
src/Tools/TopIIVolMeshPlug/doc/index.rst
Normal file
22
src/Tools/TopIIVolMeshPlug/doc/index.rst
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
.. TopIIVolMesh documentation master file, created by sphinx-quickstart.
|
||||||
|
You can adapt this file completely to your liking, but it should at least
|
||||||
|
contain the root `toctree` directive.
|
||||||
|
|
||||||
|
topIIvol plugin documentation
|
||||||
|
=====================================
|
||||||
|
|
||||||
|
This documentation covers the usage of **top-ii-vol** as plug-in in SALOME that can be used within the SALOME
|
||||||
|
Mesh module.
|
||||||
|
|
||||||
|
TopIIVolMesh plug-in uses CEA **top-ii-Vol** meshing tool,which provides sequential/parallel tools for creating volumetric tetrahedral meshes from a given topology.
|
||||||
|
This plug-in offers only the most common functionalities of the tool.
|
||||||
|
|
||||||
|
Contents:
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 2
|
||||||
|
|
||||||
|
TopIIVolMesh.rst
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -91,3 +91,14 @@ except Exception as e:
|
|||||||
#print 'probleme zcracks'
|
#print 'probleme zcracks'
|
||||||
salome_pluginsmanager.logger.info('ERROR: Zcrack plug-in is unavailable: {}'.format(e))
|
salome_pluginsmanager.logger.info('ERROR: Zcrack plug-in is unavailable: {}'.format(e))
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
# Topological to volumic mesh plugin
|
||||||
|
try:
|
||||||
|
from TopIIVolMeshPlugin import TopIIVolMeshLct
|
||||||
|
salome_pluginsmanager.AddFunction('Run Topological Volumic mesher',
|
||||||
|
'run topological volumic mesher',
|
||||||
|
TopIIVolMeshLct)
|
||||||
|
except Exception as e:
|
||||||
|
#print 'probleme zcracks'
|
||||||
|
salome_pluginsmanager.logger.info('ERROR: TopIIVolMesh plug-in is unavailable: {}'.format(e))
|
||||||
|
pass
|
||||||
|
Loading…
Reference in New Issue
Block a user