]> SALOME platform Git repositories - modules/smesh.git/commitdiff
Salome HOME
first step modification compilation ok
authorcvw <cvw>
Wed, 24 Apr 2013 14:12:27 +0000 (14:12 +0000)
committercvw <cvw>
Wed, 24 Apr 2013 14:12:27 +0000 (14:12 +0000)
44 files changed:
configure.ac
doc/salome/gui/SMESH/Makefile.am
resources/Makefile.am
resources/SalomeApp.xml.in
src/SMESHGUI/SMESH_images.ts
src/StdMeshersGUI/StdMeshers_images.ts
src/Tools/MGCleanerPlug/MGCleanerMonPlugDialog.py [new file with mode: 0644]
src/Tools/MGCleanerPlug/MGCleanerMonViewText.py [new file with mode: 0644]
src/Tools/MGCleanerPlug/MGCleanerPlugDialog.ui [new file with mode: 0644]
src/Tools/MGCleanerPlug/MGCleanerViewText.ui [new file with mode: 0644]
src/Tools/MGCleanerPlug/MGCleanerplug_plugin.py [new file with mode: 0644]
src/Tools/MGCleanerPlug/Makefile.am [new file with mode: 0644]
src/Tools/MGCleanerPlug/Makefile.in [new file with mode: 0644]
src/Tools/MGCleanerPlug/Tolerance.png [new file with mode: 0644]
src/Tools/MGCleanerPlug/doc/Advanced_params.rst [new file with mode: 0644]
src/Tools/MGCleanerPlug/doc/Generics_params.rst [new file with mode: 0644]
src/Tools/MGCleanerPlug/doc/Makefile.am [new file with mode: 0644]
src/Tools/MGCleanerPlug/doc/Makefile.in [new file with mode: 0644]
src/Tools/MGCleanerPlug/doc/Mandatory_params.rst [new file with mode: 0644]
src/Tools/MGCleanerPlug/doc/conf.py.in [new file with mode: 0644]
src/Tools/MGCleanerPlug/doc/editHypo.rst [new file with mode: 0644]
src/Tools/MGCleanerPlug/doc/files/mg-cleaner_user_manual.pdf [new file with mode: 0644]
src/Tools/MGCleanerPlug/doc/images/Advanced.png [new file with mode: 0644]
src/Tools/MGCleanerPlug/doc/images/AppelMGCleaner.png [new file with mode: 0644]
src/Tools/MGCleanerPlug/doc/images/Generic.png [new file with mode: 0644]
src/Tools/MGCleanerPlug/doc/images/Simple.png [new file with mode: 0644]
src/Tools/MGCleanerPlug/doc/images/Tolerance.png [new file with mode: 0644]
src/Tools/MGCleanerPlug/doc/index.rst [new file with mode: 0644]
src/Tools/MGCleanerPlug/doc/lct.rst [new file with mode: 0644]
src/Tools/MGCleanerPlug/open.png [new file with mode: 0644]
src/Tools/MGCleanerPlug/select1.png [new file with mode: 0644]
src/Tools/Makefile.am
src/Tools/YamsPlug/YamsPlugDialog.ui
src/Tools/YamsPlug/doc/Makefile.am
src/Tools/YamsPlug/doc/YamsWhitePaper_3.2.pdf [deleted file]
src/Tools/YamsPlug/doc/editHypo.rst
src/Tools/YamsPlug/doc/files/YamsWhitePaper_3.2.pdf [new file with mode: 0644]
src/Tools/YamsPlug/doc/index.rst
src/Tools/YamsPlug/doc/lct.rst
src/Tools/YamsPlug/monViewText.py
src/Tools/YamsPlug/monYamsPlugDialog.py
src/Tools/YamsPlug/open.png [new file with mode: 0644]
src/Tools/YamsPlug/yamsplug_plugin.py
src/Tools/smesh_plugins.py

index cea1132264adefa48ef682f2d64c58c77c239a92..aa9faa3dc8eb52d6fc1dfe940b2fc7ee02a8a225 100644 (file)
@@ -578,6 +578,9 @@ AC_OUTPUT([ \
   src/Tools/YamsPlug/Makefile \
   src/Tools/YamsPlug/doc/Makefile \
   src/Tools/YamsPlug/doc/conf.py \
+  src/Tools/MGCleanerPlug/Makefile \
+  src/Tools/MGCleanerPlug/doc/Makefile \
+  src/Tools/MGCleanerPlug/doc/conf.py \
   src/Tools/padder/Makefile \
   src/Tools/padder/meshjob/Makefile \
   src/Tools/padder/meshjob/idl/Makefile \
index 604fed2c9754e0c2222fc8c0402bc21f4f94d168..66acad96270c823e1dc9cd7c5c1b7ef027b00ba9 100755 (executable)
@@ -76,6 +76,7 @@ uninstall-local:
          case $${filen} in \
            dummy ) ;; \
            $(DESTDIR)$(guidocdir)/yams ) ;; \
+           $(DESTDIR)$(guidocdir)/MGCleaner ) ;; \
            $(DESTDIR)$(guidocdir)/head.png ) ;; \
            * ) echo "removing $${filen}" && rm -rf $${filen} ;; \
          esac ; \
index 851cb385298152bee43ca99ac66ecb7d5d7b6569..e1189849bd1daa21b38bedda412c69b0b95834f6 100644 (file)
@@ -25,7 +25,7 @@
 include $(top_srcdir)/adm_local/unix/make_common_starter.am
 
 dist_salomeres_DATA = \
-       delete.png  \
+  delete.png  \
        mesh_add_sub.png \
        mesh_algo_hexa.png \
        mesh_algo_mefisto.png \
@@ -156,6 +156,7 @@ dist_salomeres_DATA = \
        mesh_merge_nodes.png \
        mesh_merge_elements.png \
        select1.png \
+       open.png \
        StdMeshers.xml \
        mesh_pattern.png \
        mesh_pentahedron.png \
@@ -193,9 +194,9 @@ dist_salomeres_DATA = \
        mesh_extractGroup.png \
        mesh_precompute.png \
        mesh_2d_from_3d.png \
-        mesh_free_faces.png \
-        scale.png \
-        scale_along_axes.png \
+  mesh_free_faces.png \
+  scale.png \
+  scale_along_axes.png \
        split_into_tetra.png \
        mesh_duplicate_nodes.png \
        mesh_duplicate_nodes_with_elem.png \
index 72f293f20399f6cbfa5b00739e99e811fa541718..4ae2d8326bdd8ea89eef17e2489f0c2a7ed48423 100644 (file)
     <parameter name="sub_menu"          value="%1 module"/>
     <parameter name="User's Guide"      value="%SMESH_ROOT_DIR%/share/doc/salome/gui/SMESH/index.html"/>
     <parameter name="Plug-ins/Yams plugin User's Guide" value="%SMESH_ROOT_DIR%/share/doc/salome/gui/SMESH/yams/index.html"/>
+    <parameter name="Plug-ins/MGCleaner plugin User's Guide" value="%SMESH_ROOT_DIR%/share/doc/salome/gui/SMESH/MGCleaner/index.html"/>
     <parameter name="Developer's Guide" value="%SMESH_ROOT_DIR%/share/doc/salome/tui/SMESH/index.html"/>
   </section>
   <section name="resources">
index 42874a52e68bed9b12a295002a6ca030e1c7c3a6..83f0d5da41e8c01a156348751ae7654ddf4adfa7 100644 (file)
@@ -51,7 +51,7 @@
             <source>ICON_CONNECTION_2D</source>
             <translation>mesh_multi_edges_2d.png</translation>
         </message>
-       <message>
+        <message>
             <source>ICON_CREATE_GROUP</source>
             <translation>mesh_group.png</translation>
         </message>
             <source>ICON_FREE_EDGE</source>
             <translation>mesh_free_edges.png</translation>
         </message>
-       <message>
+        <message>
             <source>ICON_FREE_EDGE_2D</source>
             <translation>mesh_free_edges_2d.png</translation>
         </message>
-       <message>
+        <message>
             <source>ICON_FREE_NODE</source>
             <translation>mesh_free_nodes.png</translation>
         </message>
             <source>ICON_SELECT</source>
             <translation>select1.png</translation>
         </message>
+        <message>
+            <source>ICON_FILE_OPEN</source>
+            <translation>open.png</translation>
+        </message>
         <message>
             <source>ICON_SHADE</source>
             <translation>mesh_shading.png</translation>
             <source>ICON_REORIENT_2D</source>
             <translation>reorient_faces_face.png</translation>
         </message>
-       <message>
+        <message>
             <source>ICON_SMESH_DUPLICATE_NODES</source>
             <translation>mesh_duplicate_nodes.png</translation>
         </message>
-       <message>
+        <message>
             <source>ICON_SMESH_DUPLICATE_NODES_WITH_ELEM</source>
             <translation>mesh_duplicate_nodes_with_elem.png</translation>
         </message>
index aaf16607c11a5eae684e9f32c22a4933111ee626..150dbae6a2c00a484eea7817af446b229bf70237 100644 (file)
@@ -59,7 +59,7 @@
             <source>ICON_DLG_NUMBER_OF_LAYERS</source>
             <translation>mesh_hypo_layer_distribution.png</translation>
         </message>
-       <message>
+        <message>
             <source>ICON_DLG_NUMBER_OF_LAYERS_2D</source>
             <translation>mesh_hypo_layer_distribution.png</translation>
         </message>
             <source>ICON_SELECT</source>
             <translation>select1.png</translation>
         </message>
+        <message>
+            <source>ICON_FILE_OPEN</source>
+            <translation>open.png</translation>
+        </message>
         <message>
             <source>ICON_SMESH_TREE_ALGO_CompositeSegment_1D</source>
             <translation>mesh_tree_algo_regular.png</translation>
         </message>
-       <message>
+        <message>
             <source>ICON_SMESH_TREE_ALGO_UseExisting_2D</source>
             <translation>mesh_tree_algo_existing_2D.png</translation>
         </message>
-       <message>
+        <message>
             <source>ICON_SMESH_TREE_ALGO_UseExisting_1D</source>
             <translation>mesh_tree_algo_regular.png</translation>
         </message>
             <source>ICON_SMESH_TREE_ALGO_Quadrangle_2D</source>
             <translation>mesh_tree_algo_quad.png</translation>
         </message>
-       <message>
+        <message>
             <source>ICON_SMESH_TREE_ALGO_RadialQuadrangle_1D2D</source>
             <translation>mesh_tree_algo_radial_quadrangle_1D2D.png</translation>
         </message>
-       <message>
+        <message>
             <source>ICON_SMESH_TREE_ALGO_Prism_3D</source>
             <translation>mesh_tree_algo_prism.png</translation>
         </message>
