From: cvw Date: Wed, 24 Apr 2013 14:12:27 +0000 (+0000) Subject: first step modification compilation ok X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=a5310a36f1e8d653dadd0ac4af96d6ebbf79e9ed;p=modules%2Fsmesh.git first step modification compilation ok --- diff --git a/configure.ac b/configure.ac index cea113226..aa9faa3dc 100644 --- a/configure.ac +++ b/configure.ac @@ -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 \ diff --git a/doc/salome/gui/SMESH/Makefile.am b/doc/salome/gui/SMESH/Makefile.am index 604fed2c9..66acad962 100755 --- a/doc/salome/gui/SMESH/Makefile.am +++ b/doc/salome/gui/SMESH/Makefile.am @@ -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 ; \ diff --git a/resources/Makefile.am b/resources/Makefile.am index 851cb3852..e1189849b 100644 --- a/resources/Makefile.am +++ b/resources/Makefile.am @@ -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 \ diff --git a/resources/SalomeApp.xml.in b/resources/SalomeApp.xml.in index 72f293f20..4ae2d8326 100644 --- a/resources/SalomeApp.xml.in +++ b/resources/SalomeApp.xml.in @@ -113,6 +113,7 @@ +
diff --git a/src/SMESHGUI/SMESH_images.ts b/src/SMESHGUI/SMESH_images.ts index 42874a52e..83f0d5da4 100644 --- a/src/SMESHGUI/SMESH_images.ts +++ b/src/SMESHGUI/SMESH_images.ts @@ -51,7 +51,7 @@ ICON_CONNECTION_2D mesh_multi_edges_2d.png - + ICON_CREATE_GROUP mesh_group.png @@ -267,11 +267,11 @@ ICON_FREE_EDGE mesh_free_edges.png - + ICON_FREE_EDGE_2D mesh_free_edges_2d.png - + ICON_FREE_NODE mesh_free_nodes.png @@ -351,6 +351,10 @@ ICON_SELECT select1.png + + ICON_FILE_OPEN + open.png + ICON_SHADE mesh_shading.png @@ -423,11 +427,11 @@ ICON_REORIENT_2D reorient_faces_face.png - + ICON_SMESH_DUPLICATE_NODES mesh_duplicate_nodes.png - + ICON_SMESH_DUPLICATE_NODES_WITH_ELEM mesh_duplicate_nodes_with_elem.png diff --git a/src/StdMeshersGUI/StdMeshers_images.ts b/src/StdMeshersGUI/StdMeshers_images.ts index aaf16607c..150dbae6a 100644 --- a/src/StdMeshersGUI/StdMeshers_images.ts +++ b/src/StdMeshersGUI/StdMeshers_images.ts @@ -59,7 +59,7 @@ ICON_DLG_NUMBER_OF_LAYERS mesh_hypo_layer_distribution.png - + ICON_DLG_NUMBER_OF_LAYERS_2D mesh_hypo_layer_distribution.png @@ -99,15 +99,19 @@ ICON_SELECT select1.png + + ICON_FILE_OPEN + open.png + ICON_SMESH_TREE_ALGO_CompositeSegment_1D mesh_tree_algo_regular.png - + ICON_SMESH_TREE_ALGO_UseExisting_2D mesh_tree_algo_existing_2D.png - + ICON_SMESH_TREE_ALGO_UseExisting_1D mesh_tree_algo_regular.png @@ -135,11 +139,11 @@ ICON_SMESH_TREE_ALGO_Quadrangle_2D mesh_tree_algo_quad.png - + ICON_SMESH_TREE_ALGO_RadialQuadrangle_1D2D mesh_tree_algo_radial_quadrangle_1D2D.png - + ICON_SMESH_TREE_ALGO_Prism_3D mesh_tree_algo_prism.png diff --git a/src/Tools/MGCleanerPlug/MGCleanerMonPlugDialog.py b/src/Tools/MGCleanerPlug/MGCleanerMonPlugDialog.py new file mode 100644 index 000000000..75473d3fd --- /dev/null +++ b/src/Tools/MGCleanerPlug/MGCleanerMonPlugDialog.py @@ -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 index 000000000..ff46f1ffa --- /dev/null +++ b/src/Tools/MGCleanerPlug/MGCleanerMonViewText.py @@ -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 %1 could not be saved.
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 index 000000000..e6b3ef1db --- /dev/null +++ b/src/Tools/MGCleanerPlug/MGCleanerPlugDialog.ui @@ -0,0 +1,1079 @@ + + + MGCleanerPlugDialog + + + + 0 + 0 + 799 + 602 + + + + MGCleaner : Remeshing tool + + + false + + + + + + + + Compute + + + + + + + Close + + + + + + + Qt::Horizontal + + + QSizePolicy::Minimum + + + + 60 + 20 + + + + + + + + Save Params + + + + + + + Load Params + + + + + + + Default Params + + + + + + + Qt::Horizontal + + + + 338 + 25 + + + + + + + + + 10 + + + + Help + + + + + + + + + + 10 + + + + 0 + + + + Simple Remeshing Options + + + + + 10 + 140 + 750 + 270 + + + + Optimisation + + + + + 10 + 30 + 611 + 209 + + + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> +<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Quality improvement</span> is done by point smoothing and edge swapping</p></td></tr></table></body></html> + + + Quality improvement Only (0) + + + true + + + + + + + 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. + + + Pure Geometry Enrichment (G) + + + false + + + + + + + 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. + + + Uniform Subdivision (U) + + + false + + + + + + + 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. + + + Smoothing (S) + + + false + + + + + + + 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 + + + Geometrical Mesh : Coarsening (-2) + + + + + + + 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 + + + Geometrical Mesh : Coarsening and Enrichment (2) + + + + + + + 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. + + + Mesh for finite element computation : Coarsening (-1) + + + + + + + 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 + + + Mesh for finite element computation : Coarsening and Enrichment (1) + + + + + + + + + + 10 + 420 + 300 + 70 + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></td></tr></table></body></html> + + + Units + + + + + 10 + 30 + 110 + 24 + + + + Values are expressed in the model units. + + + Absolute + + + false + + + + + + 160 + 30 + 110 + 24 + + + + Values are relative to the bounding box size. + + + Relative + + + true + + + + + + + 410 + 420 + 350 + 70 + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Set chordal deviation tolerance:</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This parameter enables the user to bound the maximal chordal deviation allowed,</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">that is, the maximal distance allowed between the detected curve and the plane P</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">of the corresponding mesh face.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">In other words, it avoids having faces too far away from the curve </p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">they represent (or should represent).</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></td></tr></table></body></html> + + + Chordal deviation Tolerance + + + + + 40 + 30 + 81 + 23 + + + + + PreferDefault + + + + true + + + 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 + + + 100000.000000000000000 + + + 1.000000000000000 + + + 0.100000000000000 + + + + + + + 10 + 10 + 750 + 120 + + + + + 10 + + + + Original Mesh + + + + + 40 + 70 + 191 + 33 + + + + + 10 + + + + Mesh File (GMF format) + + + + + + 240 + 70 + 481 + 31 + + + + + 10 + + + + + + + 190 + 30 + 41 + 31 + + + + + + + + :select1.png:select1.png + + + + 18 + 18 + + + + false + + + + + + 240 + 30 + 481 + 31 + + + + + 10 + + + + + + + 40 + 30 + 141 + 31 + + + + + 10 + false + + + + QFrame::Box + + + Smesh mesh + + + false + + + 0 + + + + + + 10 + 80 + 31 + 18 + + + + or + + + + GBUnit + GBTolerance_2 + groupBox + GBOptim + + + + Advanced Remeshing Options + + + + + 10 + 10 + 750 + 70 + + + + You can disable : + + + + + 100 + 20 + 271 + 23 + + + + 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. + + + ridge detection + + + true + + + + + + 100 + 40 + 271 + 23 + + + + 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. + + + point smoothing + + + true + + + + + + + 10 + 100 + 750 + 320 + + + + You can control + + + + + 10 + 30 + 91 + 23 + + + + 0.890000000000000 + + + 0.010000000000000 + + + 0.040000000000000 + + + + + + 120 + 20 + 631 + 61 + + + + 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 "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 "max is set to 0:04 which leads to angles of less than 33 degrees between two adjacent +faces . + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Geometrical approximation : Maximum angle allowed between a face and a curve </p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">(not separated by a ridge).</span>)</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></td></tr></table></body></html> + + + + + + 120 + 70 + 581 + 71 + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Ridge angle:</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">if the angle between the normal vectors of two adjacent faces exceeds</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">this value, the edge common to the faces is a ridge</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></td></tr></table></body></html> + + + + + + 10 + 90 + 91 + 23 + + + + 90.000000000000000 + + + 45.000000000000000 + + + + + + 120 + 140 + 521 + 41 + + + + 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. + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Maximal size allowed around vertices:</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">the lengths of the edges with respect to the specified size map.</p></td></tr></table></body></html> + + + + + + 120 + 240 + 591 + 61 + + + + 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 > 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. + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Mesh Gradation ie the element size variation in the triangulation:</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Yams will avoid having two adjacent edges which sizes </p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">vary more than the given gradation.</p></td></tr></table></body></html> + + + + + + 10 + 250 + 91 + 23 + + + + 0.010000000000000 + + + 1.300000000000000 + + + + + + 10 + 150 + 91 + 23 + + + + 0.010000000000000 + + + 100.000000000000000 + + + 0.100000000000000 + + + 100.000000000000000 + + + + + + 120 + 190 + 521 + 41 + + + + 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. + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Minimal size allowed around vertices:</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">the lengths of the edges with respect to the specified size map.</p></td></tr></table></body></html> + + + + + + 10 + 200 + 91 + 23 + + + + 0.000000000000000 + + + 100.000000000000000 + + + 0.100000000000000 + + + 5.000000000000000 + + + + + + + 10 + 440 + 750 + 60 + + + + You can enable : + + + + + 100 + 20 + 271 + 23 + + + + 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 + + + split edge + + + false + + + + + + + Generic Options + + + + + 10 + 30 + 750 + 130 + + + + MGCleaner Generic Options + + + + + 40 + 30 + 441 + 27 + + + + + + + Verbosity Level + + + + + + + Qt::Horizontal + + + + 28 + 20 + + + + + + + + 10 + + + 7 + + + + + + + + + 40 + 70 + 441 + 27 + + + + + + + + 225 + 25 + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Memory size (in Mbytes)</p></td></tr></table></body></html> + + + + + + + Qt::Horizontal + + + + 28 + 20 + + + + + + + + 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. + + + 100000 + + + 0 + + + + + + + + + + 10 + 230 + 750 + 140 + + + + Plug-in Generic Options + + + + + 20 + 40 + 391 + 18 + + + + File used to save MGCleaner Params : + + + + + + 20 + 70 + 30 + 31 + + + + + + + + :open.png:open.png + + + + + + 60 + 70 + 661 + 31 + + + + + + + + + + + + diff --git a/src/Tools/MGCleanerPlug/MGCleanerViewText.ui b/src/Tools/MGCleanerPlug/MGCleanerViewText.ui new file mode 100644 index 000000000..8bec19a12 --- /dev/null +++ b/src/Tools/MGCleanerPlug/MGCleanerViewText.ui @@ -0,0 +1,38 @@ + + + ViewExe + + + + 0 + 0 + 469 + 489 + + + + Run MGCleaner + + + + + + + + + Ok + + + + + + + Save + + + + + + + + diff --git a/src/Tools/MGCleanerPlug/MGCleanerplug_plugin.py b/src/Tools/MGCleanerPlug/MGCleanerplug_plugin.py new file mode 100644 index 000000000..6e3a9981c --- /dev/null +++ b/src/Tools/MGCleanerPlug/MGCleanerplug_plugin.py @@ -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 index 000000000..efbc7859d --- /dev/null +++ b/src/Tools/MGCleanerPlug/Makefile.am @@ -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 index 000000000..a811c1fe1 --- /dev/null +++ b/src/Tools/MGCleanerPlug/Makefile.in @@ -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 index 000000000..d8fb16238 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 index 000000000..3fb8316fe --- /dev/null +++ b/src/Tools/MGCleanerPlug/doc/Advanced_params.rst @@ -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 index 000000000..0a0a08d78 --- /dev/null +++ b/src/Tools/MGCleanerPlug/doc/Generics_params.rst @@ -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 index 000000000..d122e7966 --- /dev/null +++ b/src/Tools/MGCleanerPlug/doc/Makefile.am @@ -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 ' where 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 index 000000000..20f583769 --- /dev/null +++ b/src/Tools/MGCleanerPlug/doc/Makefile.in @@ -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 ' where 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 index 000000000..f657c1d92 --- /dev/null +++ b/src/Tools/MGCleanerPlug/doc/Mandatory_params.rst @@ -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 index 000000000..b8f430700 --- /dev/null +++ b/src/Tools/MGCleanerPlug/doc/conf.py.in @@ -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 +# " v 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/. +#html_copy_source = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a 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 index 000000000..e030f5c5b --- /dev/null +++ b/src/Tools/MGCleanerPlug/doc/editHypo.rst @@ -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 index 000000000..a3907d243 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 index 000000000..bd91a1733 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 index 000000000..a18b9ef65 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 index 000000000..fb37ab42c 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 index 000000000..98cf1b9b9 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 index 000000000..6df0c80c7 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 index 000000000..f742966b5 --- /dev/null +++ b/src/Tools/MGCleanerPlug/doc/index.rst @@ -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 `. + +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 index 000000000..c37726b9e --- /dev/null +++ b/src/Tools/MGCleanerPlug/doc/lct.rst @@ -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 index 000000000..8ed143ebd 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 index 000000000..ecb252ab7 Binary files /dev/null and b/src/Tools/MGCleanerPlug/select1.png differ diff --git a/src/Tools/Makefile.am b/src/Tools/Makefile.am index ac2d64680..ad092da9f 100644 --- a/src/Tools/Makefile.am +++ b/src/Tools/Makefile.am @@ -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 diff --git a/src/Tools/YamsPlug/YamsPlugDialog.ui b/src/Tools/YamsPlug/YamsPlugDialog.ui index df7721e9f..05963b5d6 100644 --- a/src/Tools/YamsPlug/YamsPlugDialog.ui +++ b/src/Tools/YamsPlug/YamsPlugDialog.ui @@ -114,10 +114,10 @@ - 20 + 10 140 - 741 - 271 + 750 + 270 @@ -179,7 +179,7 @@ each triangle of the given surface triangulation is considered at and is divided into identical triangles. - Uniform Subdivision(U) + Uniform Subdivision (U) false @@ -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. +This option modifies the geometry. Smoothing (S) @@ -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 - Geometrical Mesh : Coarsening(-2) + Geometrical Mesh : Coarsening (-2) @@ -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 - Geometrical Mesh :Coarsening and Enrichment (2) + Geometrical Mesh : Coarsening and Enrichment (2) - The given surface triangulation is modfied in accordance to a size map. + 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. - The given surface triangulation is modfied in accordance to a size map. + 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 - 20 + 10 420 - 301 - 71 + 300 + 70 @@ -332,7 +332,7 @@ p, li { white-space: pre-wrap; } 410 - 430 + 420 351 71 @@ -396,13 +396,13 @@ if P=2 and point coordinaters are givin in millimetre, it menas that the maximal 10 10 - 741 - 121 + 750 + 120 - 12 + 10 @@ -455,7 +455,7 @@ if P=2 and point coordinaters are givin in millimetre, it menas that the maximal - ../../../../../../../../SalomeSrc/SMESH_V6_main/src/Tools/YamsPlug/open.png../../../../../../../../SalomeSrc/SMESH_V6_main/src/Tools/YamsPlug/open.png + :select1.png:select1.png @@ -538,8 +538,8 @@ if P=2 and point coordinaters are givin in millimetre, it menas that the maximal 10 10 - 761 - 71 + 750 + 70 @@ -596,12 +596,12 @@ or add vertices (refines) to change the mesh. 10 100 - 761 - 321 + 750 + 320 - You can control + You can control : @@ -657,7 +657,7 @@ p, li { white-space: pre-wrap; } <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Geometrical approximation : Maximum angle allowed between a face and a curve </p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">(not separated by a ridge).</span>)</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">(not separated by a ridge).</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></td></tr></table></body></html> @@ -857,8 +857,8 @@ p, li { white-space: pre-wrap; } 10 440 - 751 - 61 + 750 + 60 @@ -896,8 +896,8 @@ New created vertices are saved in the .mesh file under keyword section Vertices 10 30 - 741 - 131 + 750 + 130 @@ -1021,12 +1021,12 @@ exceeds the machine capabilities, the tool will stop because of insufficient mem 10 230 - 741 - 141 + 750 + 140 - Plug-In Generic Options + Plug-in Generic Options @@ -1055,7 +1055,7 @@ exceeds the machine capabilities, the tool will stop because of insufficient mem - ../../../../../../../../SalomeSrc/SMESH_V6_main/src/Tools/YamsPlug/open.png../../../../../../../../SalomeSrc/SMESH_V6_main/src/Tools/YamsPlug/open.png + :open.png:open.png diff --git a/src/Tools/YamsPlug/doc/Makefile.am b/src/Tools/YamsPlug/doc/Makefile.am index d32f6589d..2841defc7 100644 --- a/src/Tools/YamsPlug/doc/Makefile.am +++ b/src/Tools/YamsPlug/doc/Makefile.am @@ -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 index f445bba28..000000000 Binary files a/src/Tools/YamsPlug/doc/YamsWhitePaper_3.2.pdf and /dev/null differ diff --git a/src/Tools/YamsPlug/doc/editHypo.rst b/src/Tools/YamsPlug/doc/editHypo.rst index 414d8ad0d..a22e38d27 100644 --- a/src/Tools/YamsPlug/doc/editHypo.rst +++ b/src/Tools/YamsPlug/doc/editHypo.rst @@ -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 index 000000000..f445bba28 Binary files /dev/null and b/src/Tools/YamsPlug/doc/files/YamsWhitePaper_3.2.pdf differ diff --git a/src/Tools/YamsPlug/doc/index.rst b/src/Tools/YamsPlug/doc/index.rst index 864044638..e25d0ca03 100644 --- a/src/Tools/YamsPlug/doc/index.rst +++ b/src/Tools/YamsPlug/doc/index.rst @@ -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 `. Contents: diff --git a/src/Tools/YamsPlug/doc/lct.rst b/src/Tools/YamsPlug/doc/lct.rst index 6f3bc515b..c26492602 100644 --- a/src/Tools/YamsPlug/doc/lct.rst +++ b/src/Tools/YamsPlug/doc/lct.rst @@ -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 diff --git a/src/Tools/YamsPlug/monViewText.py b/src/Tools/YamsPlug/monViewText.py index 3540d5545..2151fe9a1 100644 --- a/src/Tools/YamsPlug/monViewText.py +++ b/src/Tools/YamsPlug/monViewText.py @@ -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 diff --git a/src/Tools/YamsPlug/monYamsPlugDialog.py b/src/Tools/YamsPlug/monYamsPlugDialog.py index c617f8067..850f2a7a0 100644 --- a/src/Tools/YamsPlug/monYamsPlugDialog.py +++ b/src/Tools/YamsPlug/monYamsPlugDialog.py @@ -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 index 000000000..8ed143ebd Binary files /dev/null and b/src/Tools/YamsPlug/open.png differ diff --git a/src/Tools/YamsPlug/yamsplug_plugin.py b/src/Tools/YamsPlug/yamsplug_plugin.py index cc7a7c130..cc0791afb 100644 --- a/src/Tools/YamsPlug/yamsplug_plugin.py +++ b/src/Tools/YamsPlug/yamsplug_plugin.py @@ -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() diff --git a/src/Tools/smesh_plugins.py b/src/Tools/smesh_plugins.py index 1702f09cd..e61dd16a7 100644 --- a/src/Tools/smesh_plugins.py +++ b/src/Tools/smesh_plugins.py @@ -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) +