From: rnc Date: Fri, 30 Aug 2013 15:35:06 +0000 (+0000) Subject: IMP: SMESH/Yams plug-in: Update to use Meshgems-SurfOpt 1.1 (new name of Yams) X-Git-Tag: V7_3_0a1~175 X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=commitdiff_plain;h=3ecdf53dff60a9fd77128cfdb792dc18705f74a8 IMP: SMESH/Yams plug-in: Update to use Meshgems-SurfOpt 1.1 (new name of Yams) --- diff --git a/resources/SalomeApp.xml.in b/resources/SalomeApp.xml.in index 7f3e3c14e..18ab16368 100644 --- a/resources/SalomeApp.xml.in +++ b/resources/SalomeApp.xml.in @@ -115,7 +115,7 @@
- +
diff --git a/src/Tools/YamsPlug/doc/Advanced_params.rst b/src/Tools/YamsPlug/doc/Advanced_params.rst index 3c83be1d6..f76a749dd 100644 --- a/src/Tools/YamsPlug/doc/Advanced_params.rst +++ b/src/Tools/YamsPlug/doc/Advanced_params.rst @@ -4,11 +4,11 @@ Advanced Remeshing Options ** be aware that no control of coherency is done when you set these parameters : for instance, geometrical approximation is only allowed when yams compute a mesh for finite elements but the GUI will let you choose geometrical approximation and compute a visualisation mesh. read DISTENE documentation ** - **Ridge detection** -if not set (ridge detection disabled ), Yams will not try to detect any new ridge edge by its own mechanism : +if not set (ridge detection disabled ), MeshGems-SurfOpt will not try to detect any new ridge edge by its own mechanism : it will consider as ridge only the ridges given in the mesh. All non-ridge edges that would have been detected as ridge by the Ridge angle paramaeter (see below split edge) will be considered as part of the same continuous patch. This option should not be checked when all the known ridges of the mesh are given and when all other possible ridges are not geometric ridges to take into account. - **Point smoothing** -When not set (point smoothing is disabled), Yams will not try to move the initial given vertices (along an edge, a ridge or onto the surface), hence Yams will only swap edges, remove vertices or add vertices (refines) to change the mesh. +When not set (point smoothing is disabled), MeshGems-SurfOpt will not try to move the initial given vertices (along an edge, a ridge or onto the surface), hence MeshGems-SurfOpt will only swap edges, remove vertices or add vertices (refines) to change the mesh. - **Geometrical approximation** this field as well as the Chordal deviation tolerance parameter,enables the user to bound the maximal chordal deviation allowed. it avoids having sharp angles. , that is, the maximal distance allowed between the detected curve and the plane of the corresponding mesh face. It avoids having faces too far away from the curve they represent. @@ -31,12 +31,12 @@ These two parameters allow the user to prescribe a Maximal/Minimal size for the - **Mesh gradation** -This paramater P controls the element size variation : Yams will avoid having two adjacent egdes which sizes vary more than th given gradation. a size correction is applied to the size map : if two adjacent edges are respectively e1 and e2 long and e2 > Pxe1, then, the new size for the second edge will be set to P x e1. +This paramater P controls the element size variation : MeshGems-SurfOpt will avoid having two adjacent egdes which sizes vary more than th given gradation. a size correction is applied to the size map : if two adjacent edges are respectively e1 and e2 long and e2 > Pxe1, then, the new size for the second edge will be set to P x e1. **This procedure is desactived if P=-1*** - **Split edge** -If this option is activated, Yams creates new vertices placed on the curved surface and adds them to elements. +If this option is activated, MeshGems-SurfOpt creates new vertices placed on the curved surface and adds them to elements. It may be used to obtain higher order elements. diff --git a/src/Tools/YamsPlug/doc/Generics_params.rst b/src/Tools/YamsPlug/doc/Generics_params.rst index 046e688c9..761f26fe3 100644 --- a/src/Tools/YamsPlug/doc/Generics_params.rst +++ b/src/Tools/YamsPlug/doc/Generics_params.rst @@ -1,16 +1,16 @@ Generic Options ================= -These options are not meshing options but allow the user to configure control parameters for yams. +These options are not meshing options but allow the user to configure control parameters for MeshGems-SurfOpt. - **Verbosity Level** -This parameter (between 0 and 10) indicates the amount of information that Yams prints during the run. +This parameter (between 0 and 10) indicates the amount of information that MeshGems-SurfOpt prints during the run. - **Memory Size** -You usually don't have to set this parameter but you can choose to limit the amount of memory used by Yams. - It requires 370 bytes per node -. Or, if you try to enrich a already big mesh (up to 2 millions nodes), you exceptionally, need to allocate more memory. +You usually don't have to set this parameter but you can choose to limit the amount of memory used by MeshGems-SurfOpt. - It requires 370 bytes per node -. Or, if you try to enrich a already big mesh (up to 2 millions nodes), you exceptionally, need to allocate more memory. - **File** diff --git a/src/Tools/YamsPlug/doc/conf.py.in b/src/Tools/YamsPlug/doc/conf.py.in index 6f0e3636c..0541580dd 100644 --- a/src/Tools/YamsPlug/doc/conf.py.in +++ b/src/Tools/YamsPlug/doc/conf.py.in @@ -35,8 +35,8 @@ source_suffix = '.rst' master_doc = 'index' # General substitutions. -project = 'YAMS Plug-in' -copyright = '2011, Pascale Noyret' +project = 'MeshGems-SurfOpt Plug-in' +copyright = '2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE' # The default replacements for |version| and |release|, also used in various # other places throughout the built documents. diff --git a/src/Tools/YamsPlug/doc/editHypo.rst b/src/Tools/YamsPlug/doc/editHypo.rst index 75b8eb76a..5a53da355 100644 --- a/src/Tools/YamsPlug/doc/editHypo.rst +++ b/src/Tools/YamsPlug/doc/editHypo.rst @@ -1,10 +1,10 @@ .. _hypothesis-label: =========================== -How to save Yams Parameters +How to save MeshGems-SurfOpt Parameters =========================== -Yams hypothesis is not meshing hypothesis for Salome, but hypothesis for yams. +MeshGems-SurfOpt hypothesis is not meshing hypothesis for Salome, but hypothesis for yams. The current set of parameters is automatically written in the salome study object browser when you run computation. Theses parameters could also be stored in a special file. diff --git a/src/Tools/YamsPlug/doc/index.rst b/src/Tools/YamsPlug/doc/index.rst index 45442f9ae..e58f86526 100644 --- a/src/Tools/YamsPlug/doc/index.rst +++ b/src/Tools/YamsPlug/doc/index.rst @@ -2,17 +2,17 @@ You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. -YAMS plugin documentation -========================== +MeshGems-SurfOpt plugin documentation +===================================== -This documentation covers the usage of Yams as plug-in in Salome that can be used within the Salome +This documentation covers the usage of MeshGems-SurfOpt as plug-in in Salome that can be used within the Salome Mesh module for remeshing 2D Surface. -Yams plug-in uses Distene commercial software Yams, which is an **automatic surface remeshing tool**. -This plug_in offers only the most common functionnalities of the tool. +MeshGems-SurfOpt plug-in uses Distene commercial software MeshGems-SurfOpt, which is an **automatic surface remeshing tool**. +This plug-in offers only the most common functionnalities of the tool. .. note:: - for a complete documentation, see :download:`Yams whitepaper `. + for a complete documentation, see :download:`MeshGems-SurfOpt: The automatic surface remeshing tool of the MeshGems Suite `. Contents: diff --git a/src/Tools/YamsPlug/doc/lct.rst b/src/Tools/YamsPlug/doc/lct.rst index c26492602..0f1a012d2 100644 --- a/src/Tools/YamsPlug/doc/lct.rst +++ b/src/Tools/YamsPlug/doc/lct.rst @@ -1,11 +1,11 @@ -Running Yams Plug-in +Running MeshGems-SurfOpt Plug-in ===================== -Yams plug-in can be invoked via SMESH Plugin item in Mesh menu bar +MeshGems-SurfOpt plug-in can be invoked via SMESH Plugin item in Mesh menu bar .. image:: images/AppelYams.png :align: center -This plug-in works only with the commercial software Yams. To obtain a license, +This plug-in works only with the commercial software MeshGems-SurfOpt. To obtain a license, visit www.distene.comm diff --git a/src/Tools/YamsPlug/monYamsPlugDialog.py b/src/Tools/YamsPlug/monYamsPlugDialog.py index d8ec10244..5ea623eb5 100644 --- a/src/Tools/YamsPlug/monYamsPlugDialog.py +++ b/src/Tools/YamsPlug/monYamsPlugDialog.py @@ -107,7 +107,7 @@ class MonYamsPlugDialog(Ui_YamsPlugDialog,QWidget): except Exception: QMessageBox.warning(self, "Help", "Help unavailable $SMESH_ROOT_DIR not found") return - maDoc=mydir+"/share/doc/salome/gui/SMESH/yams/_downloads/YamsWhitePaper_3.2.pdf" + maDoc=mydir+"/share/doc/salome/gui/SMESH/yams/_downloads/mg-surfopt_user_manual.pdf" command="xdg-open "+maDoc+";" subprocess.call(command, shell=True) @@ -420,7 +420,7 @@ class MonYamsPlugDialog(Ui_YamsPlugDialog,QWidget): self.fichierIn="" def prepareFichier(self): - self.fichierIn="/tmp/ForYams_"+str(self.num)+".mesh" + self.fichierIn="/tmp/ForYams_"+str(self.num)+".meshb" self.__selectedMesh.ExportGMF(self.__selectedMesh, self.fichierIn, True) def PrepareLigneCommande(self): @@ -432,9 +432,8 @@ class MonYamsPlugDialog(Ui_YamsPlugDialog,QWidget): QMessageBox.critical(self, "File", "unable to read GMF Mesh in "+str(self.fichierIn)) return False - self.commande="yams" - verbosity=str(self.SP_Verbosity.value()) - self.commande+=" -v "+verbosity + self.commande="mg-surfopt.exe" + for obj in self.GBOptim.findChildren(QRadioButton,): try: if obj.isChecked(): @@ -443,31 +442,45 @@ class MonYamsPlugDialog(Ui_YamsPlugDialog,QWidget): break except: pass - self.commande+=" -O "+self.style.toLatin1() + + style = self.style.toLatin1() + # Translation of old Yams options to new MG-SurfOpt options + if style == "0" : + self.commande+= " --optimisation only" + elif style == "2" : + self.commande+= " --Hausdorff_like yes" + elif style == "-1": + self.commande+= " --enrich no" + elif style == "-2": + self.commande+= " --Hausdorff_like yes --enrich no" + elif style == "U" : + self.commande+= " --uniform_flat_subdivision yes" + elif style == "S" : + self.commande+= " --sand_paper yes" deb=os.path.splitext(self.fichierIn) - self.fichierOut=deb[0] + ".d.meshb" - - if self.RB_Absolute.isChecked()==True : - self.commande+=" -Dabsolute" - else : - self.commande+=" -Drelative" + self.fichierOut=deb[0] + "_surfopt.meshb" - v=self.SP_toStr(self.SP_Tolerance) - self.commande+=",tolerance="+v - if self.CB_Ridge.isChecked()==False : self.commande+=",-nr" - if self.CB_Point.isChecked()==False : self.commande+=",-ns" - if self.SP_Geomapp.value()!=0.04 : self.commande+=",geomapp=%f"%self.SP_Geomapp.value() - if self.SP_Ridge.value()!=45.0 : self.commande+=",ridge=%f"%self.SP_Ridge.value() - if self.SP_MaxSize.value()!=100 : self.commande+=",maxsize=%f"%self.SP_MaxSize.value() - if self.SP_MinSize.value()!=5 : self.commande+=",minsize=%f"%self.SP_MinSize.value() - if self.SP_Gradation.value()!=1.3 : self.commande+=",gradation=%f"%self.SP_MaxSize.value() - if self.CB_SplitEdge.isChecked()==True : self.commande+=",splitedge=1" - - if self.SP_Verbosity.value()!=3 : self.commande+=" -v %d"%self.SP_Verbosity.value() - if self.SP_Memory.value()!=0 : self.commande+=" -m %d"%self.SP_Memory.value() - - self.commande+=" "+self.fichierIn + tolerance=self.SP_toStr(self.SP_Tolerance) + if not self.RB_Absolute.isChecked(): + tolerance+="r" + self.commande+=" --chordal_error %s"%tolerance + + if self.CB_Ridge.isChecked() == False : self.commande+=" --compute_ridges no" + if self.CB_Point.isChecked() == False : self.commande+=" --optimisation no" + if self.CB_SplitEdge.isChecked()== True : self.commande+=" --element_order quadratic" + if self.SP_Geomapp.value() != 0.04 : self.commande+=" --geometric_approximation_angle %f"%self.SP_Geomapp.value() + if self.SP_Ridge.value() != 45.0 : self.commande+=" --ridge_angle %f"%self.SP_Ridge.value() + if self.SP_MaxSize.value() != 100 : self.commande+=" --max_size %f" %self.SP_MaxSize.value() + if self.SP_MinSize.value() != 5 : self.commande+=" --min_size %f" %self.SP_MinSize.value() + if self.SP_Gradation.value() != 1.3 : self.commande+=" --gradation %f" %self.SP_MaxSize.value() + if self.SP_Memory.value() != 0 : self.commande+=" --max_memory %d" %self.SP_Memory.value() + if self.SP_Verbosity.value() != 3 : self.commande+=" --max_memory %d" %self.SP_Verbosity.value() + + self.commande+=" --in " + self.fichierIn + self.commande+=" --out " + self.fichierOut + + print self.commande return True def clean(self): diff --git a/src/Tools/smesh_plugins.py b/src/Tools/smesh_plugins.py index e61dd16a7..f7ac148f4 100644 --- a/src/Tools/smesh_plugins.py +++ b/src/Tools/smesh_plugins.py @@ -34,7 +34,7 @@ salome_pluginsmanager.AddFunction('MeshCut', 'Cut a tetrahedron mesh by a plane', MeshCut) -salome_pluginsmanager.AddFunction('ReMesh with Yams', +salome_pluginsmanager.AddFunction('ReMesh with MGSurfOpt ( formerly Yams )', 'Run Yams', YamsLct)