diff --git a/src/Tools/MGCleanerPlug/MGCleanerMonPlugDialog.py b/src/Tools/MGCleanerPlug/MGCleanerMonPlugDialog.py
new file mode 100644 (file)
index 0000000..75473d3
--- /dev/null
@@ -0,0 +1,353 @@
+# -*- coding: utf-8 -*-
+# Copyright (C) 2007-2013  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.
+#
+# 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
+#
+
+# Modules Python
+# Modules Eficas
+
+import os, subprocess
+from MGCleanerPlugDialog import Ui_MGCleanerPlugDialog
+from MGCleanerMonViewText import MGCleanerMonViewText
+from PyQt4.QtGui import *
+from PyQt4.QtCore import *
+
+
+class MGCleanerMonPlugDialog(Ui_MGCleanerPlugDialog,QWidget):
+  """
+  """
+  def __init__(self):
+        QWidget.__init__(self)
+        self.setupUi(self)
+        self.connecterSignaux()
+        self.fichierIn=""
+        self.fichierOut=""
+        self.MeshIn="" 
+        self.num=1
+
+        # complex whith QResources: not used
+        # The icon are supposed to be located in the $SMESH_ROOT_DIR/share/salome/resources/smesh folder,
+        # other solution could be in the same folder than this python module file:
+        # iconfolder=os.path.dirname(os.path.abspath(__file__))
+
+        iconfolder=os.environ['SMESH_ROOT_DIR']+'/share/salome/resources/smesh'
+        #print "MGCleanerMonPlugDialog iconfolder",iconfolder
+        icon = QIcon()
+        icon.addFile(os.path.join(iconfolder,"select1.png"))
+        self.PB_MeshSmesh.setIcon(icon)
+        icon = QIcon()
+        icon.addFile(os.path.join(iconfolder,"open.png"))
+        self.PB_ParamsFileExplorer.setIcon(icon)
+
+        #Ces parametres ne sont pas remis à rien par le clean
+        self.paramsFile= os.path.abspath(os.path.join(os.environ['HOME'],'.MGCleaner.dat'))
+        self.LE_ParamsFile.setText(self.paramsFile)
+        self.LE_MeshFile.setText("")
+        self.LE_MeshSmesh.setText("")
+
+  def connecterSignaux(self) :
+        self.connect(self.PB_Cancel,SIGNAL("clicked()"),self.PBCancelPressed)
+        self.connect(self.PB_Default,SIGNAL("clicked()"),self.clean)
+        self.connect(self.PB_Help,SIGNAL("clicked()"),self.PBHelpPressed)
+        self.connect(self.PB_Load,SIGNAL("clicked()"),self.PBLoadPressed)
+        self.connect(self.PB_OK,SIGNAL("clicked()"),self.PBOKPressed)
+        self.connect(self.PB_Save,SIGNAL("clicked()"),self.PBSavePressed)
+        self.connect(self.PB_MeshFile,SIGNAL("clicked()"),self.PBMeshFilePressed)
+        self.connect(self.PB_MeshSmesh,SIGNAL("clicked()"),self.PBMeshSmeshPressed)
+        self.connect(self.PB_ParamsFileExplorer,SIGNAL("clicked()"),self.setParamsFileName)
+        self.connect(self.LE_MeshFile,SIGNAL("returnPressed()"),self.meshFileNameChanged)
+        self.connect(self.LE_ParamsFile,SIGNAL("returnPressed()"),self.paramsFileNameChanged)
+
+
+  def PBHelpPressed(self):
+        try :
+          mydir=os.environ['SMESH_ROOT_DIR']
+        except Exception:
+          QMessageBox.warning( self, "Help unavailable $SMESH_ROOT_DIR not found")
+        maDoc=mydir+"/share/doc/salome/gui/SMESH/MGCleaner/_downloads/mg-cleaner_user_manual.pdf"
+        command="xdg-open "+maDoc+";"
+        subprocess.call(command, shell=True)
+
+
+  def PBOKPressed(self):
+        if not(self.PrepareLigneCommande()) : return
+        self.PBSavePressed(NomHypo=True)
+        maFenetre=MGCleanerMonViewText(self,self.commande)
+        if os.path.isfile(self.fichierOut) :self.enregistreResultat()
+
+  def enregistreResultat(self):
+        import smesh
+        import SMESH
+        import salome
+        from salome.kernel import studyedit
+
+        maStudy=studyedit.getActiveStudy()
+        smesh.SetCurrentStudy(maStudy)
+        (outputMesh, status) = smesh.CreateMeshesFromGMF(self.fichierOut)
+        meshname = 'MGCleaner'+str(self.num)
+        smesh.SetName(outputMesh.GetMesh(), meshname)
+        outputMesh.Compute()
+
+
+        self.editor = studyedit.getStudyEditor()    # 
+        moduleEntry=self.editor.findOrCreateComponent("SMESH","SMESH")
+        HypReMeshEntry = self.editor.findOrCreateItem( moduleEntry, name = 'HypoForRemesh',
+                                           comment = 'HypoForRemeshing')
+        monStudyBuilder=maStudy.NewBuilder();
+        monStudyBuilder.NewCommand();
+        newStudyIter=monStudyBuilder.NewObject(HypReMeshEntry)
+        aNameAttrib=monStudyBuilder.FindOrCreateAttribute(newStudyIter,"AttributeName")
+        hypoName = 'anHypo_MGCleaner_'+str(self.num)
+        aNameAttrib.SetValue(hypoName)
+        aCommentAttrib=monStudyBuilder.FindOrCreateAttribute(newStudyIter,"AttributeComment")
+        aCommentAttrib.SetValue(str(self.commande))
+        
+        SOMesh=maStudy.FindObjectByName(meshname ,"SMESH")[0]
+        newLink=monStudyBuilder.NewObject(SOMesh)
+        monStudyBuilder.Addreference(newLink, newStudyIter);
+        if salome.sg.hasDesktop(): salome.sg.updateObjBrowser(0)
+        self.num+=1
+        return True
+
+  def PBSavePressed(self,NomHypo=False):
+        if NomHypo : text = '# Params for Hypothese : anHypo_MGCleaner_'+str(self.num - 1)+"\n"
+        else :       text = '# Save intermediate params \n' 
+        text += "# Params for mesh : " +  self.LE_MeshSmesh.text() +'\n'
+        for RB in self.GBOptim.findChildren(QRadioButton,):
+            if RB.isChecked()==True:
+               text+="Optimisation ='"+RB.text()+"'\n"
+               break
+        for RB in self.GBUnit.findChildren(QRadioButton,):
+            if RB.isChecked()==True:
+               text+="Units ='"+RB.text()+"'\n"
+        text+='Chordal_Tolerance_Deviation='+str(self.SP_Tolerance.value())+'\n'
+
+        text+='Ridge_Detection=' + str(self.CB_Ridge.isChecked())+'\n'
+        text+='Split_Edge='      + str(self.CB_SplitEdge.isChecked())+'\n'
+        text+='Point_Smoothing=' + str(self.CB_Point.isChecked())+'\n'
+        text+='Geometrical_Approximation='+ str(self.SP_Geomapp.value())  +'\n'
+        text+='Ridge_Angle='              + str(self.SP_Ridge.value())    +'\n'
+        text+='Maximum_Size='             + str(self.SP_MaxSize.value())  +'\n'
+        text+='Minimum_Size='             + str(self.SP_MaxSize.value())  +'\n'
+        text+='Mesh_Gradation='           + str(self.SP_Gradation.value())+'\n'
+
+        text+='Verbosity='                + str(self.SP_Verbosity.value())+'\n'
+        text+='Memory='                   + str(self.SP_Memory.value())+'\n'
+        text+='\n\n'
+
+        try :
+           f=open(self.paramsFile,'a')
+        except :
+           QMessageBox.warning( self, "File", "Unable to open "+self.paramsFile)
+           return
+        try :
+           f.write(text)
+        except :
+           QMessageBox.warning( self, "File", "Unable to write "+self.paramsFile)
+           return
+        f.close()
+
+  def PBLoadPressed(self):
+        try :
+           f=open(self.paramsFile,'r')
+        except :
+           QMessageBox.warning( self, "File", "Unable to open "+self.paramsFile)
+           return
+        try :
+           text=f.read()
+        except :
+           QMessageBox.warning( self, "File", "Unable to read "+self.paramsFile)
+           return
+        f.close()
+        d={}
+        exec text in d
+        for RB in self.GBOptim.findChildren(QRadioButton,):
+            if d['Optimisation']== RB.text():
+               RB.setChecked(True)
+               break
+        for RB in self.GBUnit.findChildren(QRadioButton,):
+            if d['Units']== RB.text():
+               RB.setChecked(True)
+               break
+        self.SP_Tolerance.setValue(d['Chordal_Tolerance_Deviation'])
+
+        self.CB_Ridge.setChecked(d['Ridge_Detection'])
+        self.CB_Point.setChecked(d['Point_Smoothing'])
+        self.CB_SplitEdge.setChecked(d['Split_Edge'])
+        self.SP_Geomapp.setValue(d['Geometrical_Approximation'])
+        self.SP_Ridge.setValue(d['Ridge_Angle'])
+        self.SP_MaxSize.setValue(d['Maximum_Size'])
+        self.SP_MinSize.setValue(d['Minimum_Size'])
+        self.SP_Gradation.setValue(d['Mesh_Gradation'])
+
+        self.SP_Verbosity.setValue(d['Verbosity'])
+        self.SP_Memory.setValue(d['Memory'])
+
+
+  def PBCancelPressed(self):
+        self.close()
+
+  def PBMeshFilePressed(self):
+       fd = QFileDialog(self, "select an existing Mesh file", self.LE_MeshFile.text(), "Mesh-Files (*.mesh);;All Files (*)")
+       if fd.exec_():
+          infile = fd.selectedFiles()[0]
+          self.LE_MeshFile.setText(infile)
+          self.fichierIn=infile.toLatin1()
+
+  def setParamsFileName(self):
+       fd = QFileDialog(self, "select a file", self.LE_ParamsFile.text(), "dat Files (*.dat);;All Files (*)")
+       if fd.exec_():
+          infile = fd.selectedFiles()[0]
+          self.LE_ParamsFile.setText(infile)
+          self.paramsFile=infile.toLatin1()
+
+
+  def meshFileNameChanged(self):
+      self.fichierIn=self.LE_MeshFile.text()
+      if os.path.exists(self.fichierIn): return
+      QMessageBox.warning( self, "Unknown File", "File doesn't exist")
+
+  def paramsFileNameChanged(self):
+      self.paramsFile=self.LE_ParamsFile.text()
+
+  def PBMeshSmeshPressed(self):
+      import salome
+      import smesh
+      from salome.kernel import studyedit
+      from salome.smesh.smeshstudytools import SMeshStudyTools
+      from salome.gui import helper as guihelper
+      from omniORB import CORBA
+
+      mySObject, myEntry = guihelper.getSObjectSelected()
+      if CORBA.is_nil(mySObject) or mySObject==None:
+         QMessageBox.critical(self, "Mesh", "select an input mesh")
+         return
+      self.smeshStudyTool = SMeshStudyTools()
+      self.__selectedMesh = self.smeshStudyTool.getMeshObjectFromSObject(mySObject)
+      if CORBA.is_nil(self.__selectedMesh):
+         QMessageBox.critical(self, "Mesh", "select an input mesh")
+         return
+      myName = mySObject.GetName()
+      self.MeshIn=myName
+      self.LE_MeshSmesh.setText(myName)
+
+  def prepareFichier(self):
+      self.fichierIn="/tmp/PourMGCleaner_"+str(self.num)+".mesh"
+      import SMESH
+      self.__selectedMesh.ExportGMF(self.__selectedMesh,self.fichierIn, True)
+
+  def PrepareLigneCommande(self):
+      """
+      #use doc examples of mg-cleaner:
+      ls -al /data/tmplgls/salome/prerequis/install/COMMON_64/MeshGems-1.0/bin
+      source /data/tmplgls/salome/prerequis/install/LICENSE/dlim8.var.sh
+      export PATH=/data/tmplgls/salome/prerequis/install/COMMON_64/MeshGems-1.0/bin/Linux_64:$PATH
+      cp -r /data/tmplgls/salome/prerequis/install/COMMON_64/MeshGems-1.0/examples .
+      cd examples
+      mg-cleaner.exe --help
+      mg-cleaner.exe --in case7.mesh --out case7-test.mesh --check
+      mg-cleaner.exe case7.mesh case7-fix.mesh --fix
+      mg-cleaner.exe --in Porsche.mesh --out Porsche-test.mesh --check
+      mg-cleaner.exe --in Porsche.mesh --out Porschefix.mesh --fix
+      mg-cleaner.exe --in Porsche.mesh --out PorscheNewfix.mesh --fix --resolution_length 0.03
+      """
+
+      self.commande="mg-cleaner.exe "
+      verbosity=str(self.SP_Verbosity.value())
+      self.commande+="-v "+verbosity
+      for obj in self.mesRB.children():
+          try :
+           if obj.isChecked():
+              self.style=obj.objectName().remove(0,3)
+              self.style.replace("_","-")
+              break
+          except :
+              pass
+      self.commande+=" -O "+self.style.toLatin1()
+      if self.fichierIn=="" and self.MeshIn=="" :
+         QMessageBox.critical(self, "Mesh", "select an input mesh")
+         return False
+      if self.MeshIn!="" : self.prepareFichier()
+      if not (os.path.isfile(self.fichierIn)):
+         QMessageBox.critical(self, "File", "unable to read GMF Mesh in "+str(self.fichierIn))
+         return False
+
+      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.commande+=',tolerance=%f'%self.SP_Tolerance.value()
+      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
+      
+      #for the moment
+      deb=os.path.splitext(self.fichierIn)     
+      self.fichierOut=deb[0]+'_fix.mesh'
+      self.commande="mg-cleaner.exe --in " + self.fichierIn + " --out " + self.fichierOut + " --fix" 
+      
+      return True
+
+  def clean(self):
+        self.RB_0.setChecked(True)
+        self.RB_G.setChecked(False)
+        self.RB_U.setChecked(False)
+        self.RB_S.setChecked(False)
+        self.RB_2.setChecked(False)
+        self.RB_1.setChecked(False)
+        self.RB_Absolute.setChecked(False)
+        self.RB_Relative.setChecked(True)
+        self.SP_Tolerance.setProperty("value", 0.1)
+        self.SP_Geomapp.setProperty("value", 0.04)
+        self.SP_Ridge.setProperty("value", 45.0)
+        self.SP_Gradation.setProperty("value", 1.3)
+        self.CB_Ridge.setChecked(True)
+        self.CB_Point.setChecked(True)
+        self.CB_SplitEdge.setChecked(False)
+        self.SP_MaxSize.setProperty("value", -2.0)
+        self.SP_MinSize.setProperty("value", -2.0)
+        self.SP_Verbosity.setProperty("value", 3)
+        self.SP_Memory.setProperty("value", 0)
+
+
+__dialog=None
+def getDialog():
+    """
+    This function returns a singleton instance of the plugin dialog.
+    c est obligatoire pour faire un show sans parent...
+    """
+    global __dialog
+    if __dialog is None:
+        __dialog = MGCleanerMonPlugDialog()
+    #else :
+    #   __dialog.clean()
+    return __dialog
+
diff --git a/src/Tools/MGCleanerPlug/MGCleanerMonViewText.py b/src/Tools/MGCleanerPlug/MGCleanerMonViewText.py
new file mode 100644 (file)
index 0000000..ff46f1f
--- /dev/null
@@ -0,0 +1,103 @@
+# -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2013  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.
+#
+# 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
+#
+
+# Modules Python
+import string,types,os
+import traceback
+
+from PyQt4 import *
+from PyQt4.QtGui import *
+from PyQt4.QtCore import *
+
+# Import des panels
+
+from MGCleanerViewText import Ui_ViewExe
+
+class MGCleanerMonViewText(Ui_ViewExe,QDialog):
+    """
+    Classe permettant la visualisation de texte
+    """
+    def __init__(self,parent,txt):
+        QDialog.__init__(self,parent)
+        self.setupUi(self)
+        self.resize( QSize(1000,600).expandedTo(self.minimumSizeHint()) )
+        self.connect( self.PB_Ok,SIGNAL("clicked()"), self, SLOT("close()") )
+        self.connect( self.PB_Save,SIGNAL("clicked()"), self.saveFile )
+        self.monExe=QProcess(self)
+
+
+        self.connect(self.monExe, SIGNAL("readyReadStandardOutput()"), self.readFromStdOut )
+        self.connect(self.monExe, SIGNAL("readyReadStandardError()"), self.readFromStdErr )
+      
+        # Je n arrive pas a utiliser le setEnvironment du QProcess
+        # fonctionne hors Salome mais pas dans Salome ???
+        cmds=''
+        try :
+          LICENCE_FILE=os.environ["DISTENE_LICENCE_FILE_FOR_MGCLEANER"]
+        except:
+          LICENCE_FILE=''
+        try :
+          PATH=os.environ["DISTENE_PATH_FOR_MGCLEANER"]
+        except:
+          PATH=''
+        if LICENCE_FILE != '': 
+          cmds+='source '+LICENCE_FILE+'\n'
+        else:
+          cmds+="# $DISTENE_LICENCE_FILE_FOR_MGCLEANER NOT SET\n"
+        if PATH != '': 
+          cmds+='export PATH='+PATH+':$PATH\n'
+        else:
+          cmds+="# $DISTENE_PATH_FOR_MGCLEANER NOT SET\n"
+        #cmds+='env\n'
+        cmds+=txt+'\n'
+        pid=self.monExe.pid()
+        nomFichier='/tmp/MGCleaner_'+str(pid)+'.sh'
+        f=open(nomFichier,'w')
+        f.write(cmds)
+        f.close()
+
+        maBidouille='sh ' + nomFichier
+        self.monExe.start(maBidouille)
+        self.monExe.closeWriteChannel()
+        self.show()
+
+        
+    def saveFile(self):
+        #recuperation du nom du fichier
+        savedir=os.environ['HOME']
+        fn = QFileDialog.getSaveFileName(None, self.trUtf8("Save File"),savedir)
+        if fn.isNull() : return
+        ulfile = os.path.abspath(unicode(fn))
+        try:
+           f = open(fn, 'wb')
+           f.write(str(self.TB_Exe.toPlainText()))
+           f.close()
+        except IOError, why:
+           QMessageBox.critical(self, self.trUtf8('Save File'),
+                self.trUtf8('The file <b>%1</b> could not be saved.<br>Reason: %2')
+                    .arg(unicode(fn)).arg(str(why)))
+
+    def readFromStdErr(self):
+        a=self.monExe.readAllStandardError()
+        self.TB_Exe.append(QString.fromUtf8(a.data(),len(a))) ;
+
+    def readFromStdOut(self) :
+        a=self.monExe.readAllStandardOutput()
+        self.TB_Exe.append(QString.fromUtf8(a.data(),len(a))) ;
diff --git a/src/Tools/MGCleanerPlug/MGCleanerPlugDialog.ui b/src/Tools/MGCleanerPlug/MGCleanerPlugDialog.ui
new file mode 100644 (file)
index 0000000..e6b3ef1
--- /dev/null
@@ -0,0 +1,1079 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MGCleanerPlugDialog</class>
+ <widget class="QWidget" name="MGCleanerPlugDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>799</width>
+    <height>602</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>MGCleaner : Remeshing tool</string>
+  </property>
+  <property name="sizeGripEnabled" stdset="0">
+   <bool>false</bool>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="2" column="0">
+    <layout class="QHBoxLayout" name="horizontalLayout">
+     <item>
+      <widget class="QPushButton" name="PB_OK">
+       <property name="text">
+        <string>Compute</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="PB_Cancel">
+       <property name="text">
+        <string>Close</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer name="horizontalSpacer_4">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeType">
+        <enum>QSizePolicy::Minimum</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>60</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="PB_Save">
+       <property name="text">
+        <string>Save Params</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="PB_Load">
+       <property name="text">
+        <string>Load Params</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="PB_Default">
+       <property name="text">
+        <string>Default Params</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer name="horizontalSpacer">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>338</width>
+         <height>25</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="PB_Help">
+       <property name="font">
+        <font>
+         <pointsize>10</pointsize>
+        </font>
+       </property>
+       <property name="text">
+        <string>Help</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item row="1" column="0">
+    <widget class="QTabWidget" name="TWOptions">
+     <property name="font">
+      <font>
+       <pointsize>10</pointsize>
+      </font>
+     </property>
+     <property name="currentIndex">
+      <number>0</number>
+     </property>
+     <widget class="QWidget" name="simple">
+      <attribute name="title">
+       <string>Simple Remeshing Options</string>
+      </attribute>
+      <widget class="QGroupBox" name="GBOptim">
+       <property name="geometry">
+        <rect>
+         <x>10</x>
+         <y>140</y>
+         <width>750</width>
+         <height>270</height>
+        </rect>
+       </property>
+       <property name="title">
+        <string>Optimisation</string>
+       </property>
+       <widget class="QGroupBox" name="mesRB">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>30</y>
+          <width>611</width>
+          <height>209</height>
+         </rect>
+        </property>
+        <layout class="QVBoxLayout" name="monRBLayout">
+         <item>
+          <widget class="QRadioButton" name="RB_0">
+           <property name="toolTip">
+            <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;table style=&quot;-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;&quot;&gt;
+&lt;tr&gt;
+&lt;td style=&quot;border: none;&quot;&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;Quality improvement&lt;/span&gt; is done by point smoothing and edge swapping&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</string>
+           </property>
+           <property name="text">
+            <string>Quality improvement Only (0)</string>
+           </property>
+           <property name="checked">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QRadioButton" name="RB_G">
+           <property name="toolTip">
+            <string>the given surface triangulation is enriched (no coarsening at all) in such away that the distance 
+between the elements in the final mesh and those of the initial one is bounded by auser specified tolerance value. 
+One should use this option, to enrich the mesh where purely
+geometrical features may be insuficiently fine, i.e. the resulting mesh will be least as fine as the input.
+Mesh and the geometric features will be refined if needed as specified by the other program parameters.
+The meshes obtained with those settings may not be suitable for computation.</string>
+           </property>
+           <property name="text">
+            <string>Pure Geometry Enrichment (G)</string>
+           </property>
+           <property name="checked">
+            <bool>false</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QRadioButton" name="RB_U">
+           <property name="toolTip">
+            <string>a uniform subdivision of the given surface triangulation is performed : 
+each triangle of the given surface triangulation is considered at and
+is divided into identical triangles.</string>
+           </property>
+           <property name="text">
+            <string>Uniform Subdivision (U)</string>
+           </property>
+           <property name="checked">
+            <bool>false</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QRadioButton" name="RB_S">
+           <property name="toolTip">
+            <string>a surface sandpapering without shrinkage of the given surface
+triangulation is performed, i.e., the high curvature variations of the
+given surface will be smoothed out without shrinking the volume in
+doing so. If ridges are defined, they will be kept as they are in the
+resulting mesh.
+This option modifies the geometry.</string>
+           </property>
+           <property name="text">
+            <string>Smoothing (S)</string>
+           </property>
+           <property name="checked">
+            <bool>false</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QRadioButton" name="RB__2">
+           <property name="toolTip">
+            <string>The given surface triangulation is modified in such a way that the distance between 
+the elements in the final mesh and those of the initial one is bounded by a user specfied tolerance value.
+One should use this option, to coarsen when a purely geometrical mesh is needed. (a mesh that keeps
+and obeys its geometric features only.) The meshes obtained with this option are usually not suitable
+for computation because anisotropic elements may be generated</string>
+           </property>
+           <property name="text">
+            <string>Geometrical Mesh : Coarsening (-2)</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QRadioButton" name="RB_2">
+           <property name="toolTip">
+            <string>The given surface triangulation is modified in such a way that the distance between 
+the elements in the final mesh and those of the initial one is bounded by a user specfied tolerance value.
+One should use this option, to coarsen and enrich when a purely geometrical mesh is needed. (a mesh that keeps
+and obeys its geometric features only.) The meshes obtained with this setting are usually not suitable
+for computation because anisotropic elements may be generated</string>
+           </property>
+           <property name="text">
+            <string>Geometrical Mesh : Coarsening and Enrichment (2)</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QRadioButton" name="RB__1">
+           <property name="toolTip">
+            <string>The given surface triangulation is modified in accordance to a size map. 
+The latter can be either the intrinsic size map (computed automatically
+and based on the surface properties, i.e. the local curvatures),
+or on a given size map (which is then combined to the intrinsic size map). 
+One should use this option to coarsen  the mesh, when a regular mesh 
+for computation purposes is desired, i.e. a mesh with good aspect ratios or 
+good quality elements.</string>
+           </property>
+           <property name="text">
+            <string>Mesh for finite element computation : Coarsening (-1)</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QRadioButton" name="RB_1">
+           <property name="toolTip">
+            <string>The given surface triangulation is modified in accordance to a size map. 
+The latter can be either the intrinsic size map (computed automatically
+and based on the surface properties, i.e. the local curvatures),
+or on a given size map (which is then combined to the intrinsic size map). 
+One should use this option to coarsen  and enrich the mesh, when a regular mesh 
+for computation purposes is desired, i.e. a mesh with good aspect ratios or 
+good quality elements</string>
+           </property>
+           <property name="text">
+            <string>Mesh for finite element computation : Coarsening and Enrichment  (1)</string>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </widget>
+      </widget>
+      <widget class="QGroupBox" name="GBUnit">
+       <property name="geometry">
+        <rect>
+         <x>10</x>
+         <y>420</y>
+         <width>300</width>
+         <height>70</height>
+        </rect>
+       </property>
+       <property name="toolTip">
+        <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;table border=&quot;0&quot; style=&quot;-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;&quot;&gt;
+&lt;tr&gt;
+&lt;td style=&quot;border: none;&quot;&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</string>
+       </property>
+       <property name="title">
+        <string>Units</string>
+       </property>
+       <widget class="QRadioButton" name="RB_Absolute">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>30</y>
+          <width>110</width>
+          <height>24</height>
+         </rect>
+        </property>
+        <property name="toolTip">
+         <string>Values are expressed in the model units.</string>
+        </property>
+        <property name="text">
+         <string>Absolute</string>
+        </property>
+        <property name="checked">
+         <bool>false</bool>
+        </property>
+       </widget>
+       <widget class="QRadioButton" name="RB_Relative">
+        <property name="geometry">
+         <rect>
+          <x>160</x>
+          <y>30</y>
+          <width>110</width>
+          <height>24</height>
+         </rect>
+        </property>
+        <property name="toolTip">
+         <string>Values are relative to the bounding box size.</string>
+        </property>
+        <property name="text">
+         <string>Relative</string>
+        </property>
+        <property name="checked">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </widget>
+      <widget class="QGroupBox" name="GBTolerance_2">
+       <property name="geometry">
+        <rect>
+         <x>410</x>
+         <y>420</y>
+         <width>350</width>
+         <height>70</height>
+        </rect>
+       </property>
+       <property name="toolTip">
+        <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;table border=&quot;0&quot; style=&quot;-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;&quot;&gt;
+&lt;tr&gt;
+&lt;td style=&quot;border: none;&quot;&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Set chordal deviation tolerance:&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;This parameter enables the user to bound the maximal chordal deviation allowed,&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;that is, the maximal distance allowed between the detected curve and the plane P&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;of the corresponding mesh face.&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;In other words, it avoids having faces too far away from the curve &lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;they represent (or should represent).&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</string>
+       </property>
+       <property name="title">
+        <string>Chordal deviation Tolerance</string>
+       </property>
+       <widget class="QDoubleSpinBox" name="SP_Tolerance">
+        <property name="geometry">
+         <rect>
+          <x>40</x>
+          <y>30</y>
+          <width>81</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="font">
+         <font>
+          <stylestrategy>PreferDefault</stylestrategy>
+         </font>
+        </property>
+        <property name="mouseTracking">
+         <bool>true</bool>
+        </property>
+        <property name="toolTip">
+         <string>If the Units parameter is relative epsilon max correspond to 0.0001x s x tolerance parameter where s is the size of the bounding box of the domain.
+If the Units parameter is absolute, the tolerance parameter is expressed in model units :
+if P=2 and point coordinaters are givin in millimetre, it menas that the maximal chordal deviation is 2 mm </string>
+        </property>
+        <property name="maximum">
+         <double>100000.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>1.000000000000000</double>
+        </property>
+        <property name="value">
+         <double>0.100000000000000</double>
+        </property>
+       </widget>
+      </widget>
+      <widget class="QGroupBox" name="groupBox">
+       <property name="geometry">
+        <rect>
+         <x>10</x>
+         <y>10</y>
+         <width>750</width>
+         <height>120</height>
+        </rect>
+       </property>
+       <property name="font">
+        <font>
+         <pointsize>10</pointsize>
+        </font>
+       </property>
+       <property name="title">
+        <string>Original Mesh</string>
+       </property>
+       <widget class="QPushButton" name="PB_MeshFile">
+        <property name="geometry">
+         <rect>
+          <x>40</x>
+          <y>70</y>
+          <width>191</width>
+          <height>33</height>
+         </rect>
+        </property>
+        <property name="font">
+         <font>
+          <pointsize>10</pointsize>
+         </font>
+        </property>
+        <property name="text">
+         <string>Mesh File (GMF format)</string>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="LE_MeshFile">
+        <property name="geometry">
+         <rect>
+          <x>240</x>
+          <y>70</y>
+          <width>481</width>
+          <height>31</height>
+         </rect>
+        </property>
+        <property name="font">
+         <font>
+          <pointsize>10</pointsize>
+         </font>
+        </property>
+       </widget>
+       <widget class="QPushButton" name="PB_MeshSmesh">
+        <property name="geometry">
+         <rect>
+          <x>190</x>
+          <y>30</y>
+          <width>41</width>
+          <height>31</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string/>
+        </property>
+        <property name="icon">
+         <iconset>
+          <normaloff>:select1.png</normaloff>:select1.png</iconset>
+        </property>
+        <property name="iconSize">
+         <size>
+          <width>18</width>
+          <height>18</height>
+         </size>
+        </property>
+        <property name="checkable">
+         <bool>false</bool>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="LE_MeshSmesh">
+        <property name="geometry">
+         <rect>
+          <x>240</x>
+          <y>30</y>
+          <width>481</width>
+          <height>31</height>
+         </rect>
+        </property>
+        <property name="font">
+         <font>
+          <pointsize>10</pointsize>
+         </font>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_7">
+        <property name="geometry">
+         <rect>
+          <x>40</x>
+          <y>30</y>
+          <width>141</width>
+          <height>31</height>
+         </rect>
+        </property>
+        <property name="font">
+         <font>
+          <pointsize>10</pointsize>
+          <strikeout>false</strikeout>
+         </font>
+        </property>
+        <property name="frameShape">
+         <enum>QFrame::Box</enum>
+        </property>
+        <property name="text">
+         <string>Smesh mesh</string>
+        </property>
+        <property name="wordWrap">
+         <bool>false</bool>
+        </property>
+        <property name="margin">
+         <number>0</number>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_8">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>80</y>
+          <width>31</width>
+          <height>18</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>or</string>
+        </property>
+       </widget>
+      </widget>
+      <zorder>GBUnit</zorder>
+      <zorder>GBTolerance_2</zorder>
+      <zorder>groupBox</zorder>
+      <zorder>GBOptim</zorder>
+     </widget>
+     <widget class="QWidget" name="advanced">
+      <attribute name="title">
+       <string>Advanced  Remeshing Options</string>
+      </attribute>
+      <widget class="QGroupBox" name="groupBox_2">
+       <property name="geometry">
+        <rect>
+         <x>10</x>
+         <y>10</y>
+         <width>750</width>
+         <height>70</height>
+        </rect>
+       </property>
+       <property name="title">
+        <string>You can disable :</string>
+       </property>
+       <widget class="QCheckBox" name="CB_Ridge">
+        <property name="geometry">
+         <rect>
+          <x>100</x>
+          <y>20</y>
+          <width>271</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="toolTip">
+         <string>if not set (ridge detection disabled), Yams 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)  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.</string>
+        </property>
+        <property name="text">
+         <string>ridge detection</string>
+        </property>
+        <property name="checked">
+         <bool>true</bool>
+        </property>
+       </widget>
+       <widget class="QCheckBox" name="CB_Point">
+        <property name="geometry">
+         <rect>
+          <x>100</x>
+          <y>40</y>
+          <width>271</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="toolTip">
+         <string>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.</string>
+        </property>
+        <property name="text">
+         <string>point smoothing</string>
+        </property>
+        <property name="checked">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </widget>
+      <widget class="QGroupBox" name="groupBox_5">
+       <property name="geometry">
+        <rect>
+         <x>10</x>
+         <y>100</y>
+         <width>750</width>
+         <height>320</height>
+        </rect>
+       </property>
+       <property name="title">
+        <string>You can control </string>
+       </property>
+       <widget class="QDoubleSpinBox" name="SP_Geomapp">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>30</y>
+          <width>91</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="maximum">
+         <double>0.890000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.010000000000000</double>
+        </property>
+        <property name="value">
+         <double>0.040000000000000</double>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_2">
+        <property name="geometry">
+         <rect>
+          <x>120</x>
+          <y>20</y>
+          <width>631</width>
+          <height>61</height>
+         </rect>
+        </property>
+        <property name="toolTip">
+         <string>This field (as well as tolerance) enables the user to control the accuracy of the
+piecewise linear approximation of the surface. This parameter enables the user to
+control the maximal angle allowed between two adjacent faces. It can be used to 
+bound the maximal deviation of the mesh faces from the tangent planes at mesh vertices. 
+In other words, it avoids having sharp angles between faces representing a smooth curve.
+This parameter enables the user to specify the maximal chordal deviation &quot;max relatively to the curvature.
+Following that criterion:
+- if the chordal deviation epsilon  is smaller than epsilon max *r, it is acceptable to remove the considered point;
+- if the chordal deviation epsilon is greater than epsiolon max*r, the considered mesh face should be redefined 
+by adding a point on the curve.
+One can see that the smaller the radius r, the harder it is to satisfy this criterion:  
+epsilon max is a real value corresponding to a percentage, the ratio between the chordal deviation to 
+the local curvature. This field is used only for optimisation style -O values of  -1, 0 and 1.
+The default value for &quot;max is set to 0:04 which leads to angles of less than 33 degrees between two adjacent
+faces .</string>
+        </property>
+        <property name="text">
+         <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;table border=&quot;0&quot; style=&quot;-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;&quot;&gt;
+&lt;tr&gt;
+&lt;td style=&quot;border: none;&quot;&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Geometrical approximation :  Maximum angle allowed between a face and a curve &lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:8pt;&quot;&gt;(not separated by a ridge).&lt;/span&gt;)&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_4">
+        <property name="geometry">
+         <rect>
+          <x>120</x>
+          <y>70</y>
+          <width>581</width>
+          <height>71</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;table border=&quot;0&quot; style=&quot;-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;&quot;&gt;
+&lt;tr&gt;
+&lt;td style=&quot;border: none;&quot;&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Ridge angle:&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;if the angle between the normal vectors of two adjacent faces exceeds&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;this value, the edge common to the faces is a ridge&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</string>
+        </property>
+       </widget>
+       <widget class="QDoubleSpinBox" name="SP_Ridge">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>90</y>
+          <width>91</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="maximum">
+         <double>90.000000000000000</double>
+        </property>
+        <property name="value">
+         <double>45.000000000000000</double>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_5">
+        <property name="geometry">
+         <rect>
+          <x>120</x>
+          <y>140</y>
+          <width>521</width>
+          <height>41</height>
+         </rect>
+        </property>
+        <property name="toolTip">
+         <string>This parameter allows the user to prescribe  a maximal size hmax
+for the mesh elements i.e., the lengths of the edges with respect to the specified
+ size map. The corresponding values are either relative or absolute depending on the choosen parameter.
+The default values are automatically set based on the surface geometry (curvature dependent) and its
+bounding box size.
+Please note that, as it is not strictly possible to obey the given or computed size map, the actual maximal
+size  may be slightly bigger than the prescribed ones.</string>
+        </property>
+        <property name="text">
+         <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;table border=&quot;0&quot; style=&quot;-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;&quot;&gt;
+&lt;tr&gt;
+&lt;td style=&quot;border: none;&quot;&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Maximal size allowed around vertices:&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;the lengths of the edges with respect to the specified size map.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_3">
+        <property name="geometry">
+         <rect>
+          <x>120</x>
+          <y>240</y>
+          <width>591</width>
+          <height>61</height>
+         </rect>
+        </property>
+        <property name="toolTip">
+         <string>This parameter enables the user to control the element size variation in the triangulation.
+Yams will avoid getting two adjacent edges which sizes differ by a factor bigger than this parameter. 
+To avoid rapid size variations, a size correction procedure is applied to the size map. 
+In other words: if two adjacent edges are respectively e1 and e2 long 
+if  e2 &gt; parameter * e1 then e02 the new size for the second edge will be set to  parameter* e1.
+This procedure is de-activated if yams computes a mesh for finite element with only coarsening.
+The default value is 1.3, which is the usual value set for computational meshes.</string>
+        </property>
+        <property name="text">
+         <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;table border=&quot;0&quot; style=&quot;-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;&quot;&gt;
+&lt;tr&gt;
+&lt;td style=&quot;border: none;&quot;&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Mesh Gradation ie the element size variation in the triangulation:&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Yams will avoid having two adjacent edges which sizes &lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;vary more than the given gradation.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</string>
+        </property>
+       </widget>
+       <widget class="QDoubleSpinBox" name="SP_Gradation">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>250</y>
+          <width>91</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="singleStep">
+         <double>0.010000000000000</double>
+        </property>
+        <property name="value">
+         <double>1.300000000000000</double>
+        </property>
+       </widget>
+       <widget class="QDoubleSpinBox" name="SP_MaxSize">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>150</y>
+          <width>91</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="minimum">
+         <double>0.010000000000000</double>
+        </property>
+        <property name="maximum">
+         <double>100.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.100000000000000</double>
+        </property>
+        <property name="value">
+         <double>100.000000000000000</double>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_9">
+        <property name="geometry">
+         <rect>
+          <x>120</x>
+          <y>190</y>
+          <width>521</width>
+          <height>41</height>
+         </rect>
+        </property>
+        <property name="toolTip">
+         <string>This parameter allows the user to prescribe  a maximal size hmax
+for the mesh elements i.e., the lengths of the edges with respect to the specified
+ size map. The corresponding values are either relative or absolute depending on the choosen parameter.
+The default values are automatically set based on the surface geometry (curvature dependent) and its
+bounding box size.
+Please note that, as it is not strictly possible to obey the given or computed size map, the actual maximal
+size  may be slightly bigger than the prescribed ones.</string>
+        </property>
+        <property name="text">
+         <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;table border=&quot;0&quot; style=&quot;-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;&quot;&gt;
+&lt;tr&gt;
+&lt;td style=&quot;border: none;&quot;&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Minimal size allowed around vertices:&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;the lengths of the edges with respect to the specified size map.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</string>
+        </property>
+       </widget>
+       <widget class="QDoubleSpinBox" name="SP_MinSize">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>200</y>
+          <width>91</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="minimum">
+         <double>0.000000000000000</double>
+        </property>
+        <property name="maximum">
+         <double>100.000000000000000</double>
+        </property>
+        <property name="singleStep">
+         <double>0.100000000000000</double>
+        </property>
+        <property name="value">
+         <double>5.000000000000000</double>
+        </property>
+       </widget>
+      </widget>
+      <widget class="QGroupBox" name="groupBox_3">
+       <property name="geometry">
+        <rect>
+         <x>10</x>
+         <y>440</y>
+         <width>750</width>
+         <height>60</height>
+        </rect>
+       </property>
+       <property name="title">
+        <string>You can enable :</string>
+       </property>
+       <widget class="QCheckBox" name="CB_SplitEdge">
+        <property name="geometry">
+         <rect>
+          <x>100</x>
+          <y>20</y>
+          <width>271</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="toolTip">
+         <string>if set, Yams creates new vertices placed on the curved surface and adds them to elements. 
+It means one extra vertex on edge (P2 or quadratic triangles).
+New created vertices  are saved in the .mesh file under keyword section Vertices</string>
+        </property>
+        <property name="text">
+         <string>split edge</string>
+        </property>
+        <property name="checked">
+         <bool>false</bool>
+        </property>
+       </widget>
+      </widget>
+     </widget>
+     <widget class="QWidget" name="generic">
+      <attribute name="title">
+       <string>Generic Options</string>
+      </attribute>
+      <widget class="QGroupBox" name="groupBox_4">
+       <property name="geometry">
+        <rect>
+         <x>10</x>
+         <y>30</y>
+         <width>750</width>
+         <height>130</height>
+        </rect>
+       </property>
+       <property name="title">
+        <string>MGCleaner Generic Options</string>
+       </property>
+       <widget class="QWidget" name="layoutWidget">
+        <property name="geometry">
+         <rect>
+          <x>40</x>
+          <y>30</y>
+          <width>441</width>
+          <height>27</height>
+         </rect>
+        </property>
+        <layout class="QHBoxLayout" name="horizontalLayout_3">
+         <item>
+          <widget class="QLabel" name="label">
+           <property name="text">
+            <string>Verbosity Level</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <spacer name="horizontalSpacer_2">
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
+           </property>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>28</width>
+             <height>20</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+         <item>
+          <widget class="QSpinBox" name="SP_Verbosity">
+           <property name="maximum">
+            <number>10</number>
+           </property>
+           <property name="value">
+            <number>7</number>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </widget>
+       <widget class="QWidget" name="layoutWidget_2">
+        <property name="geometry">
+         <rect>
+          <x>40</x>
+          <y>70</y>
+          <width>441</width>
+          <height>27</height>
+         </rect>
+        </property>
+        <layout class="QHBoxLayout" name="horizontalLayout_4">
+         <item>
+          <widget class="QLabel" name="label_6">
+           <property name="minimumSize">
+            <size>
+             <width>225</width>
+             <height>25</height>
+            </size>
+           </property>
+           <property name="text">
+            <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;table border=&quot;0&quot; style=&quot;-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;&quot;&gt;
+&lt;tr&gt;
+&lt;td style=&quot;border: none;&quot;&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Memory size (in Mbytes)&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <spacer name="horizontalSpacer_3">
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
+           </property>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>28</width>
+             <height>20</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+         <item>
+          <widget class="QSpinBox" name="SP_Memory">
+           <property name="toolTip">
+            <string>The program requires roughly about 370 bytes per point. It is thus possible to estimate a priori 
+the required memory size to complete a job. As an example of memory space needed, a mesh 
+of 543,652 points (1,087,716 triangles) requires 182 Mbytes (about 351 bytes per point). Conversely, 
+a workstation having 512 Mbytes of memory can handle a mesh of about 2,750,000 points.
+The memory needed for mesh modification is allocated dynamically at the beginning of the procedure 
+(data reading), based on the initial triangulation size. When the program reaches the amount of maximal 
+memory allowed, it will stop inserting points and, if possible, the current mesh will be saved as it is, 
+valid and conformal, provided the input mesh was valid and conformal.
+Specify the memory if:
+- the automatically allocated memory reveals insufficient when the user asked to enrich the given mesh;
+- you want to limit the amount of memory used by the program.
+If the input mesh size requires more memory than requested or if the allocated memory (user defined or not)
+exceeds the machine capabilities, the tool will stop because of insufficient memory.</string>
+           </property>
+           <property name="maximum">
+            <number>100000</number>
+           </property>
+           <property name="value">
+            <number>0</number>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </widget>
+      </widget>
+      <widget class="QGroupBox" name="groupBox_6">
+       <property name="geometry">
+        <rect>
+         <x>10</x>
+         <y>230</y>
+         <width>750</width>
+         <height>140</height>
+        </rect>
+       </property>
+       <property name="title">
+        <string>Plug-in Generic Options</string>
+       </property>
+       <widget class="QLabel" name="label_10">
+        <property name="geometry">
+         <rect>
+          <x>20</x>
+          <y>40</y>
+          <width>391</width>
+          <height>18</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>File used to save MGCleaner Params :</string>
+        </property>
+       </widget>
+       <widget class="QPushButton" name="PB_ParamsFileExplorer">
+        <property name="geometry">
+         <rect>
+          <x>20</x>
+          <y>70</y>
+          <width>30</width>
+          <height>31</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string/>
+        </property>
+        <property name="icon">
+         <iconset>
+          <normaloff>:open.png</normaloff>:open.png</iconset>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="LE_ParamsFile">
+        <property name="geometry">
+         <rect>
+          <x>60</x>
+          <y>70</y>
+          <width>661</width>
+          <height>31</height>
+         </rect>
+        </property>
+       </widget>
+      </widget>
+     </widget>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/src/Tools/MGCleanerPlug/MGCleanerViewText.ui b/src/Tools/MGCleanerPlug/MGCleanerViewText.ui
new file mode 100644 (file)
index 0000000..8bec19a
--- /dev/null
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>ViewExe</class>
+ <widget class="QDialog" name="ViewExe">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>469</width>
+    <height>489</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Run MGCleaner</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="0" column="0" colspan="2">
+    <widget class="QTextBrowser" name="TB_Exe"/>
+   </item>
+   <item row="1" column="0">
+    <widget class="QPushButton" name="PB_Ok">
+     <property name="text">
+      <string>Ok</string>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="1">
+    <widget class="QPushButton" name="PB_Save">
+     <property name="text">
+      <string>Save</string>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/src/Tools/MGCleanerPlug/MGCleanerplug_plugin.py b/src/Tools/MGCleanerPlug/MGCleanerplug_plugin.py
new file mode 100644 (file)
index 0000000..6e3a998
--- /dev/null
@@ -0,0 +1,44 @@
+# Copyright (C) 2006-2013  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.
+#
+# 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 MGCleanerLct(context):
+  # get context study, studyId, salomeGui
+  study = context.study
+  studyId = context.studyId
+  sg = context.sg
+  
+  import os
+  import subprocess
+  import tempfile
+  from PyQt4 import QtCore
+  from PyQt4 import QtGui
+  from PyQt4.QtGui import QFileDialog
+  from PyQt4.QtGui import QMessageBox
+  
+  try :
+      os.environ['DISTENE_LICENCE_FILE_FOR_MGCLEANER']
+  except:
+      QMessageBox.warning(None,"Products","Distene's products MeshGemCleaner are not installed")
+      return
+  import MGCleanerMonPlugDialog
+  window=MGCleanerMonPlugDialog.getDialog() 
+  window.show()
diff --git a/src/Tools/MGCleanerPlug/Makefile.am b/src/Tools/MGCleanerPlug/Makefile.am
new file mode 100644 (file)
index 0000000..efbc785
--- /dev/null
@@ -0,0 +1,38 @@
+# Copyright (C) 2007-2013  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.
+#
+# 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
+#
+
+SUBDIRS = doc
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+UIPY_FILES = MGCleanerPlugDialog.py  MGCleanerViewText.py 
+
+salomeplugins_PYTHON = \
+       MGCleanerMonPlugDialog.py\
+       MGCleanerMonViewText.py\
+       MGCleanerplug_plugin.py 
+
+nodist_salomeplugins_PYTHON = $(UIPY_FILES)
+
+CLEANFILES = $(UIPY_FILES)
+
+EXTRA_DIST += $(UIPY_FILES:%.py=%.ui)
+
+%.py : %.ui
+       $(PYUIC) $< -o $@
diff --git a/src/Tools/MGCleanerPlug/Makefile.in b/src/Tools/MGCleanerPlug/Makefile.in
new file mode 100644 (file)
index 0000000..a811c1f
--- /dev/null
@@ -0,0 +1,1019 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Copyright (C) 2007-2013  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.
+#
+# 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
+#
+
+# Copyright (C) 2007-2013  CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# 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.
+#
+# 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
+#
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+DIST_COMMON = $(salomeplugins_PYTHON) $(srcdir)/Makefile.am \
+       $(srcdir)/Makefile.in \
+       $(top_srcdir)/adm_local/unix/make_common_starter.am
+subdir = src/Tools/MGCleanerPlug
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps =  \
+       $(top_srcdir)/adm_local/unix/config_files/check_Platform.m4 \
+       $(top_srcdir)/adm_local/unix/config_files/check_cgal.m4 \
+       $(top_srcdir)/adm_local/unix/config_files/check_cgns.m4 \
+       $(top_srcdir)/adm_local/unix/config_files/check_padder.m4 \
+       $(top_srcdir)/adm_local/unix/config_files/check_qwt.m4 \
+       $(top_srcdir)/adm_local/unix/config_files/libtool.m4 \
+       $(top_srcdir)/adm_local/unix/config_files/ltoptions.m4 \
+       $(top_srcdir)/adm_local/unix/config_files/ltsugar.m4 \
+       $(top_srcdir)/adm_local/unix/config_files/ltversion.m4 \
+       $(top_srcdir)/adm_local/unix/config_files/lt~obsolete.m4 \
+       $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+       html-recursive info-recursive install-data-recursive \
+       install-dvi-recursive install-exec-recursive \
+       install-html-recursive install-info-recursive \
+       install-pdf-recursive install-ps-recursive install-recursive \
+       installcheck-recursive installdirs-recursive pdf-recursive \
+       ps-recursive uninstall-recursive
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(salomepluginsdir)" \
+       "$(DESTDIR)$(salomepluginsdir)"
+py_compile = $(top_srcdir)/adm_local/unix/config_files/py-compile
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
+  distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+       $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+       distdir
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BINDIR = @BINDIR@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LIBS = @BOOST_LIBS@
+BOOST_LIBSUFFIX = @BOOST_LIBSUFFIX@
+BOOST_LIB_REGEX = @BOOST_LIB_REGEX@
+BOOST_LIB_SIGNALS = @BOOST_LIB_SIGNALS@
+BOOST_LIB_SYSTEM = @BOOST_LIB_SYSTEM@
+BOOST_LIB_THREAD = @BOOST_LIB_THREAD@
+BOOST_PROGRAM_OPTIONS_LIB = @BOOST_PROGRAM_OPTIONS_LIB@
+CASROOT = @CASROOT@
+CAS_CPPFLAGS = @CAS_CPPFLAGS@
+CAS_CXXFLAGS = @CAS_CXXFLAGS@
+CAS_DATADIR = @CAS_DATADIR@
+CAS_DATAEXCHANGE = @CAS_DATAEXCHANGE@
+CAS_KERNEL = @CAS_KERNEL@
+CAS_LDFLAGS = @CAS_LDFLAGS@
+CAS_LDPATH = @CAS_LDPATH@
+CAS_LIBDIR = @CAS_LIBDIR@
+CAS_MATH = @CAS_MATH@
+CAS_MODELER = @CAS_MODELER@
+CAS_OCAF = @CAS_OCAF@
+CAS_OCAFVIS = @CAS_OCAFVIS@
+CAS_STDPLUGIN = @CAS_STDPLUGIN@
+CAS_TKTopAlgo = @CAS_TKTopAlgo@
+CAS_VERSION_DEVELOPMENT = @CAS_VERSION_DEVELOPMENT@
+CAS_VIEWER = @CAS_VIEWER@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CGALHOME = @CGALHOME@
+CGAL_INCLUDES = @CGAL_INCLUDES@
+CGAL_LIBS = @CGAL_LIBS@
+CGNS_INCLUDES = @CGNS_INCLUDES@
+CGNS_LIBS = @CGNS_LIBS@
+CORBA_CXXFLAGS = @CORBA_CXXFLAGS@
+CORBA_INCLUDES = @CORBA_INCLUDES@
+CORBA_LIBS = @CORBA_LIBS@
+CORBA_ROOT = @CORBA_ROOT@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTMPDPTHFLAGS = @CXXTMPDPTHFLAGS@
+CXX_DEPEND_FLAG = @CXX_DEPEND_FLAG@
+CYGPATH_W = @CYGPATH_W@
+C_DEPEND_FLAG = @C_DEPEND_FLAG@
+DEFINED_F77INT64 = @DEFINED_F77INT64@
+DEFS = @DEFS@
+DEPCC = @DEPCC@
+DEPCXX = @DEPCXX@
+DEPCXXFLAGS = @DEPCXXFLAGS@
+DEPDIR = @DEPDIR@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DOXYGEN_PYTHON_EXTENSION = @DOXYGEN_PYTHON_EXTENSION@
+DOXYGEN_SUPPORT_STL = @DOXYGEN_SUPPORT_STL@
+DOXYGEN_WITH_PYTHON = @DOXYGEN_WITH_PYTHON@
+DOXYGEN_WITH_STL = @DOXYGEN_WITH_STL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DVIPS = @DVIPS@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_MULTIPR = @ENABLE_MULTIPR@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FC = @FC@
+FCFLAGS = @FCFLAGS@
+FCLIBS = @FCLIBS@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+FLIBS = @FLIBS@
+GEOM_CXXFLAGS = @GEOM_CXXFLAGS@
+GEOM_LDFLAGS = @GEOM_LDFLAGS@
+GEOM_ROOT_DIR = @GEOM_ROOT_DIR@
+GLOBAL_INSTALL = @GLOBAL_INSTALL@
+GREP = @GREP@
+GUI_CXXFLAGS = @GUI_CXXFLAGS@
+GUI_LDFLAGS = @GUI_LDFLAGS@
+GUI_ROOT_DIR = @GUI_ROOT_DIR@
+HAVE_SSTREAM = @HAVE_SSTREAM@
+HDF5HOME = @HDF5HOME@
+HDF5_INCLUDES = @HDF5_INCLUDES@
+HDF5_LIBS = @HDF5_LIBS@
+HDF5_MT_LIBS = @HDF5_MT_LIBS@
+IDL = @IDL@
+IDLCXXFLAGS = @IDLCXXFLAGS@
+IDLPYFLAGS = @IDLPYFLAGS@
+IDL_CLN_CXX = @IDL_CLN_CXX@
+IDL_CLN_H = @IDL_CLN_H@
+IDL_CLN_OBJ = @IDL_CLN_OBJ@
+IDL_SRV_CXX = @IDL_SRV_CXX@
+IDL_SRV_H = @IDL_SRV_H@
+IDL_SRV_OBJ = @IDL_SRV_OBJ@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+KERNEL_CXXFLAGS = @KERNEL_CXXFLAGS@
+KERNEL_LDFLAGS = @KERNEL_LDFLAGS@
+KERNEL_ROOT_DIR = @KERNEL_ROOT_DIR@
+KERNEL_SITE_DIR = @KERNEL_SITE_DIR@
+LATEX = @LATEX@
+LD = @LD@
+LDEXPDYNFLAGS = @LDEXPDYNFLAGS@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_INCLUDES = @LIBXML_INCLUDES@
+LIBXML_LIBS = @LIBXML_LIBS@
+LIB_LOCATION_SUFFIX = @LIB_LOCATION_SUFFIX@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LRELEASE = @LRELEASE@
+LTLIBOBJS = @LTLIBOBJS@
+MACHINE = @MACHINE@
+MAKEINFO = @MAKEINFO@
+MDUMP = @MDUMP@
+MED3HOME = @MED3HOME@
+MED3_INCLUDES = @MED3_INCLUDES@
+MED3_LIBS = @MED3_LIBS@
+MED3_LIBS_C_ONLY = @MED3_LIBS_C_ONLY@
+MED3_MT_LIBS = @MED3_MT_LIBS@
+MED_CPPFLAGS = @MED_CPPFLAGS@
+MED_CXXFLAGS = @MED_CXXFLAGS@
+MED_LDFLAGS = @MED_LDFLAGS@
+MED_ROOT_DIR = @MED_ROOT_DIR@
+MKDIR_P = @MKDIR_P@
+MOC = @MOC@
+MODULE_NAME = @MODULE_NAME@
+MPI_INCLUDES = @MPI_INCLUDES@
+MPI_LIBS = @MPI_LIBS@
+MULTIPR_CPPFLAGS = @MULTIPR_CPPFLAGS@
+MULTIPR_LIBS = @MULTIPR_LIBS@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OGL_INCLUDES = @OGL_INCLUDES@
+OGL_LIBS = @OGL_LIBS@
+OMNIORB_CXXFLAGS = @OMNIORB_CXXFLAGS@
+OMNIORB_IDL = @OMNIORB_IDL@
+OMNIORB_IDLCXXFLAGS = @OMNIORB_IDLCXXFLAGS@
+OMNIORB_IDLPYFLAGS = @OMNIORB_IDLPYFLAGS@
+OMNIORB_IDL_CLN_CXX = @OMNIORB_IDL_CLN_CXX@
+OMNIORB_IDL_CLN_H = @OMNIORB_IDL_CLN_H@
+OMNIORB_IDL_CLN_OBJ = @OMNIORB_IDL_CLN_OBJ@
+OMNIORB_IDL_SRV_CXX = @OMNIORB_IDL_SRV_CXX@
+OMNIORB_IDL_SRV_H = @OMNIORB_IDL_SRV_H@
+OMNIORB_IDL_SRV_OBJ = @OMNIORB_IDL_SRV_OBJ@
+OMNIORB_IDL_TIE_CXX = @OMNIORB_IDL_TIE_CXX@
+OMNIORB_IDL_TIE_H = @OMNIORB_IDL_TIE_H@
+OMNIORB_INCLUDES = @OMNIORB_INCLUDES@
+OMNIORB_LIBS = @OMNIORB_LIBS@
+OMNIORB_PACOIDLCXXFLAGS = @OMNIORB_PACOIDLCXXFLAGS@
+OMNIORB_ROOT = @OMNIORB_ROOT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PACOIDLCXXFLAGS = @PACOIDLCXXFLAGS@
+PADDERHOME = @PADDERHOME@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PDFLATEX = @PDFLATEX@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM_INCLUDES = @PLATFORM_INCLUDES@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
+PYQT_INCLUDES = @PYQT_INCLUDES@
+PYQT_LIBS = @PYQT_LIBS@
+PYQT_SIPFLAGS = @PYQT_SIPFLAGS@
+PYQT_SIPS = @PYQT_SIPS@
+PYRCC = @PYRCC@
+PYTHON = @PYTHON@
+PYTHONHOME = @PYTHONHOME@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDES = @PYTHON_INCLUDES@
+PYTHON_LIBS = @PYTHON_LIBS@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_SITE = @PYTHON_SITE@
+PYTHON_SITE_EXEC = @PYTHON_SITE_EXEC@
+PYTHON_SITE_INSTALL = @PYTHON_SITE_INSTALL@
+PYTHON_SITE_PACKAGE = @PYTHON_SITE_PACKAGE@
+PYTHON_VERSION = @PYTHON_VERSION@
+PYUIC = @PYUIC@
+QRCC = @QRCC@
+QTDIR = @QTDIR@
+QT_ASSISTANT_INCLUDES = @QT_ASSISTANT_INCLUDES@
+QT_ASSISTANT_LIBS = @QT_ASSISTANT_LIBS@
+QT_CORE_LIBS = @QT_CORE_LIBS@
+QT_GUI_LIBS = @QT_GUI_LIBS@
+QT_INCLUDES = @QT_INCLUDES@
+QT_LIBS = @QT_LIBS@
+QT_LIB_DIR = @QT_LIB_DIR@
+QT_MT_INCLUDES = @QT_MT_INCLUDES@
+QT_MT_LIBS = @QT_MT_LIBS@
+QT_OTHER_LIBS = @QT_OTHER_LIBS@
+QT_ROOT = @QT_ROOT@
+QT_VERSION = @QT_VERSION@
+QT_VERSION_ID = @QT_VERSION_ID@
+QWT_INCLUDES = @QWT_INCLUDES@
+QWT_LIBS = @QWT_LIBS@
+RANLIB = @RANLIB@
+ROOT_BUILDDIR = @ROOT_BUILDDIR@
+ROOT_SRCDIR = @ROOT_SRCDIR@
+RST2HTML = @RST2HTML@
+SED = @SED@
+SETX = @SETX@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIP = @SIP@
+SIP_INCLUDES = @SIP_INCLUDES@
+SIP_LIBS = @SIP_LIBS@
+SIP_VERSION = @SIP_VERSION@
+SIP_VERSION_ID = @SIP_VERSION_ID@
+SPHINX = @SPHINX@
+STDLIB = @STDLIB@
+STRIP = @STRIP@
+SWIG = @SWIG@
+SWIG_FLAGS = @SWIG_FLAGS@
+TBB_INCLUDES = @TBB_INCLUDES@
+TBB_LIBS = @TBB_LIBS@
+TEMP = @TEMP@
+UIC = @UIC@
+VERSION = @VERSION@
+VERSION_DEV = @VERSION_DEV@
+VTKPY_MODULES = @VTKPY_MODULES@
+VTK_INCLUDES = @VTK_INCLUDES@
+VTK_LIBS = @VTK_LIBS@
+WITHMPI = @WITHMPI@
+XMKMF = @XMKMF@
+XVERSION = @XVERSION@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_FC = @ac_ct_FC@
+acx_pthread_config = @acx_pthread_config@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = $(prefix)/bin/salome
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+
+# Documentation directory
+docdir = $(datadir)/doc/salome
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = $(prefix)/lib@LIB_LOCATION_SUFFIX@/salome
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+mpi2_ok = @mpi2_ok@
+mpi_ok = @mpi_ok@
+oldincludedir = @oldincludedir@
+para_path = @para_path@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = doc
+
+# ============================================================
+# The following is to avoid PACKAGE_... env variable
+# redefinition compilation warnings
+# ============================================================
+#
+AM_CXXFLAGS = @KERNEL_CXXFLAGS@ -include SALOMEconfig.h
+AM_CPPFLAGS = @KERNEL_CXXFLAGS@ -include SALOMEconfig.h
+
+# ============================================================
+# This file defines the common definitions used in several
+# Makefile. This file must be included, if needed, by the file
+# Makefile.am.
+# ============================================================
+# Standard directory for installation
+#
+salomeincludedir = $(includedir)/salome
+salomescriptdir = $(bindir)
+salomepythondir = $(pythondir)/salome
+salomepyexecdir = $(pyexecdir)/salome
+
+# Root directory of the python packages of SMESH
+smeshpypkgdir = $(salomepythondir)/salome/smesh
+
+# Directory for installing SALOME plugins files
+salomepluginsdir = $(prefix)/share/salome/plugins/@MODULE_NAME@
+
+# Directory for installing idl files
+salomeidldir = $(prefix)/idl/salome
+
+# Directory for installing resource files
+salomeresdir = $(prefix)/share/salome/resources/@MODULE_NAME@
+
+# Directories for installing admin files
+admlocaldir = $(prefix)/adm_local
+admlocalunixdir = $(admlocaldir)/unix
+admlocalm4dir = $(admlocaldir)/unix/config_files
+
+# Shared modules installation directory
+sharedpkgpythondir = $(salomepythondir)/shared_modules
+
+# common rules
+
+# ============================================================
+# Cmake files wildcard (to add then to the distribution)
+# ============================================================
+CMAKEFILES = $(notdir $(wildcard $(srcdir)/CMakeLists.txt))
+
+# extra distributed files
+EXTRA_DIST = $(MOC_FILES:%_moc.cxx=%.h) $(QRC_FILES:qrc_%.cxx=%.qrc) \
+       $(UIC_FILES:ui_%.h=%.ui) $(nodist_salomeres_DATA:%.qm=%.ts) \
+       $(CMAKEFILES) $(UIPY_FILES:%.py=%.ui)
+UIPY_FILES = MGCleanerPlugDialog.py  MGCleanerViewText.py 
+salomeplugins_PYTHON = \
+       MGCleanerMonPlugDialog.py\
+       MGCleanerMonViewText.py\
+       MGCleanerplug_plugin.py 
+
+nodist_salomeplugins_PYTHON = $(UIPY_FILES)
+CLEANFILES = $(UIPY_FILES)
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(top_srcdir)/adm_local/unix/make_common_starter.am $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Tools/MGCleanerPlug/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu src/Tools/MGCleanerPlug/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+install-nodist_salomepluginsPYTHON: $(nodist_salomeplugins_PYTHON)
+       @$(NORMAL_INSTALL)
+       test -z "$(salomepluginsdir)" || $(MKDIR_P) "$(DESTDIR)$(salomepluginsdir)"
+       @list='$(nodist_salomeplugins_PYTHON)'; dlist=; list2=; test -n "$(salomepluginsdir)" || list=; \
+       for p in $$list; do \
+         if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \
+         if test -f $$b$$p; then \
+           $(am__strip_dir) \
+           dlist="$$dlist $$f"; \
+           list2="$$list2 $$b$$p"; \
+         else :; fi; \
+       done; \
+       for file in $$list2; do echo $$file; done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(salomepluginsdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(salomepluginsdir)" || exit $$?; \
+       done || exit $$?; \
+       if test -n "$$dlist"; then \
+         if test -z "$(DESTDIR)"; then \
+           PYTHON=$(PYTHON) $(py_compile) --basedir "$(salomepluginsdir)" $$dlist; \
+         else \
+           PYTHON=$(PYTHON) $(py_compile) --destdir "$(DESTDIR)" --basedir "$(salomepluginsdir)" $$dlist; \
+         fi; \
+       else :; fi
+
+uninstall-nodist_salomepluginsPYTHON:
+       @$(NORMAL_UNINSTALL)
+       @list='$(nodist_salomeplugins_PYTHON)'; test -n "$(salomepluginsdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       test -n "$$files" || exit 0; \
+       filesc=`echo "$$files" | sed 's|$$|c|'`; \
+       fileso=`echo "$$files" | sed 's|$$|o|'`; \
+       echo " ( cd '$(DESTDIR)$(salomepluginsdir)' && rm -f" $$files ")"; \
+       cd "$(DESTDIR)$(salomepluginsdir)" && rm -f $$files || exit $$?; \
+       echo " ( cd '$(DESTDIR)$(salomepluginsdir)' && rm -f" $$filesc ")"; \
+       cd "$(DESTDIR)$(salomepluginsdir)" && rm -f $$filesc || exit $$?; \
+       echo " ( cd '$(DESTDIR)$(salomepluginsdir)' && rm -f" $$fileso ")"; \
+       cd "$(DESTDIR)$(salomepluginsdir)" && rm -f $$fileso
+install-salomepluginsPYTHON: $(salomeplugins_PYTHON)
+       @$(NORMAL_INSTALL)
+       test -z "$(salomepluginsdir)" || $(MKDIR_P) "$(DESTDIR)$(salomepluginsdir)"
+       @list='$(salomeplugins_PYTHON)'; dlist=; list2=; test -n "$(salomepluginsdir)" || list=; \
+       for p in $$list; do \
+         if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \
+         if test -f $$b$$p; then \
+           $(am__strip_dir) \
+           dlist="$$dlist $$f"; \
+           list2="$$list2 $$b$$p"; \
+         else :; fi; \
+       done; \
+       for file in $$list2; do echo $$file; done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(salomepluginsdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(salomepluginsdir)" || exit $$?; \
+       done || exit $$?; \
+       if test -n "$$dlist"; then \
+         if test -z "$(DESTDIR)"; then \
+           PYTHON=$(PYTHON) $(py_compile) --basedir "$(salomepluginsdir)" $$dlist; \
+         else \
+           PYTHON=$(PYTHON) $(py_compile) --destdir "$(DESTDIR)" --basedir "$(salomepluginsdir)" $$dlist; \
+         fi; \
+       else :; fi
+
+uninstall-salomepluginsPYTHON:
+       @$(NORMAL_UNINSTALL)
+       @list='$(salomeplugins_PYTHON)'; test -n "$(salomepluginsdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       test -n "$$files" || exit 0; \
+       filesc=`echo "$$files" | sed 's|$$|c|'`; \
+       fileso=`echo "$$files" | sed 's|$$|o|'`; \
+       echo " ( cd '$(DESTDIR)$(salomepluginsdir)' && rm -f" $$files ")"; \
+       cd "$(DESTDIR)$(salomepluginsdir)" && rm -f $$files || exit $$?; \
+       echo " ( cd '$(DESTDIR)$(salomepluginsdir)' && rm -f" $$filesc ")"; \
+       cd "$(DESTDIR)$(salomepluginsdir)" && rm -f $$filesc || exit $$?; \
+       echo " ( cd '$(DESTDIR)$(salomepluginsdir)' && rm -f" $$fileso ")"; \
+       cd "$(DESTDIR)$(salomepluginsdir)" && rm -f $$fileso
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+       @fail= failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           dot_seen=yes; \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+       @fail= failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       rev=''; for subdir in $$list; do \
+         if test "$$subdir" = "."; then :; else \
+           rev="$$subdir $$rev"; \
+         fi; \
+       done; \
+       rev="$$rev ."; \
+       target=`echo $@ | sed s/-recursive//`; \
+       for subdir in $$rev; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done && test -z "$$fail"
+tags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+       done
+ctags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+       done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+         include_option=--etags-include; \
+         empty_fix=.; \
+       else \
+         include_option=--include; \
+         empty_fix=; \
+       fi; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test ! -f $$subdir/TAGS || \
+             set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+         fi; \
+       done; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test -d "$(distdir)/$$subdir" \
+           || $(MKDIR_P) "$(distdir)/$$subdir" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+           $(am__relativize); \
+           new_distdir=$$reldir; \
+           dir1=$$subdir; dir2="$(top_distdir)"; \
+           $(am__relativize); \
+           new_top_distdir=$$reldir; \
+           echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+           echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+           ($(am__cd) $$subdir && \
+             $(MAKE) $(AM_MAKEFLAGS) \
+               top_distdir="$$new_top_distdir" \
+               distdir="$$new_distdir" \
+               am__remove_distdir=: \
+               am__skip_length_check=: \
+               am__skip_mode_fix=: \
+               distdir) \
+             || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+       for dir in "$(DESTDIR)$(salomepluginsdir)" "$(DESTDIR)$(salomepluginsdir)"; do \
+         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+       done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-nodist_salomepluginsPYTHON \
+       install-salomepluginsPYTHON
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool \
+       mostlyclean-local
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-nodist_salomepluginsPYTHON \
+       uninstall-salomepluginsPYTHON
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+       install-am install-strip tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+       all all-am check check-am clean clean-generic clean-libtool \
+       ctags ctags-recursive distclean distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am html \
+       html-am info info-am install install-am install-data \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-nodist_salomepluginsPYTHON \
+       install-pdf install-pdf-am install-ps install-ps-am \
+       install-salomepluginsPYTHON install-strip installcheck \
+       installcheck-am installdirs installdirs-am maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-generic \
+       mostlyclean-libtool mostlyclean-local pdf pdf-am ps ps-am tags \
+       tags-recursive uninstall uninstall-am \
+       uninstall-nodist_salomepluginsPYTHON \
+       uninstall-salomepluginsPYTHON
+
+
+# meta object implementation files generation (moc)
+%_moc.cxx: %.h
+       $(MOC) $< -o $@
+
+# translation (*.qm) files generation (lrelease)
+%.qm: %.ts
+       $(LRELEASE) $< -qm $@
+
+# resource files generation (qrcc)
+qrc_%.cxx: %.qrc
+       $(QRCC) $< -o $@ -name $(*F)
+
+# qt forms files generation (uic)
+ui_%.h: %.ui
+       $(UIC) -o $@ $<
+
+# customize clean operation
+mostlyclean-local:
+       rm -f @builddir@/*_moc.cxx
+       rm -f @builddir@/*.qm
+       rm -f @builddir@/ui_*.h
+       rm -f @builddir@/qrc_*.cxx
+
+# tests
+tests: unittest
+
+unittest: $(UNIT_TEST_PROG)
+       @if test "x$(UNIT_TEST_PROG)" != "x"; then \
+           $(UNIT_TEST_PROG);                     \
+       fi;
+
+%.py : %.ui
+       $(PYUIC) $< -o $@
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/Tools/MGCleanerPlug/Tolerance.png b/src/Tools/MGCleanerPlug/Tolerance.png
new file mode 100644 (file)
index 0000000..d8fb162
Binary files /dev/null and b/src/Tools/MGCleanerPlug/Tolerance.png differ
diff --git a/src/Tools/MGCleanerPlug/doc/Advanced_params.rst b/src/Tools/MGCleanerPlug/doc/Advanced_params.rst
new file mode 100644 (file)
index 0000000..3fb8316
--- /dev/null
@@ -0,0 +1,42 @@
+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 MG-Cleaner 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 ), MG-Cleaner 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), MG-Cleaner will not try to move the initial given vertices (along an edge, a ridge or onto the surface), hence MG-Cleaner 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.
+
+.. image:: images/Tolerance.png
+   :align: center
+
+
+This parameter P enables the user to specify the maximal chordal deviation  E relatively to the local curvature. the maximal chordal deviation will be set to E=P x r (r is the radius of the circumcercle) if the units parameter is set to relative or E=P if the units parameter is set to absolute.
+
+
+  - **Ridge angle**
+
+This parameter specifies the angular values  for the automatic detection of ridges and corners. A ridge is automatically detected if the angle between the normal vectors of two adjacent faces exceeds this value.
+
+
+  - **Maximal/Minimal size around vertices**
+
+These two parameters allow the user to prescribe a Maximal/Minimal size for the mesh elements, ie the lengths of the edges. 
+
+
+  - **Mesh gradation**
+This paramater P controls the element size variation : MG-Cleaner 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, MG-Cleaner 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/MGCleanerPlug/doc/Generics_params.rst b/src/Tools/MGCleanerPlug/doc/Generics_params.rst
new file mode 100644 (file)
index 0000000..0a0a08d
--- /dev/null
@@ -0,0 +1,22 @@
+Generic  Options
+=================
+
+These options are not meshing options but allow the user to configure control parameters for MG-Cleaner.
+
+
+- **Verbosity Level**
+
+This parameter (between 0 and 10) indicates the amount of information that MG-Cleaner 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 MG-Cleaner. - 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** 
+
+You can change the file used to store the remeshing hypothesis. see paragraph :ref:`hypothesis-label` for further informations.
+
+.. image:: images/Generic.png
+   :align: center
+
diff --git a/src/Tools/MGCleanerPlug/doc/Makefile.am b/src/Tools/MGCleanerPlug/doc/Makefile.am
new file mode 100644 (file)
index 0000000..d122e79
--- /dev/null
@@ -0,0 +1,70 @@
+# Makefile for Sphinx documentation
+#
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+MGCleanerdocdir=$(docdir)/gui/SMESH/MGCleaner
+
+RSTFILES = lct.rst \
+          index.rst \
+          editHypo.rst \
+          Mandatory_params.rst \
+          Generics_params.rst \
+          Advanced_params.rst
+
+EXTRA_DIST += $(RSTFILES) images files
+
+# You can set these variables from the command line.
+SPHINXOPTS    =
+SOURCEDIR     = $(srcdir)
+SPHINXBUILD   = sphinx-build
+PAPER         =
+BUILDDIR      = _build
+CONF_FILE_DIR = $(top_builddir)/src/Tools/MGCleanerPlug/doc
+
+# Internal variables.
+PAPEROPT_a4     = -D latex_paper_size=a4
+PAPEROPT_letter = -D latex_paper_size=letter
+ALLSPHINXOPTS   = -d $(BUILDDIR)/doctrees -c $(CONF_FILE_DIR) $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) $(SOURCEDIR)
+
+.PHONY: help clean html latexpdf 
+
+help:
+       @echo "Please use \`make <target>' where <target> is one of"
+       @echo "  html       to make standalone HTML files"
+       @echo "  dirhtml    to make HTML files named index.html in directories"
+       @echo "  singlehtml to make a single large HTML file"
+       @echo "  pickle     to make pickle files"
+       @echo "  json       to make JSON files"
+       @echo "  htmlhelp   to make HTML files and a HTML help project"
+       @echo "  qthelp     to make HTML files and a qthelp project"
+       @echo "  devhelp    to make HTML files and a Devhelp project"
+       @echo "  epub       to make an epub"
+       @echo "  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
+       @echo "  latexpdf   to make LaTeX files and run them through pdflatex"
+       @echo "  text       to make text files"
+       @echo "  man        to make manual pages"
+       @echo "  changes    to make an overview of all changed/added/deprecated items"
+       @echo "  linkcheck  to check all external links for integrity"
+       @echo "  doctest    to run all doctests embedded in the documentation (if enabled)"
+
+install-data-local: $(BUILDDIR)/html/index.html
+       -test -z $(MGCleanerdocdir) || mkdir -p $(MGCleanerdocdir) && cp -rf $(BUILDDIR)/html/* $(MGCleanerdocdir) ;
+
+uninstall-local:
+       -test -d $(MGCleanerdocdir) && chmod -R +w $(MGCleanerdocdir) && rm -rf $(MGCleanerdocdir)/*
+
+clean-local:
+       -rm -rf $(BUILDDIR)/*
+
+$(BUILDDIR)/html/index.html:
+       $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
+       @echo
+       @echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
+
+latexpdf:
+       $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+       @echo "Running LaTeX files through pdflatex..."
+       $(MAKE) -C $(BUILDDIR)/latex all-pdf
+       @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
+
diff --git a/src/Tools/MGCleanerPlug/doc/Makefile.in b/src/Tools/MGCleanerPlug/doc/Makefile.in
new file mode 100644 (file)
index 0000000..20f5837
--- /dev/null
@@ -0,0 +1,746 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Makefile for Sphinx documentation
+#
+
+# Copyright (C) 2007-2013  CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# 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.
+#
+# 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
+#
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+       $(srcdir)/conf.py.in \
+       $(top_srcdir)/adm_local/unix/make_common_starter.am
+subdir = src/Tools/MGCleanerPlug/doc
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps =  \
+       $(top_srcdir)/adm_local/unix/config_files/check_Platform.m4 \
+       $(top_srcdir)/adm_local/unix/config_files/check_cgal.m4 \
+       $(top_srcdir)/adm_local/unix/config_files/check_cgns.m4 \
+       $(top_srcdir)/adm_local/unix/config_files/check_padder.m4 \
+       $(top_srcdir)/adm_local/unix/config_files/check_qwt.m4 \
+       $(top_srcdir)/adm_local/unix/config_files/libtool.m4 \
+       $(top_srcdir)/adm_local/unix/config_files/ltoptions.m4 \
+       $(top_srcdir)/adm_local/unix/config_files/ltsugar.m4 \
+       $(top_srcdir)/adm_local/unix/config_files/ltversion.m4 \
+       $(top_srcdir)/adm_local/unix/config_files/lt~obsolete.m4 \
+       $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES = conf.py
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BINDIR = @BINDIR@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LIBS = @BOOST_LIBS@
+BOOST_LIBSUFFIX = @BOOST_LIBSUFFIX@
+BOOST_LIB_REGEX = @BOOST_LIB_REGEX@
+BOOST_LIB_SIGNALS = @BOOST_LIB_SIGNALS@
+BOOST_LIB_SYSTEM = @BOOST_LIB_SYSTEM@
+BOOST_LIB_THREAD = @BOOST_LIB_THREAD@
+BOOST_PROGRAM_OPTIONS_LIB = @BOOST_PROGRAM_OPTIONS_LIB@
+CASROOT = @CASROOT@
+CAS_CPPFLAGS = @CAS_CPPFLAGS@
+CAS_CXXFLAGS = @CAS_CXXFLAGS@
+CAS_DATADIR = @CAS_DATADIR@
+CAS_DATAEXCHANGE = @CAS_DATAEXCHANGE@
+CAS_KERNEL = @CAS_KERNEL@
+CAS_LDFLAGS = @CAS_LDFLAGS@
+CAS_LDPATH = @CAS_LDPATH@
+CAS_LIBDIR = @CAS_LIBDIR@
+CAS_MATH = @CAS_MATH@
+CAS_MODELER = @CAS_MODELER@
+CAS_OCAF = @CAS_OCAF@
+CAS_OCAFVIS = @CAS_OCAFVIS@
+CAS_STDPLUGIN = @CAS_STDPLUGIN@
+CAS_TKTopAlgo = @CAS_TKTopAlgo@
+CAS_VERSION_DEVELOPMENT = @CAS_VERSION_DEVELOPMENT@
+CAS_VIEWER = @CAS_VIEWER@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CGALHOME = @CGALHOME@
+CGAL_INCLUDES = @CGAL_INCLUDES@
+CGAL_LIBS = @CGAL_LIBS@
+CGNS_INCLUDES = @CGNS_INCLUDES@
+CGNS_LIBS = @CGNS_LIBS@
+CORBA_CXXFLAGS = @CORBA_CXXFLAGS@
+CORBA_INCLUDES = @CORBA_INCLUDES@
+CORBA_LIBS = @CORBA_LIBS@
+CORBA_ROOT = @CORBA_ROOT@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXTMPDPTHFLAGS = @CXXTMPDPTHFLAGS@
+CXX_DEPEND_FLAG = @CXX_DEPEND_FLAG@
+CYGPATH_W = @CYGPATH_W@
+C_DEPEND_FLAG = @C_DEPEND_FLAG@
+DEFINED_F77INT64 = @DEFINED_F77INT64@
+DEFS = @DEFS@
+DEPCC = @DEPCC@
+DEPCXX = @DEPCXX@
+DEPCXXFLAGS = @DEPCXXFLAGS@
+DEPDIR = @DEPDIR@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DOXYGEN_PYTHON_EXTENSION = @DOXYGEN_PYTHON_EXTENSION@
+DOXYGEN_SUPPORT_STL = @DOXYGEN_SUPPORT_STL@
+DOXYGEN_WITH_PYTHON = @DOXYGEN_WITH_PYTHON@
+DOXYGEN_WITH_STL = @DOXYGEN_WITH_STL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DVIPS = @DVIPS@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_MULTIPR = @ENABLE_MULTIPR@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FC = @FC@
+FCFLAGS = @FCFLAGS@
+FCLIBS = @FCLIBS@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+FLIBS = @FLIBS@
+GEOM_CXXFLAGS = @GEOM_CXXFLAGS@
+GEOM_LDFLAGS = @GEOM_LDFLAGS@
+GEOM_ROOT_DIR = @GEOM_ROOT_DIR@
+GLOBAL_INSTALL = @GLOBAL_INSTALL@
+GREP = @GREP@
+GUI_CXXFLAGS = @GUI_CXXFLAGS@
+GUI_LDFLAGS = @GUI_LDFLAGS@
+GUI_ROOT_DIR = @GUI_ROOT_DIR@
+HAVE_SSTREAM = @HAVE_SSTREAM@
+HDF5HOME = @HDF5HOME@
+HDF5_INCLUDES = @HDF5_INCLUDES@
+HDF5_LIBS = @HDF5_LIBS@
+HDF5_MT_LIBS = @HDF5_MT_LIBS@
+IDL = @IDL@
+IDLCXXFLAGS = @IDLCXXFLAGS@
+IDLPYFLAGS = @IDLPYFLAGS@
+IDL_CLN_CXX = @IDL_CLN_CXX@
+IDL_CLN_H = @IDL_CLN_H@
+IDL_CLN_OBJ = @IDL_CLN_OBJ@
+IDL_SRV_CXX = @IDL_SRV_CXX@
+IDL_SRV_H = @IDL_SRV_H@
+IDL_SRV_OBJ = @IDL_SRV_OBJ@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+KERNEL_CXXFLAGS = @KERNEL_CXXFLAGS@
+KERNEL_LDFLAGS = @KERNEL_LDFLAGS@
+KERNEL_ROOT_DIR = @KERNEL_ROOT_DIR@
+KERNEL_SITE_DIR = @KERNEL_SITE_DIR@
+LATEX = @LATEX@
+LD = @LD@
+LDEXPDYNFLAGS = @LDEXPDYNFLAGS@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_INCLUDES = @LIBXML_INCLUDES@
+LIBXML_LIBS = @LIBXML_LIBS@
+LIB_LOCATION_SUFFIX = @LIB_LOCATION_SUFFIX@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LRELEASE = @LRELEASE@
+LTLIBOBJS = @LTLIBOBJS@
+MACHINE = @MACHINE@
+MAKEINFO = @MAKEINFO@
+MDUMP = @MDUMP@
+MED3HOME = @MED3HOME@
+MED3_INCLUDES = @MED3_INCLUDES@
+MED3_LIBS = @MED3_LIBS@
+MED3_LIBS_C_ONLY = @MED3_LIBS_C_ONLY@
+MED3_MT_LIBS = @MED3_MT_LIBS@
+MED_CPPFLAGS = @MED_CPPFLAGS@
+MED_CXXFLAGS = @MED_CXXFLAGS@
+MED_LDFLAGS = @MED_LDFLAGS@
+MED_ROOT_DIR = @MED_ROOT_DIR@
+MKDIR_P = @MKDIR_P@
+MOC = @MOC@
+MODULE_NAME = @MODULE_NAME@
+MPI_INCLUDES = @MPI_INCLUDES@
+MPI_LIBS = @MPI_LIBS@
+MULTIPR_CPPFLAGS = @MULTIPR_CPPFLAGS@
+MULTIPR_LIBS = @MULTIPR_LIBS@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OGL_INCLUDES = @OGL_INCLUDES@
+OGL_LIBS = @OGL_LIBS@
+OMNIORB_CXXFLAGS = @OMNIORB_CXXFLAGS@
+OMNIORB_IDL = @OMNIORB_IDL@
+OMNIORB_IDLCXXFLAGS = @OMNIORB_IDLCXXFLAGS@
+OMNIORB_IDLPYFLAGS = @OMNIORB_IDLPYFLAGS@
+OMNIORB_IDL_CLN_CXX = @OMNIORB_IDL_CLN_CXX@
+OMNIORB_IDL_CLN_H = @OMNIORB_IDL_CLN_H@
+OMNIORB_IDL_CLN_OBJ = @OMNIORB_IDL_CLN_OBJ@
+OMNIORB_IDL_SRV_CXX = @OMNIORB_IDL_SRV_CXX@
+OMNIORB_IDL_SRV_H = @OMNIORB_IDL_SRV_H@
+OMNIORB_IDL_SRV_OBJ = @OMNIORB_IDL_SRV_OBJ@
+OMNIORB_IDL_TIE_CXX = @OMNIORB_IDL_TIE_CXX@
+OMNIORB_IDL_TIE_H = @OMNIORB_IDL_TIE_H@
+OMNIORB_INCLUDES = @OMNIORB_INCLUDES@
+OMNIORB_LIBS = @OMNIORB_LIBS@
+OMNIORB_PACOIDLCXXFLAGS = @OMNIORB_PACOIDLCXXFLAGS@
+OMNIORB_ROOT = @OMNIORB_ROOT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PACOIDLCXXFLAGS = @PACOIDLCXXFLAGS@
+PADDERHOME = @PADDERHOME@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PDFLATEX = @PDFLATEX@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM_INCLUDES = @PLATFORM_INCLUDES@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
+PYQT_INCLUDES = @PYQT_INCLUDES@
+PYQT_LIBS = @PYQT_LIBS@
+PYQT_SIPFLAGS = @PYQT_SIPFLAGS@
+PYQT_SIPS = @PYQT_SIPS@
+PYRCC = @PYRCC@
+PYTHON = @PYTHON@
+PYTHONHOME = @PYTHONHOME@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDES = @PYTHON_INCLUDES@
+PYTHON_LIBS = @PYTHON_LIBS@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_SITE = @PYTHON_SITE@
+PYTHON_SITE_EXEC = @PYTHON_SITE_EXEC@
+PYTHON_SITE_INSTALL = @PYTHON_SITE_INSTALL@
+PYTHON_SITE_PACKAGE = @PYTHON_SITE_PACKAGE@
+PYTHON_VERSION = @PYTHON_VERSION@
+PYUIC = @PYUIC@
+QRCC = @QRCC@
+QTDIR = @QTDIR@
+QT_ASSISTANT_INCLUDES = @QT_ASSISTANT_INCLUDES@
+QT_ASSISTANT_LIBS = @QT_ASSISTANT_LIBS@
+QT_CORE_LIBS = @QT_CORE_LIBS@
+QT_GUI_LIBS = @QT_GUI_LIBS@
+QT_INCLUDES = @QT_INCLUDES@
+QT_LIBS = @QT_LIBS@
+QT_LIB_DIR = @QT_LIB_DIR@
+QT_MT_INCLUDES = @QT_MT_INCLUDES@
+QT_MT_LIBS = @QT_MT_LIBS@
+QT_OTHER_LIBS = @QT_OTHER_LIBS@
+QT_ROOT = @QT_ROOT@
+QT_VERSION = @QT_VERSION@
+QT_VERSION_ID = @QT_VERSION_ID@
+QWT_INCLUDES = @QWT_INCLUDES@
+QWT_LIBS = @QWT_LIBS@
+RANLIB = @RANLIB@
+ROOT_BUILDDIR = @ROOT_BUILDDIR@
+ROOT_SRCDIR = @ROOT_SRCDIR@
+RST2HTML = @RST2HTML@
+SED = @SED@
+SETX = @SETX@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIP = @SIP@
+SIP_INCLUDES = @SIP_INCLUDES@
+SIP_LIBS = @SIP_LIBS@
+SIP_VERSION = @SIP_VERSION@
+SIP_VERSION_ID = @SIP_VERSION_ID@
+SPHINX = @SPHINX@
+STDLIB = @STDLIB@
+STRIP = @STRIP@
+SWIG = @SWIG@
+SWIG_FLAGS = @SWIG_FLAGS@
+TBB_INCLUDES = @TBB_INCLUDES@
+TBB_LIBS = @TBB_LIBS@
+TEMP = @TEMP@
+UIC = @UIC@
+VERSION = @VERSION@
+VERSION_DEV = @VERSION_DEV@
+VTKPY_MODULES = @VTKPY_MODULES@
+VTK_INCLUDES = @VTK_INCLUDES@
+VTK_LIBS = @VTK_LIBS@
+WITHMPI = @WITHMPI@
+XMKMF = @XMKMF@
+XVERSION = @XVERSION@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_FC = @ac_ct_FC@
+acx_pthread_config = @acx_pthread_config@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = $(prefix)/bin/salome
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+
+# Documentation directory
+docdir = $(datadir)/doc/salome
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = $(prefix)/lib@LIB_LOCATION_SUFFIX@/salome
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+mpi2_ok = @mpi2_ok@
+mpi_ok = @mpi_ok@
+oldincludedir = @oldincludedir@
+para_path = @para_path@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+# ============================================================
+# The following is to avoid PACKAGE_... env variable
+# redefinition compilation warnings
+# ============================================================
+#
+AM_CXXFLAGS = @KERNEL_CXXFLAGS@ -include SALOMEconfig.h
+AM_CPPFLAGS = @KERNEL_CXXFLAGS@ -include SALOMEconfig.h
+
+# ============================================================
+# This file defines the common definitions used in several
+# Makefile. This file must be included, if needed, by the file
+# Makefile.am.
+# ============================================================
+# Standard directory for installation
+#
+salomeincludedir = $(includedir)/salome
+salomescriptdir = $(bindir)
+salomepythondir = $(pythondir)/salome
+salomepyexecdir = $(pyexecdir)/salome
+
+# Root directory of the python packages of SMESH
+smeshpypkgdir = $(salomepythondir)/salome/smesh
+
+# Directory for installing SALOME plugins files
+salomepluginsdir = $(prefix)/share/salome/plugins/@MODULE_NAME@
+
+# Directory for installing idl files
+salomeidldir = $(prefix)/idl/salome
+
+# Directory for installing resource files
+salomeresdir = $(prefix)/share/salome/resources/@MODULE_NAME@
+
+# Directories for installing admin files
+admlocaldir = $(prefix)/adm_local
+admlocalunixdir = $(admlocaldir)/unix
+admlocalm4dir = $(admlocaldir)/unix/config_files
+
+# Shared modules installation directory
+sharedpkgpythondir = $(salomepythondir)/shared_modules
+
+# common rules
+
+# ============================================================
+# Cmake files wildcard (to add then to the distribution)
+# ============================================================
+CMAKEFILES = $(notdir $(wildcard $(srcdir)/CMakeLists.txt))
+
+# extra distributed files
+EXTRA_DIST = $(MOC_FILES:%_moc.cxx=%.h) $(QRC_FILES:qrc_%.cxx=%.qrc) \
+       $(UIC_FILES:ui_%.h=%.ui) $(nodist_salomeres_DATA:%.qm=%.ts) \
+       $(CMAKEFILES) $(RSTFILES) images files
+MGCleanerdocdir = $(docdir)/gui/SMESH/MGCleaner
+RSTFILES = lct.rst \
+          index.rst \
+          editHypo.rst \
+          Mandatory_params.rst \
+          Generics_params.rst \
+          Advanced_params.rst
+
+
+# You can set these variables from the command line.
+SPHINXOPTS = 
+SOURCEDIR = $(srcdir)
+SPHINXBUILD = sphinx-build
+PAPER = 
+BUILDDIR = _build
+CONF_FILE_DIR = $(top_builddir)/src/Tools/MGCleanerPlug/doc
+
+# Internal variables.
+PAPEROPT_a4 = -D latex_paper_size=a4
+PAPEROPT_letter = -D latex_paper_size=letter
+ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees -c $(CONF_FILE_DIR) $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) $(SOURCEDIR)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(top_srcdir)/adm_local/unix/make_common_starter.am $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Tools/MGCleanerPlug/doc/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu src/Tools/MGCleanerPlug/doc/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+conf.py: $(top_builddir)/config.status $(srcdir)/conf.py.in
+       cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-local mostlyclean-am
+
+distclean: distclean-am
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-data-local
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool \
+       mostlyclean-local
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-local
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+       clean-local distclean distclean-generic distclean-libtool \
+       distdir dvi dvi-am html html-am info info-am install \
+       install-am install-data install-data-am install-data-local \
+       install-dvi install-dvi-am install-exec install-exec-am \
+       install-html install-html-am install-info install-info-am \
+       install-man install-pdf install-pdf-am install-ps \
+       install-ps-am install-strip installcheck installcheck-am \
+       installdirs maintainer-clean maintainer-clean-generic \
+       mostlyclean mostlyclean-generic mostlyclean-libtool \
+       mostlyclean-local pdf pdf-am ps ps-am uninstall uninstall-am \
+       uninstall-local
+
+
+# meta object implementation files generation (moc)
+%_moc.cxx: %.h
+       $(MOC) $< -o $@
+
+# translation (*.qm) files generation (lrelease)
+%.qm: %.ts
+       $(LRELEASE) $< -qm $@
+
+# resource files generation (qrcc)
+qrc_%.cxx: %.qrc
+       $(QRCC) $< -o $@ -name $(*F)
+
+# qt forms files generation (uic)
+ui_%.h: %.ui
+       $(UIC) -o $@ $<
+
+# customize clean operation
+mostlyclean-local:
+       rm -f @builddir@/*_moc.cxx
+       rm -f @builddir@/*.qm
+       rm -f @builddir@/ui_*.h
+       rm -f @builddir@/qrc_*.cxx
+
+# tests
+tests: unittest
+
+unittest: $(UNIT_TEST_PROG)
+       @if test "x$(UNIT_TEST_PROG)" != "x"; then \
+           $(UNIT_TEST_PROG);                     \
+       fi;
+
+.PHONY: help clean html latexpdf 
+
+help:
+       @echo "Please use \`make <target>' where <target> is one of"
+       @echo "  html       to make standalone HTML files"
+       @echo "  dirhtml    to make HTML files named index.html in directories"
+       @echo "  singlehtml to make a single large HTML file"
+       @echo "  pickle     to make pickle files"
+       @echo "  json       to make JSON files"
+       @echo "  htmlhelp   to make HTML files and a HTML help project"
+       @echo "  qthelp     to make HTML files and a qthelp project"
+       @echo "  devhelp    to make HTML files and a Devhelp project"
+       @echo "  epub       to make an epub"
+       @echo "  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
+       @echo "  latexpdf   to make LaTeX files and run them through pdflatex"
+       @echo "  text       to make text files"
+       @echo "  man        to make manual pages"
+       @echo "  changes    to make an overview of all changed/added/deprecated items"
+       @echo "  linkcheck  to check all external links for integrity"
+       @echo "  doctest    to run all doctests embedded in the documentation (if enabled)"
+
+install-data-local: $(BUILDDIR)/html/index.html
+       -test -z $(MGCleanerdocdir) || mkdir -p $(MGCleanerdocdir) && cp -rf $(BUILDDIR)/html/* $(MGCleanerdocdir) ;
+
+uninstall-local:
+       -test -d $(MGCleanerdocdir) && chmod -R +w $(MGCleanerdocdir) && rm -rf $(MGCleanerdocdir)/*
+
+clean-local:
+       -rm -rf $(BUILDDIR)/*
+
+$(BUILDDIR)/html/index.html:
+       $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
+       @echo
+       @echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
+
+latexpdf:
+       $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+       @echo "Running LaTeX files through pdflatex..."
+       $(MAKE) -C $(BUILDDIR)/latex all-pdf
+       @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/Tools/MGCleanerPlug/doc/Mandatory_params.rst b/src/Tools/MGCleanerPlug/doc/Mandatory_params.rst
new file mode 100644 (file)
index 0000000..f657c1d
--- /dev/null
@@ -0,0 +1,101 @@
+Simple Remeshing Options
+=========================
+
+simple case 
+-----------
+
+   All options, but the input mesh, have default values. however, **you have to specified these
+   simple options in order to drive yams and control remeshing parameters**. 
+
+   You can access Distene documentation by clicking on Help button.
+
+
+.. image:: images/Simple.png
+   :align: center
+
+
+- **Original Mesh**
+
+   You have to select a Mesh Object from Salome Object Browser or choose a .GMF file.
+
+
+Optimisation
+------------
+    
+This is the main remeshing Option.  Yams always does quality improvement. It is done by point smooting and edge swapping.  It can produce a regular mesh for finite element computation (initial mesh is a a geometrical mesh). In this case, the given surface trianglation is modified in accordance to a size map : an intrinsic size map is computed automatically. it is based on the surface proporties.  Yams is also able to  produce a geometrical mesh (initial mesh is a a mesh for finite element computation). In both case, It can coarsen or enrich the mesh.     
+
+   - **Quality improvement** 
+
+     If you activitate this option, Yams does only quality improvement.  
+
+     It is equivalent to Yams's batch option 0.
+
+   - **Pure Geometry Enrichement**
+
+     The given surface triangulation is enriched (no coarsening at all) in such away that the distance between the elements in the final mesh and those of the initial one is bounded by auser specified tolerance value. One should use this option, to enrich the mesh where purely geometrical features may be insuficiently fine, i.e. the resulting mesh will be least as fine as the input. Mesh and the geometric features will be refined if needed as specified by the other program parameters. The meshes obtained with those settings may not be suitable for computation.
+
+     It is equivalent to Yams's batch option G.
+
+   -  **Uniform subdivision**
+
+     A uniform subdivision of the given surface triangulation is performed : each triangle of the given surface triangulation is considered at and is divided into identical triangles.
+
+     It is equivalent to Yams's batch option U.
+
+   - **Smoothing**
+
+     A surface sandpapering without shrinkage of the given surface triangulation is performed, i.e., the high curvature variations of the given surface will be smoothed out without shrinking the volume in doing so. If ridges are defined, they will be kept as they are in the resulting mesh. It could modify the geometry.
+     It is equivalent to Yams's batch option S.
+
+   - **Geometrical Mesh : Coarsening** 
+
+     The given surface triangulation is modified in such a way that the distance between the elements in the final mesh and those of the initial one is bounded by a user specfied tolerance value.One should use this option, to coarsen when a purely geometrical mesh is needed. (a mesh that keeps and obeys its geometric features only.) The meshes obtained with this option are usually not suitable for computation because anisotropic elements may be generated
+
+     It is equivalent to Yams's batch option -2.
+
+   - **Geometrical Mesh : Coarsening and Enrichment** 
+
+     Yams coarses and enrichs meshes to obtain a purely geometrical mesh. The method is the same as above.
+
+     It is equivalent to Yams's batch option 2.
+
+   - **Mesh for finite element computation : Coarsening** 
+
+     The given surface triangulation is modified in accordance to a size map. The latter is the intrinsic size map (computed automatically and based on the surface properties, i.e. the local curvatures). One should use this option to coarsen  the mesh, when a regular mesh  for computation purposes is desired, i.e. a mesh with good aspect ratios or good quality elements.
+
+     It is equivalent to Yams's batch option -1.
+
+   - **Mesh for finite element computation : Coarsening and Enrichment**
+
+     One should use this option to coarsen  and enrich the mesh, when a regular mesh for computation purposes is desired, i.e. a mesh with good aspect ratios or good quality elements. The method is the same as above.
+
+     It is equivalent to Yams's batch option 1.
+   
+
+Units parameter
+---------------
+
+It indicates what reference is used for the values corresponding to size or distance specifications:
+If the Units parameter is absolute, values are relative to the bounding box,otherwise the tolerance parameter is expressed in model units. The bounding box size is defined as the length of the diagonal (lower left back icorner to upper right front corner).
+
+
+
+Chordal deviation tolerance parameter
+-------------------------------------
+
+This field enables the user to bound the maximal chordal deviation allowed, 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.
+
+.. image:: images/Tolerance.png
+   :align: center
+
+
+This parameter enables the user to specify the maximal chordal deviation epsilon max.
+
+it can be :
+  - relative : the maximal chordal deviation - epsilon max -is set to 0.001 x the parameter. by default, the parameter is set to 0.1 and the maximum deviation is also 0.1 x 1/1000 * the size of the bounding box,  which is equivalent to say that, for a bouding box of 1 meter, the maximal deviation is 0.1 mm.
+  - absolute : the maximal chordal deviation is the parameter itself. eg if the parameter equals 2, the maximal chordal deviation will be 2 (mm if the point coordonates are given in mm).
+
+Following that criterion:
+  - if the chordal deviation epsilon is smaller than epsilon max, it is acceptable to remove the considered point.
+  - if the chordal deviation epsilon is greater than epsilon max, the considered mesh face should be redifined by adding a point on the curve.
+
diff --git a/src/Tools/MGCleanerPlug/doc/conf.py.in b/src/Tools/MGCleanerPlug/doc/conf.py.in
new file mode 100644 (file)
index 0000000..b8f4307
--- /dev/null
@@ -0,0 +1,179 @@
+# -*- coding: utf-8 -*-
+#
+# MGCleaner PlugIn documentation build configuration file, created by
+# sphinx-quickstart on April 2013.
+#
+# This file is execfile()d with the current directory set to its containing dir.
+#
+# The contents of this file are pickled, so don't put values in the namespace
+# that aren't pickleable (module imports are okay, they're removed automatically).
+#
+# All configuration values have a default value; values that are commented out
+# serve to show the default value.
+
+import sys, os
+
+# 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']
+
+# 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 = 'MGCleaner Plug-in'
+copyright = '2013, CEA'
+
+# The default replacements for |version| and |release|, also used in various
+# other places throughout the built documents.
+#
+# The short X.Y version.
+version = '@VERSION@'
+# The full version, including alpha/beta/rc tags.
+release = '@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 style sheet to use for HTML and HTML Help pages. A file of that name
+# must exist either in Sphinx' static/ path, or in one of the custom paths
+# given in html_static_path.
+html_style = 'default.css'
+
+# 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 = 'MGCleanerPlug-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', 'MGCleanerPlugIn.tex', 'MGCleaner 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
diff --git a/src/Tools/MGCleanerPlug/doc/editHypo.rst b/src/Tools/MGCleanerPlug/doc/editHypo.rst
new file mode 100644 (file)
index 0000000..e030f5c
--- /dev/null
@@ -0,0 +1,60 @@
+.. _hypothesis-label:
+
+===========================
+How to save MG-Cleaner Parameters 
+===========================
+
+As MG-Cleaner hypothesis are not meshing hypothesis for Salome (but hypothesis for MG-Cleaner), parameters
+are stored in a special file. Default file is $HOME/.MGCleaner.dat. It is strongly recommended that you
+change this name if you want to preserve the way you obtain a mesh : This file is never cleaned.
+All sets of parameters are logged in it.
+
+
+- To save the current setting, click on "Save Params" pushbutton. 
+- A set of parameters is automatically written in the .MGCleaner.dat file when you run computation.  
+- Restoring the default settings can be done by pushing "Default Params". 
+- "Loading Params" will reload the last set of parameters
+
+
+
+**example of .MGCleaner.dat**
+
+
+.. code-block:: python
+
+   # Save intermediate params
+   # Params for mesh :
+   Optimisation ='Quality improvement Only (0)'
+   Units ='Relative'
+   Chordal_Tolerance_Deviation=1.0
+   Ridge_Detection=True
+   Split_Edge=False
+   Point_Smoothing=True
+   Geometrical_Approximation=0.04
+   Ridge_Angle=45.0
+   Maximum_Size=-2.0
+   Minimum_Size=-2.0
+   Mesh_Gradation=1.3
+   Verbosity=3
+   Memory=0
+   
+   
+   
+   # Params for Hypothese : anHypo_MGCleaner_0
+   # Params for mesh : Mesh_1
+   Optimisation ='Quality improvement Only (0)'
+   Units ='Relative'
+   Chordal_Tolerance_Deviation=1.0
+   Ridge_Detection=True
+   Split_Edge=False
+   Point_Smoothing=True
+   Geometrical_Approximation=0.04
+   Ridge_Angle=45.0
+   Maximum_Size=-2.0
+   Minimum_Size=-2.0
+   Mesh_Gradation=1.3
+   Verbosity=3
+   Memory=0
+
+
+
diff --git a/src/Tools/MGCleanerPlug/doc/files/mg-cleaner_user_manual.pdf b/src/Tools/MGCleanerPlug/doc/files/mg-cleaner_user_manual.pdf
new file mode 100644 (file)
index 0000000..a3907d2
Binary files /dev/null and b/src/Tools/MGCleanerPlug/doc/files/mg-cleaner_user_manual.pdf differ
diff --git a/src/Tools/MGCleanerPlug/doc/images/Advanced.png b/src/Tools/MGCleanerPlug/doc/images/Advanced.png
new file mode 100644 (file)
index 0000000..bd91a17
Binary files /dev/null and b/src/Tools/MGCleanerPlug/doc/images/Advanced.png differ
diff --git a/src/Tools/MGCleanerPlug/doc/images/AppelMGCleaner.png b/src/Tools/MGCleanerPlug/doc/images/AppelMGCleaner.png
new file mode 100644 (file)
index 0000000..a18b9ef
Binary files /dev/null and b/src/Tools/MGCleanerPlug/doc/images/AppelMGCleaner.png differ
diff --git a/src/Tools/MGCleanerPlug/doc/images/Generic.png b/src/Tools/MGCleanerPlug/doc/images/Generic.png
new file mode 100644 (file)
index 0000000..fb37ab4
Binary files /dev/null and b/src/Tools/MGCleanerPlug/doc/images/Generic.png differ
diff --git a/src/Tools/MGCleanerPlug/doc/images/Simple.png b/src/Tools/MGCleanerPlug/doc/images/Simple.png
new file mode 100644 (file)
index 0000000..98cf1b9
Binary files /dev/null and b/src/Tools/MGCleanerPlug/doc/images/Simple.png differ
diff --git a/src/Tools/MGCleanerPlug/doc/images/Tolerance.png b/src/Tools/MGCleanerPlug/doc/images/Tolerance.png
new file mode 100644 (file)
index 0000000..6df0c80
Binary files /dev/null and b/src/Tools/MGCleanerPlug/doc/images/Tolerance.png differ
diff --git a/src/Tools/MGCleanerPlug/doc/index.rst b/src/Tools/MGCleanerPlug/doc/index.rst
new file mode 100644 (file)
index 0000000..f742966
--- /dev/null
@@ -0,0 +1,30 @@
+.. MeshGems-Cleaner documentation master file, created by sphinx-quickstart on Wed Sep 14 11:40:32 2011.
+   You can adapt this file completely to your liking, but it should at least
+   contain the root `toctree` directive.
+
+MeshGems-Cleaner plugin documentation
+=====================================
+
+This documentation covers the usage of MeshGems-Cleaner, also named MG-Cleaner or MGCleaner as plug-in in Salome that can be used within the Salome
+Mesh module for remeshing 2D Surface. 
+
+MG-Cleaner plug-in uses Distene commercial software MeshGems-Cleaner, 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:`MG-cleaner user manual <files/mg-cleaner_user_manual.pdf>`.
+
+Contents:
+
+.. toctree::
+   :maxdepth: 2
+  
+   lct.rst
+   Mandatory_params.rst
+   Generics_params.rst
+   Advanced_params.rst
+   editHypo.rst
+   
+   
+
+
diff --git a/src/Tools/MGCleanerPlug/doc/lct.rst b/src/Tools/MGCleanerPlug/doc/lct.rst
new file mode 100644 (file)
index 0000000..c37726b
--- /dev/null
@@ -0,0 +1,11 @@
+Running MGCleaner Plug-in 
+=====================
+
+MGCleaner plug-in can be invoked via SMESH Plugin item in Mesh menu bar 
+
+.. image:: images/AppelMGCleaner.png
+   :align: center
+
+
+This plug-in works only with the commercial software MeshGemsCleaner. To obtain a license,
+visit www.distene.comm
diff --git a/src/Tools/MGCleanerPlug/open.png b/src/Tools/MGCleanerPlug/open.png
new file mode 100644 (file)
index 0000000..8ed143e
Binary files /dev/null and b/src/Tools/MGCleanerPlug/open.png differ
diff --git a/src/Tools/MGCleanerPlug/select1.png b/src/Tools/MGCleanerPlug/select1.png
new file mode 100644 (file)
index 0000000..ecb252a
Binary files /dev/null and b/src/Tools/MGCleanerPlug/select1.png differ
index ac2d64680c8c4e97945416e3debe64a8571281e2..ad092da9f8b981c6fd00e77efdf3efa2736acde6 100644 (file)
@@ -28,10 +28,10 @@ include $(top_srcdir)/adm_local/unix/make_common_starter.am
 SUBDIRS = MeshCut padder
 
 if SMESH_ENABLE_GUI
-  SUBDIRS += YamsPlug
+  SUBDIRS += YamsPlug MGCleanerPlug
 endif
 
 salomeplugins_PYTHON = \
        smesh_plugins.py
 
-DIST_SUBDIRS = MeshCut padder YamsPlug
+DIST_SUBDIRS = MeshCut padder YamsPlug MGCleanerPlug
index df7721e9fa9553972a495f57209e0745c996712d..05963b5d62cb04dbb417e15720dc4abb15ad32b1 100644 (file)
       <widget class="QGroupBox" name="GBOptim">
        <property name="geometry">
         <rect>
-         <x>20</x>
+         <x>10</x>
          <y>140</y>
-         <width>741</width>
-         <height>271</height>
+         <width>750</width>
+         <height>270</height>
         </rect>
        </property>
        <property name="title">
@@ -179,7 +179,7 @@ each triangle of the given surface triangulation is considered at and
 is divided into identical triangles.</string>
            </property>
            <property name="text">
-            <string>Uniform Subdivision(U)</string>
+            <string>Uniform Subdivision (U)</string>
            </property>
            <property name="checked">
             <bool>false</bool>
@@ -194,7 +194,7 @@ triangulation is performed, i.e., the high curvature variations of the
 given surface will be smoothed out without shrinking the volume in
 doing so. If ridges are defined, they will be kept as they are in the
 resulting mesh.
-This option modifies the goemetry.</string>
+This option modifies the geometry.</string>
            </property>
            <property name="text">
             <string>Smoothing (S)</string>
@@ -214,7 +214,7 @@ and obeys its geometric features only.) The meshes obtained with this option are
 for computation because anisotropic elements may be generated</string>
            </property>
            <property name="text">
-            <string>Geometrical Mesh : Coarsening(-2)</string>
+            <string>Geometrical Mesh : Coarsening (-2)</string>
            </property>
           </widget>
          </item>
@@ -228,14 +228,14 @@ and obeys its geometric features only.) The meshes obtained with this setting ar
 for computation because anisotropic elements may be generated</string>
            </property>
            <property name="text">
-            <string>Geometrical Mesh :Coarsening and Enrichment (2)</string>
+            <string>Geometrical Mesh : Coarsening and Enrichment (2)</string>
            </property>
           </widget>
          </item>
          <item>
           <widget class="QRadioButton" name="RB__1">
            <property name="toolTip">
-            <string>The given surface triangulation is modfied in accordance to a size map. 
+            <string>The given surface triangulation is modified in accordance to a size map. 
 The latter can be either the intrinsic size map (computed automatically
 and based on the surface properties, i.e. the local curvatures),
 or on a given size map (which is then combined to the intrinsic size map). 
@@ -251,7 +251,7 @@ good quality elements.</string>
          <item>
           <widget class="QRadioButton" name="RB_1">
            <property name="toolTip">
-            <string>The given surface triangulation is modfied in accordance to a size map. 
+            <string>The given surface triangulation is modified in accordance to a size map. 
 The latter can be either the intrinsic size map (computed automatically
 and based on the surface properties, i.e. the local curvatures),
 or on a given size map (which is then combined to the intrinsic size map). 
@@ -270,10 +270,10 @@ good quality elements</string>
       <widget class="QGroupBox" name="GBUnit">
        <property name="geometry">
         <rect>
-         <x>20</x>
+         <x>10</x>
          <y>420</y>
-         <width>301</width>
-         <height>71</height>
+         <width>300</width>
+         <height>70</height>
         </rect>
        </property>
        <property name="toolTip">
@@ -332,7 +332,7 @@ p, li { white-space: pre-wrap; }
        <property name="geometry">
         <rect>
          <x>410</x>
-         <y>430</y>
+         <y>420</y>
          <width>351</width>
          <height>71</height>
         </rect>
@@ -396,13 +396,13 @@ if P=2 and point coordinaters are givin in millimetre, it menas that the maximal
         <rect>
          <x>10</x>
          <y>10</y>
-         <width>741</width>
-         <height>121</height>
+         <width>750</width>
+         <height>120</height>
         </rect>
        </property>
        <property name="font">
         <font>
-         <pointsize>12</pointsize>
+         <pointsize>10</pointsize>
         </font>
        </property>
        <property name="title">
@@ -455,7 +455,7 @@ if P=2 and point coordinaters are givin in millimetre, it menas that the maximal
         </property>
         <property name="icon">
          <iconset>
-          <normaloff>../../../../../../../../SalomeSrc/SMESH_V6_main/src/Tools/YamsPlug/open.png</normaloff>../../../../../../../../SalomeSrc/SMESH_V6_main/src/Tools/YamsPlug/open.png</iconset>
+          <normaloff>:select1.png</normaloff>:select1.png</iconset>
         </property>
         <property name="iconSize">
          <size>
@@ -538,8 +538,8 @@ if P=2 and point coordinaters are givin in millimetre, it menas that the maximal
         <rect>
          <x>10</x>
          <y>10</y>
-         <width>761</width>
-         <height>71</height>
+         <width>750</width>
+         <height>70</height>
         </rect>
        </property>
        <property name="title">
@@ -596,12 +596,12 @@ or add vertices (refines) to change the mesh.</string>
         <rect>
          <x>10</x>
          <y>100</y>
-         <width>761</width>
-         <height>321</height>
+         <width>750</width>
+         <height>320</height>
         </rect>
        </property>
        <property name="title">
-        <string>You can control </string>
+        <string>You can control :</string>
        </property>
        <widget class="QDoubleSpinBox" name="SP_Geomapp">
         <property name="geometry">
@@ -657,7 +657,7 @@ p, li { white-space: pre-wrap; }
 &lt;tr&gt;
 &lt;td style=&quot;border: none;&quot;&gt;
 &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Geometrical approximation :  Maximum angle allowed between a face and a curve &lt;/p&gt;
-&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:8pt;&quot;&gt;(not separated by a ridge).&lt;/span&gt;)&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:8pt;&quot;&gt;(not separated by a ridge).&lt;/span&gt;&lt;/p&gt;
 &lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</string>
         </property>
        </widget>
@@ -857,8 +857,8 @@ p, li { white-space: pre-wrap; }
         <rect>
          <x>10</x>
          <y>440</y>
-         <width>751</width>
-         <height>61</height>
+         <width>750</width>
+         <height>60</height>
         </rect>
        </property>
        <property name="title">
@@ -896,8 +896,8 @@ New created vertices  are saved in the .mesh file under keyword section Vertices
         <rect>
          <x>10</x>
          <y>30</y>
-         <width>741</width>
-         <height>131</height>
+         <width>750</width>
+         <height>130</height>
         </rect>
        </property>
        <property name="title">
@@ -1021,12 +1021,12 @@ exceeds the machine capabilities, the tool will stop because of insufficient mem
         <rect>
          <x>10</x>
          <y>230</y>
-         <width>741</width>
-         <height>141</height>
+         <width>750</width>
+         <height>140</height>
         </rect>
        </property>
        <property name="title">
-        <string>Plug-In Generic Options</string>
+        <string>Plug-in Generic Options</string>
        </property>
        <widget class="QLabel" name="label_10">
         <property name="geometry">
@@ -1055,7 +1055,7 @@ exceeds the machine capabilities, the tool will stop because of insufficient mem
         </property>
         <property name="icon">
          <iconset>
-          <normaloff>../../../../../../../../SalomeSrc/SMESH_V6_main/src/Tools/YamsPlug/open.png</normaloff>../../../../../../../../SalomeSrc/SMESH_V6_main/src/Tools/YamsPlug/open.png</iconset>
+          <normaloff>:open.png</normaloff>:open.png</iconset>
         </property>
        </widget>
        <widget class="QLineEdit" name="LE_ParamsFile">
index d32f6589d1c229db3da82e05c741f2487820f1aa..2841defc71ac18984d9908a447c202d0efe55fbc 100644 (file)
@@ -12,7 +12,7 @@ RSTFILES = lct.rst \
           Generics_params.rst \
           Advanced_params.rst
 
-EXTRA_DIST += $(RSTFILES) images
+EXTRA_DIST += $(RSTFILES) images files
 
 # You can set these variables from the command line.
 SPHINXOPTS    =
diff --git a/src/Tools/YamsPlug/doc/YamsWhitePaper_3.2.pdf b/src/Tools/YamsPlug/doc/YamsWhitePaper_3.2.pdf
deleted file mode 100644 (file)
index f445bba..0000000
Binary files a/src/Tools/YamsPlug/doc/YamsWhitePaper_3.2.pdf and /dev/null differ
index 414d8ad0da7facd967f452e1eee03f6e6908fd4e..a22e38d27e99762d57b0b00117471bf94743654d 100644 (file)
@@ -40,7 +40,7 @@ All sets of parameters are logged in it.
    
    
    
-   # Params for Hypothese : monHypo_Yams_0
+   # Params for Hypothese : anHypo_Yams_0
    # Params for mesh : Mesh_1
    Optimisation ='Quality improvement Only (0)'
    Units ='Relative'
diff --git a/src/Tools/YamsPlug/doc/files/YamsWhitePaper_3.2.pdf b/src/Tools/YamsPlug/doc/files/YamsWhitePaper_3.2.pdf
new file mode 100644 (file)
index 0000000..f445bba
Binary files /dev/null and b/src/Tools/YamsPlug/doc/files/YamsWhitePaper_3.2.pdf differ
index 86404463837868ea79cccd0bcf17b8fa4e3c57aa..e25d0ca032ca877a3a24e2a5d3fc025d7ae8a7ec 100644 (file)
@@ -11,6 +11,8 @@ 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.
 
+.. note::
+  for a complete documentation, see :download:`Yams whitepaper <files/YamsWhitePaper_3.2.pdf>`.
 
 Contents:
 
index 6f3bc515bdf1361bf95ecbe67522be727b295a60..c264926025001748ebd83aa0bf45ad02f200d34a 100644 (file)
@@ -1,7 +1,7 @@
 Running Yams Plug-in 
 =====================
 
-Yamms plug-in can be invoked via SMESH Plugin item in Mesh menu bar 
+Yams plug-in can be invoked via SMESH Plugin item in Mesh menu bar 
 
 .. image:: images/AppelYams.png
    :align: center
index 3540d5545b383c64d0782fbe3b86011a98df558b..2151fe9a11fc851106772102ef9419609f43cfbf 100644 (file)
@@ -28,17 +28,16 @@ from PyQt4.QtCore import *
 
 # Import des panels
 
-# ------------------------------- #
 from ViewText import Ui_ViewExe
+
 class MonViewText(Ui_ViewExe,QDialog):
-# ------------------------------- #
     """
     Classe permettant la visualisation de texte
     """
     def __init__(self,parent,txt):
         QDialog.__init__(self,parent)
         self.setupUi(self)
-        self.resize( QSize(600,600).expandedTo(self.minimumSizeHint()) )
+        self.resize( QSize(1000,600).expandedTo(self.minimumSizeHint()) )
         self.connect( self.PB_Ok,SIGNAL("clicked()"), self, SLOT("close()") )
         self.connect( self.PB_Save,SIGNAL("clicked()"), self.saveFile )
         self.monExe=QProcess(self)
@@ -49,12 +48,29 @@ class MonViewText(Ui_ViewExe,QDialog):
       
         # Je n arrive pas a utiliser le setEnvironment du QProcess
         # fonctionne hors Salome mais pas dans Salome ???
-        LICENCE=os.environ['DISTENE_LICENCE_FILE_FOR_YAMS']
-        txt='export DISTENE_LICENSE_FILE='+LICENCE+';'+ txt
+        cmds=''
+        try :
+          LICENCE_FILE=os.environ["DISTENE_LICENCE_FILE_FOR_YAMS"]
+        except:
+          LICENCE_FILE=''
+        try :
+          PATH=os.environ["DISTENE_PATH_FOR_YAMS"]
+        except:
+          PATH=''
+        if LICENCE_FILE != '': 
+          cmds+='source '+LICENCE_FILE+'\n'
+        else:
+          cmds+="# $DISTENE_LICENCE_FILE_FOR_YAMS NOT SET\n"
+        if PATH != '': 
+          cmds+='export PATH='+PATH+':$PATH\n'
+        else:
+          cmds+="# $DISTENE_PATH_FOR_YAMS NOT SET\n"
+        #cmds+='env\n'
+        cmds+=txt+'\n'
         pid=self.monExe.pid()
-        nomFichier='/tmp/yam_'+str(pid)+'.py'
+        nomFichier='/tmp/Yams_'+str(pid)+'.sh'
         f=open(nomFichier,'w')
-        f.write(txt)
+        f.write(cmds)
         f.close()
 
         maBidouille='sh  ' + nomFichier
index c617f80672a6a18b4918624f1ba3e936a223ee9c..850f2a7a0a26b8dd7508e706213738b3fd2c302b 100644 (file)
@@ -40,6 +40,20 @@ class MonYamsPlugDialog(Ui_YamsPlugDialog,QWidget):
         self.MeshIn="" 
         self.num=1
 
+        # complex whith QResources: not used
+        # The icon are supposed to be located in the $SMESH_ROOT_DIR/share/salome/resources/smesh folder,
+        # other solution could be in the same folder than this python module file:
+        # iconfolder=os.path.dirname(os.path.abspath(__file__))
+
+        iconfolder=os.environ['SMESH_ROOT_DIR']+'/share/salome/resources/smesh'
+        #print "monYamsPlugDialog iconfolder",iconfolder
+        icon = QIcon()
+        icon.addFile(os.path.join(iconfolder,"select1.png"))
+        self.PB_MeshSmesh.setIcon(icon)
+        icon = QIcon()
+        icon.addFile(os.path.join(iconfolder,"open.png"))
+        self.PB_ParamsFileExplorer.setIcon(icon)
+
         #Ces parametres ne sont pas remis à rien par le clean
         self.paramsFile= os.path.abspath(os.path.join(os.environ['HOME'],'.yams.dat'))
         self.LE_ParamsFile.setText(self.paramsFile)
@@ -62,11 +76,12 @@ class MonYamsPlugDialog(Ui_YamsPlugDialog,QWidget):
 
   def PBHelpPressed(self):
         try :
-          maDoc=os.environ['DISTENE_YAMS_DOC_PDF']
+          mydir=os.environ['SMESH_ROOT_DIR']
         except Exception:
-          QMessageBox.warning( self, "Help unavailable", str(maDoc) + " not found")
+          QMessageBox.warning( self, "Help unavailable $SMESH_ROOT_DIR not found")
+        maDoc=mydir+"/share/doc/salome/gui/SMESH/yams/_downloads/YamsWhitePaper_3.2.pdf"
         command="xdg-open "+maDoc+";"
-        subprocess.call(command, shell=True) #
+        subprocess.call(command, shell=True)
 
 
   def PBOKPressed(self):
@@ -92,12 +107,12 @@ class MonYamsPlugDialog(Ui_YamsPlugDialog,QWidget):
         self.editor = studyedit.getStudyEditor()    # 
         moduleEntry=self.editor.findOrCreateComponent("SMESH","SMESH")
         HypReMeshEntry = self.editor.findOrCreateItem( moduleEntry, name = 'HypoForRemesh',
-                                           comment = 'HypoForRemshing')
+                                           comment = 'HypoForRemeshing')
         monStudyBuilder=maStudy.NewBuilder();
         monStudyBuilder.NewCommand();
         newStudyIter=monStudyBuilder.NewObject(HypReMeshEntry)
         aNameAttrib=monStudyBuilder.FindOrCreateAttribute(newStudyIter,"AttributeName")
-        hypoName = 'monHypo_Yams_'+str(self.num)
+        hypoName = 'anHypo_Yams_'+str(self.num)
         aNameAttrib.SetValue(hypoName)
         aCommentAttrib=monStudyBuilder.FindOrCreateAttribute(newStudyIter,"AttributeComment")
         aCommentAttrib.SetValue(str(self.commande))
@@ -110,7 +125,7 @@ class MonYamsPlugDialog(Ui_YamsPlugDialog,QWidget):
         return True
 
   def PBSavePressed(self,NomHypo=False):
-        if NomHypo : text = '# Params for Hypothese : monHypo_Yams_'+str(self.num - 1)+"\n"
+        if NomHypo : text = '# Params for Hypothese : anHypo_Yams_'+str(self.num - 1)+"\n"
         else :       text = '# Save intermediate params \n' 
         text += "# Params for mesh : " +  self.LE_MeshSmesh.text() +'\n'
         for RB in self.GBOptim.findChildren(QRadioButton,):
diff --git a/src/Tools/YamsPlug/open.png b/src/Tools/YamsPlug/open.png
new file mode 100644 (file)
index 0000000..8ed143e
Binary files /dev/null and b/src/Tools/YamsPlug/open.png differ
index cc7a7c130f52f6a145a7371ce11909baeeba46f8..cc0791afbc70283f54d8d54c1134e8ebb12f0bd9 100644 (file)
@@ -37,7 +37,7 @@ def YamsLct(context):
   try :
       os.environ['DISTENE_LICENCE_FILE_FOR_YAMS']
   except:
-      QMessageBox.warning(None,"Products","Distene's products are not installed")
+      QMessageBox.warning(None,"Products","Distene's products Yams are not installed")
       return
   import monYamsPlugDialog
   window=monYamsPlugDialog.getDialog() 
index 1702f09cd912fcee89955269207c736f33eee317..e61dd16a73cd504e5b79f60a561c7acd57833bb6 100644 (file)
@@ -24,6 +24,7 @@ import salome_pluginsmanager
 from spadderPlugin import runSpadderPlugin
 from meshcut_plugin import MeshCut
 from yamsplug_plugin import YamsLct
+from MGCleanerplug_plugin import MGCleanerLct
 
 salome_pluginsmanager.AddFunction('PADDER mesher',
                                   'Create a mesh with PADDER',
@@ -36,3 +37,8 @@ salome_pluginsmanager.AddFunction('MeshCut',
 salome_pluginsmanager.AddFunction('ReMesh with Yams',
                                   'Run Yams',
                                   YamsLct)
+
+salome_pluginsmanager.AddFunction('ReMesh with MGCleaner',
+                                  'Run MGCleaner',
+                                  MGCleanerLct)
+