# ============
OPTION(SALOME_BUILD_TESTS "Build SALOME tests" ON)
OPTION(SALOME_BUILD_DOC "Generate SALOME SMESH documentation" ON)
-
+
# Advanced options:
OPTION(SALOME_BUILD_GUI "Enable GUI" ON)
OPTION(SALOME_SMESH_USE_CGNS "Enable import/export to CGNS format" OFF)
IF(EXISTS ${GUI_ROOT_DIR})
FIND_PACKAGE(SalomeGUI)
SALOME_GUI_WITH_CORBA() #check whether GUI built with CORBA
- SALOME_GUI_MODE(SALOME_USE_VTKVIEWER SALOME_USE_SALOMEOBJECT
+ SALOME_GUI_MODE(SALOME_USE_VTKVIEWER SALOME_USE_SALOMEOBJECT
OPTIONAL SALOME_USE_PLOT2DVIEWER SALOME_USE_PYCONSOLE)
##
## Prerequisites From GUI:
MESSAGE(WARNING "SHAPERSTUDY is not found; the corresponding tests will be omitted")
ENDIF()
-# Find MEDCoupling
-# ================
-SET(MEDCOUPLING_ROOT_DIR $ENV{MEDCOUPLING_ROOT_DIR} CACHE PATH "Path to the MEDCoupling tool")
-IF(EXISTS ${MEDCOUPLING_ROOT_DIR})
- FIND_PACKAGE(SalomeMEDCoupling REQUIRED) # will reload HDF5, MEDFile, XDR, etc ...
-ELSE(EXISTS ${MEDCOUPLING_ROOT_DIR})
- MESSAGE(FATAL_ERROR "We absolutely need the MEDCoupling tool, please define MEDCOUPLING_ROOT_DIR !")
-ENDIF(EXISTS ${MEDCOUPLING_ROOT_DIR})
-
##
## SMESH specifics
##
# VTK is obligatiry for the SMESH
FIND_PACKAGE(SalomeVTK REQUIRED)
-FIND_PACKAGE(SalomeOpenCASCADE REQUIRED)
+FIND_PACKAGE(SalomeOpenCASCADE REQUIRED)
IF(SALOME_SMESH_USE_CGNS)
FIND_PACKAGE(SalomeCGNS)
MESSAGE(STATUS "Build MEFISTO2D mesher using Fortran to C generator")
ELSE(${F2C_FOUND})
MESSAGE(FATAL "Fortran to C generator is not found: MEFISTO2D mesher cannot be compiled! Please define F2C_ROOT_DIR !")
- ENDIF(${F2C_FOUND})
+ ENDIF(${F2C_FOUND})
ENDIF(WIN32)
IF(SALOME_SMESH_ENABLE_MEFISTO)
SET(SALOME_INSTALL_LIBS "${SALOME_INSTALL_LIBS}" CACHE PATH "Install path: SALOME libs")
SET(SALOME_INSTALL_IDLS "${SALOME_INSTALL_IDLS}" CACHE PATH "Install path: SALOME IDL files")
SET(SALOME_INSTALL_HEADERS "${SALOME_INSTALL_HEADERS}" CACHE PATH "Install path: SALOME headers")
-SET(SALOME_INSTALL_SCRIPT_SCRIPTS "${SALOME_INSTALL_SCRIPT_SCRIPTS}" CACHE PATH
+SET(SALOME_INSTALL_SCRIPT_SCRIPTS "${SALOME_INSTALL_SCRIPT_SCRIPTS}" CACHE PATH
"Install path: SALOME scripts")
-SET(SALOME_INSTALL_SCRIPT_DATA "${SALOME_INSTALL_SCRIPT_DATA}" CACHE PATH
+SET(SALOME_INSTALL_SCRIPT_DATA "${SALOME_INSTALL_SCRIPT_DATA}" CACHE PATH
"Install path: SALOME script data")
-SET(SALOME_INSTALL_SCRIPT_PYTHON "${SALOME_INSTALL_SCRIPT_PYTHON}" CACHE PATH
+SET(SALOME_INSTALL_SCRIPT_PYTHON "${SALOME_INSTALL_SCRIPT_PYTHON}" CACHE PATH
"Install path: SALOME Python scripts")
-SET(SALOME_INSTALL_APPLISKEL_SCRIPTS "${SALOME_INSTALL_APPLISKEL_SCRIPTS}" CACHE PATH
+SET(SALOME_INSTALL_APPLISKEL_SCRIPTS "${SALOME_INSTALL_APPLISKEL_SCRIPTS}" CACHE PATH
"Install path: SALOME application skeleton - scripts")
-SET(SALOME_INSTALL_APPLISKEL_PYTHON "${SALOME_INSTALL_APPLISKEL_PYTHON}" CACHE PATH
+SET(SALOME_INSTALL_APPLISKEL_PYTHON "${SALOME_INSTALL_APPLISKEL_PYTHON}" CACHE PATH
"Install path: SALOME application skeleton - Python")
SET(SALOME_INSTALL_PYTHON "${SALOME_INSTALL_PYTHON}" CACHE PATH "Install path: SALOME Python stuff")
-SET(SALOME_INSTALL_PYTHON_SHARED "${SALOME_INSTALL_PYTHON_SHARED}" CACHE PATH
+SET(SALOME_INSTALL_PYTHON_SHARED "${SALOME_INSTALL_PYTHON_SHARED}" CACHE PATH
"Install path: SALOME Python shared modules")
-SET(SALOME_INSTALL_CMAKE_LOCAL "${SALOME_INSTALL_CMAKE_LOCAL}" CACHE PATH
- "Install path: local SALOME CMake files")
+SET(SALOME_INSTALL_CMAKE_LOCAL "${SALOME_INSTALL_CMAKE_LOCAL}" CACHE PATH
+ "Install path: local SALOME CMake files")
SET(SALOME_INSTALL_AMCONFIG_LOCAL "${SALOME_INSTALL_AMCONFIG_LOCAL}" CACHE PATH
"Install path: local SALOME config files (obsolete, to be removed)")
SET(SALOME_INSTALL_RES "${SALOME_INSTALL_RES}" CACHE PATH "Install path: SALOME resources")
SET(SALOME_INSTALL_DOC "${SALOME_INSTALL_DOC}" CACHE PATH "Install path: SALOME documentation")
# Specific to SMESH:
-SET(SALOME_SMESH_INSTALL_RES_DATA "${SALOME_INSTALL_RES}/smesh" CACHE PATH
+SET(SALOME_SMESH_INSTALL_RES_DATA "${SALOME_INSTALL_RES}/smesh" CACHE PATH
"Install path: SALOME SMESH specific data")
-SET(SALOME_SMESH_INSTALL_PLUGINS share/salome/plugins/smesh CACHE PATH
+SET(SALOME_SMESH_INSTALL_PLUGINS share/salome/plugins/smesh CACHE PATH
"Install path: SALOME SMESH plugins")
-
+
MARK_AS_ADVANCED(SALOME_INSTALL_BINS SALOME_INSTALL_LIBS SALOME_INSTALL_IDLS SALOME_INSTALL_HEADERS)
MARK_AS_ADVANCED(SALOME_INSTALL_SCRIPT_SCRIPTS SALOME_INSTALL_SCRIPT_DATA SALOME_INSTALL_SCRIPT_PYTHON)
MARK_AS_ADVANCED(SALOME_INSTALL_APPLISKEL_SCRIPTS SALOME_INSTALL_APPLISKEL_PYTHON SALOME_INSTALL_CMAKE_LOCAL SALOME_INSTALL_RES)
MARK_AS_ADVANCED(SALOME_INSTALL_AMCONFIG_LOCAL SALOME_INSTALL_DOC)
MARK_AS_ADVANCED(SALOME_SMESH_INSTALL_RES_DATA SALOME_SMESH_INSTALL_PLUGINS)
-# Specific to ADAPT:
-# SET(SALOME_ADAPT_INSTALL_RES_DATA "${SALOME_INSTALL_RES}/adapt" CACHE PATH
-# "Install path: SALOME ADAPT specific data")
-SET(SALOME_ADAPT_INSTALL_SAMPLES share/salome/adaptsamples CACHE PATH
- "Install path: SALOME ADAPT samples")
-SET(SALOME_ADAPT_INSTALL_TEST ${SALOME_INSTALL_SCRIPT_SCRIPTS}/test CACHE PATH
- "Install path: SALOME ADAPT Test files")
-SET(SALOME_ADAPT_INSTALL_RES_DATA "${SALOME_INSTALL_RES}/adapt" CACHE PATH
- "Install path: SALOME ADAPT specific data")
-
# Accumulate environment variables for SMESH module
SALOME_ACCUMULATE_ENVIRONMENT(PYTHONPATH NOCHECK ${CMAKE_INSTALL_PREFIX}/${SALOME_INSTALL_BINS}
${CMAKE_INSTALL_PREFIX}/${SALOME_INSTALL_PYTHON}
${CMAKE_INSTALL_PREFIX}/${SALOME_INSTALL_PYTHON_SHARED})
-SALOME_ACCUMULATE_ENVIRONMENT(LD_LIBRARY_PATH NOCHECK ${CMAKE_INSTALL_PREFIX}/${SALOME_INSTALL_LIBS})
+SALOME_ACCUMULATE_ENVIRONMENT(LD_LIBRARY_PATH NOCHECK ${CMAKE_INSTALL_PREFIX}/${SALOME_INSTALL_LIBS})
-# Sources
+# Sources
# ========
ADD_SUBDIRECTORY(idl)
# List of targets in this project we want to make visible to the rest of the world.
# They all have to be INSTALL'd with the option "EXPORT ${PROJECT_NAME}TargetGroup"
-SET(_${PROJECT_NAME}_exposed_targets
+SET(_${PROJECT_NAME}_exposed_targets
SMESHControls MeshDriver MeshDriverDAT MeshDriverGMF MeshDriverMED
MeshDriverSTL MeshDriverUNV MEDWrapper
SMDS SMESHimpl SMESHEngine SMESHClient SMESHDS
IF(SALOME_SMESH_ENABLE_MEFISTO)
LIST(APPEND _${PROJECT_NAME}_exposed_targets
- MEFISTO2D)
+ MEFISTO2D)
ENDIF(SALOME_SMESH_ENABLE_MEFISTO)
IF(SALOME_BUILD_GUI)
ENDIF(SALOME_BUILD_GUI)
IF(SALOME_SMESH_USE_CGNS)
- LIST(APPEND _${PROJECT_NAME}_exposed_targets
+ LIST(APPEND _${PROJECT_NAME}_exposed_targets
MeshDriverCGNS
)
ENDIF(SALOME_SMESH_USE_CGNS)
SET(MEDFILE_ROOT_DIR "${MEDFILE_ROOT_DIR}")
SET(CGNS_ROOT_DIR "${CGNS_ROOT_DIR}")
SET(TBB_ROOT_DIR "${TBB_ROOT_DIR}")
-
+
SET(CONF_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}/include" "${PROJECT_BINARY_DIR}/include")
# Build variables that will be expanded when configuring Salome<MODULE>Config.cmake:
DESTINATION "${SALOME_INSTALL_CMAKE_LOCAL}")
# Install the export set for use with the install-tree
-INSTALL(EXPORT ${PROJECT_NAME}TargetGroup DESTINATION "${SALOME_INSTALL_CMAKE_LOCAL}"
+INSTALL(EXPORT ${PROJECT_NAME}TargetGroup DESTINATION "${SALOME_INSTALL_CMAKE_LOCAL}"
FILE ${PROJECT_NAME}Targets.cmake)
DESTINATION ${TEST_INSTALL_DIRECTORY}
RENAME CTestTestfile.cmake)
INSTALL(FILES tests.set DESTINATION ${TEST_INSTALL_DIRECTORY})
-INSTALL(DIRECTORY MGAdapt_med_files DESTINATION ${TEST_INSTALL_DIRECTORY})
+++ /dev/null
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-"""Tests des adaptations par MGAdapt en standalone
-
-Copyright 2021 EDF
-Gérald NICOLAS
-+33.1.78.19.43.52
-"""
-
-__revision__ = "V04.04"
-
-#========================= Les imports - Début ===================================
-
-import sys
-import os
-import salome
-
-salome.standalone()
-salome.salome_init()
-
-import SMESH
-from salome.smesh import smeshBuilder
-smesh = smeshBuilder.New()
-
-#========================== Les imports - Fin ====================================
-
-#========================= Paramétrage - Début ===================================
-# 1. REPDATA = répertoire du cas
-REPDATA = "MGAdapt_med_files"
-#
-# 2. Repérage des données
-D_DATA = dict()
-D_DATA["01"] = "01" # 2D plan ; carte locale
-D_DATA["02"] = "02" # 2D plan ; carte en arrière-plan
-D_DATA["03"] = "01" # 2D plan ; taille constante
-D_DATA["04"] = "04" # 3D ; carte locale et dernier pas de temps
-D_DATA["05"] = "04" # 3D ; carte locale et pas de temps n°1
-D_DATA["06"] = "06" # 2D non plan; carte locale
-D_DATA["07"] = "07" # 2D plan ; carte locale anisotrope
-D_DATA["08"] = "08" # 3D ; carte en arrière-plan anisotrope
-D_DATA["10"] = "10" # 2D plan ; carte locale et maillage initial quadratique
-D_DATA["11"] = "11" # 2D plan ; carte locale et maillage initial en quadrangles
-D_DATA["13"] = "13" # 3D ; carte locale en simple précision et dernier pas de temps
-#========================== Paramétrage - Fin ====================================
-
-class MGAdaptTest (object):
-
- """Test de l'adaptation par MGAdapt
-
-Options facultatives
-********************
-Le(s) nom du/des tests à passer. Si aucun n'est donné, tous les cas sont passés.
- """
-
-# A. La base
-
- message_info = ""
- _verbose = 0
- _verbose_max = 0
- affiche_aide_globale = 0
-
-# B. Les variables
-
- l_cas = None
- rep_test = None
- nro_cas = None
- cas = None
-
-#=========================== Début de la méthode =================================
-
- def __init__ ( self, liste_option ):
-
- """Le constructeur de la classe MGAdaptTest"""
-
- self.l_cas = list()
-
- for option in liste_option :
-
- #print (option)
- saux = option.upper()
- #print (saux)
- if saux in ( "-H", "-HELP" ):
- self.affiche_aide_globale = 1
- elif saux == "-V" :
- self._verbose = 1
- elif saux == "-VMAX" :
- self._verbose = 1
- self._verbose_max = 1
- else :
- self.l_cas.append(option)
-
- if not self.l_cas:
- for cle in D_DATA:
- self.l_cas.append(cle)
- self.l_cas.sort()
-
- if self._verbose_max:
- print ("Liste des cas : {}".format(self.l_cas))
-
-#=========================== Fin de la méthode ==================================
-
-#=========================== Début de la méthode =================================
-
- def __del__(self):
- """A la suppression de l'instance de classe"""
- if self._verbose_max:
- print ("Suppression de l'instance de la classe.")
-
-#=========================== Fin de la méthode ==================================
-
-#=========================== Début de la méthode =================================
-
- def _add_file_in (self, objet_adapt):
- """Ajout du fichier med d'entrée
-
-Entrées/Sorties :
- :objet_adapt: l'objet du module
- """
- if self._verbose_max:
- print ("_add_file_in pour {}".format(self.nro_cas))
-
- ficmed = os.path.join (REPDATA, "test_{}.med".format(D_DATA[self.nro_cas]))
- if self._verbose_max:
- print ("Fichier {}".format(ficmed))
- if not os.path.isfile(ficmed):
- erreur = 1
- message = "Le fichier {} est inconnu.".format(ficmed)
- else:
- objet_adapt.setMEDFileIn(ficmed)
- erreur = 0
- message = ""
-
- return erreur, message
-
-#=========================== Fin de la méthode ==================================
-
-#=========================== Début de la méthode =================================
-
- def _add_file_out (self, objet_adapt):
- """Ajout du fichier de sortie
-
-Entrées/Sorties :
- :objet_adapt: l'objet du module
- """
- if self._verbose_max:
- print ("_add_file_out pour {}".format(self.nro_cas))
-
- ficmed = os.path.join (REPDATA, "test_{}.adapt.tui.med".format(self.nro_cas))
- if os.path.isfile(ficmed):
- os.remove(ficmed)
-
- objet_adapt.setMEDFileOut(ficmed)
-
- if self._verbose:
- print (". Maillage adapté dans le fichier {}".format(ficmed))
-
- return
-
-#=========================== Fin de la méthode ==================================
-
-#=========================== Début de la méthode =================================
-
- def _add_file_bkg (self, objet_adapt):
- """Ajout du fichier med de fond
-
-Entrées/Sorties :
- :objet_adapt: l'objet du module
- """
- if self._verbose_max:
- print ("_add_file_bkg pour {}".format(self.nro_cas))
-
- ficmed = os.path.join (REPDATA, "test_{}_bg.med".format(D_DATA[self.nro_cas]))
- if self._verbose_max:
- print ("Fichier {}".format(ficmed))
- if not os.path.isfile(ficmed):
- erreur = 1
- message = "Le fichier {} est inconnu.".format(ficmed)
- else:
- objet_adapt.setMEDFileBackground(ficmed)
- erreur = 0
- message = ""
-
- return erreur, message
-
-#=========================== Fin de la méthode ==================================
-
-#=========================== Début de la méthode =================================
-
- def _hypo_creation (self, maptype, option, niveau=3):
- """Création d'une hypothèse
-
-Entrées :
- :maptype: type de carte : "Local", "Background", "Constant"
- :option: nom du champ si "Local" ou "Background", valeur si "Constant"
- :niveau: niveau de verbosité
-
-Sortie :
- :hypo: l'objet hypothèse
- """
- if self._verbose_max:
- print ("_hypo_creation pour {} avec {}".format(maptype,option))
-
- erreur = 0
- message = ""
-
- while not erreur :
-
- #--- Création de l'hypothèse ---
- hypo = smesh.CreateAdaptationHypothesis()
-
- # Type de données
- if ( maptype in ("Local", "Background", "Constant") ):
- hypo.setSizeMapType(maptype)
- else:
- message = "Le type de carte {} est inconnu.".format(maptype)
- erreur = 2
- break
-
- # Valeur
- if ( maptype in ("Local", "Background") ):
- hypo.setSizeMapFieldName(option)
- else:
- hypo.setConstantSize(option)
-
- # Verbosité
- self._hypo_verbose (hypo, niveau)
-
- break
-
- return erreur, message, hypo
-#=========================== Fin de la méthode ==================================
-
-#=========================== Début de la méthode =================================
-
- def _hypo_verbose (self, hypo, niveau=10):
- """Débogage des hypothèses
-
-Entrées :
- :niveau: niveau de verbosité
-
-Entrées/Sorties :
- :hypo: l'objet hypothèse
- """
-
- hypo.setVerbosityLevel(niveau)
-
- if self._verbose_max:
-
- hypo.setPrintLogInFile(True)
- hypo.setKeepWorkingFiles(True)
- hypo.setRemoveOnSuccess(False)
-
- return
-#=========================== Fin de la méthode ==================================
-
-#=========================== Début de la méthode =================================
-
- def _calcul (self, objet_adapt, hypo):
- """Calcul
-
-Entrées :
- :objet_adapt: l'objet du module
- :hypo: l'objet hypothèse
- """
-
- #--- association de l'hypothese à l'objet de l'adaptation
- objet_adapt.AddHypothesis(hypo)
-
- #-- Calcul
- if self._verbose_max:
- print (hypo.getCommandToRun())
- erreur = objet_adapt.Compute(False)
- if erreur:
- message = "Echec dans l'adaptation."
- else:
- message = ""
-
- return erreur, message
-
-#=========================== Fin de la méthode ==================================
-
-#=========================== Début de la méthode =================================
-
- def _test_00 (self, objet_adapt):
- """Test générique
-
-Entrées/Sorties :
- :objet_adapt: l'objet du module
- """
-
- erreur = 0
- message = ""
-
- while not erreur :
-
- #--- les fichiers MED ---#
- erreur, message = self._add_file_in (objet_adapt)
- if erreur:
- break
- self._add_file_out (objet_adapt)
- if self.nro_cas in ("02", "08"):
- erreur, message = self._add_file_bkg (objet_adapt)
- if erreur:
- break
-
- #--- Création de l'hypothèse ---
- if self.nro_cas in ("01", "04", "05", "06", "07", "10", "11", "13"):
- maptype = "Local"
- if self.nro_cas in ("01", "04", "05", "06", "07", "10"):
- option = "TAILLE"
- elif self.nro_cas in ("11",):
- option = "Taille de maille"
- elif self.nro_cas in ("13",):
- option = "Elevation"
- elif self.nro_cas in ("02", "08"):
- maptype = "Background"
- option = "TAILLE"
- elif self.nro_cas in ("03",):
- maptype = "Constant"
- option = 0.5
-
- if self._verbose:
- niveau = 3
- elif self._verbose_max:
- niveau = 10
- else:
- niveau = 0
- erreur, message, hypo = self._hypo_creation(maptype, option, niveau)
- if erreur:
- break
-
- #-- Ajout des options
- if self.nro_cas in ("04", "06", "07", "08", "10", "11"):
- hypo.setTimeStepRankLast()
- elif self.nro_cas in ("05",):
- hypo.setTimeStepRank(1,1)
- elif self.nro_cas in ("13",):
- hypo.setTimeStepRank(0,0)
-
- # options facultatives
- if self.nro_cas in ("03",):
- hypo.setOptionValue("adaptation", "surface")
-
- #-- Calcul
- try :
- erreur, message = self._calcul (objet_adapt, hypo)
- except :
- erreur = 1871
- message = "Erreur dans le calcul par SMESH"
-
- break
-
- return erreur, message
-
-#=========================== Fin de la méthode ==================================
-
-#=========================== Début de la méthode =================================
-
- def _traitement_cas (self ):
- """Traitement d'un cas
-
-
-Sorties :
- :erreur: code d'erreur
- :message: message d'erreur
- """
-
- nom_fonction = __name__ + "/_traitement_cas"
- blabla = "\nDans {} :".format(nom_fonction)
-
- if self._verbose_max:
- print (blabla)
-
-# 1. Préalables
-
- erreur = 0
- message = ""
- if self._verbose:
- print ("Passage du cas '{}'".format(self.nro_cas))
-
- if ( self.nro_cas in ("01", "02", "03", "04", "05", "06", "07", "08", "10" ,"11" ,"13") ):
- objet_adapt = smesh.Adaptation('MG_Adapt')
- erreur, message = self._test_00 (objet_adapt)
- del objet_adapt
-
- else:
- erreur = 1
- message = "Le cas '{}' est inconnu.".format(self.nro_cas)
-
- return erreur, message
-
-#=========================== Fin de la méthode ==================================
-
-#=========================== Début de la méthode =================================
-
- def lancement (self):
-
- """Lancement
-
-Sorties :
- :erreur: code d'erreur
- :message: message d'erreur
- """
-
- nom_fonction = __name__ + "/lancement"
- blabla = "\nDans {} :".format(nom_fonction)
-
- erreur = 0
- message = ""
-
- if self._verbose_max:
- print (blabla)
-
- for nom_cas in self.l_cas:
- self.nro_cas = nom_cas
- erreur_t, message_t = self._traitement_cas ()
- if erreur_t:
- erreur += 1
- message += "\nErreur n° {} pour le cas {} :\n".format(erreur_t,nom_cas)
- message += message_t
-
- if ( erreur and self._verbose_max ):
- print (blabla, message)
-
- return erreur, message
-
-#=========================== Fin de la méthode ==================================
-
-#========================== Fin de la classe ====================================
-
-#==================================================================================
-# Lancement
-#==================================================================================
-
-if __name__ == "__main__" :
-
-# 1. Options
-
- L_OPTIONS = list()
- #L_OPTIONS.append("-h")
- #L_OPTIONS.append("-v")
- #L_OPTIONS.append("-vmax")
- L_OPTIONS.append("01")
- L_OPTIONS.append("02")
- L_OPTIONS.append("03")
- L_OPTIONS.append("07")
- L_OPTIONS.append("10")
- L_OPTIONS.append("11")
- L_OPTIONS.append("04")
- L_OPTIONS.append("05")
- L_OPTIONS.append("06")
- L_OPTIONS.append("08")
- #L_OPTIONS.append("13")
-
-# 2. Lancement de la classe
-
- #print ("L_OPTIONS :", L_OPTIONS)
- MGADAPT_TEST = MGAdaptTest(L_OPTIONS)
- if MGADAPT_TEST.affiche_aide_globale:
- sys.stdout.write(MGADAPT_TEST.__doc__+"\n")
- else:
- ERREUR, MESSAGE_ERREUR = MGADAPT_TEST.lancement()
- if ERREUR:
- sys.stdout.write(MGADAPT_TEST.__doc__+"\n")
- MESSAGE_ERREUR += "\n {} erreur(s)\n".format(ERREUR)
- sys.stderr.write(MESSAGE_ERREUR)
- #raise Exception(MESSAGE_ERREUR)
- assert(False)
-
- del MGADAPT_TEST
-
- #sys.exit(0)
radial_prism_3d_algo.py
test_smeshplugin_mg_tetra_parallele.py
test_smeshplugins.py
- MGAdaptTests_without_session.py
)
SET(GOOD_TESTS
+++ /dev/null
-.. _adaptation_page:
-
-**********
-Adaptation
-**********
-
-Mesh module provides the possibility to perform different adaptations of a mesh.
-
-.. note::
- A mesh adaptation based on splitting is available by the HOMARD module.
-
-.. _mg_adapt_anchor:
-
-MG_Adapt
-########
-
-For meshes made of triangles and/or tetrahedra, remeshing operations are available with the MG-Adapt plugin. The remeshing is based on wanted mesh sizes defined over the mesh or as a constant. The boundaries are dedeuced from the initial mesh.
-
-To start **Remeshing** operation, select **MG Adapt** tab in **Adaptation** dialog.
-
-.. image:: ../images/adaptation_01.png
- :align: center
-
-
-* **Mesh In** is the initial mesh to remesh.
-* **Mesh Out** is the resulting mesh after remeshing. By default, the name of the initial mesh is kept and the file name is based on the name of the initial mesh.
-* **Size map definition** is a choice between **Local**, **Background** and **Constant**.
-
-- If the choice is **Background**, the name of the MED file must be given.
-- If the choice is **Local** or **Background**, the name of the field must be selected from the list, together with time step.
-
-.. image:: ../images/adaptation_02.png
- :align: center
-
-.. note::
- The exhaustive description of MG-Adapt can be read into its documentation. It can be reached by the general help button.
-
-**See Also** a sample TUI Script of :ref:`tui_adaptation_page`.
* :ref:`creating meshes <about_meshes_page>` in different ways:
- * by meshing geometrical models previously created or imported by the Geometry component;
+ * by meshing geometrical models previously created or imported by the Geometry component;
* bottom-up, using :ref:`mesh edition <modifying_meshes_page>`, especially :ref:`extrusion <extrusion_page>` and :ref:`revolution <revolution_page>`;
- * by generation of the 3D mesh from the 2D mesh not based on the geometry (:ref:`imported <importing_exporting_meshes_page>` for example);
-
+ * by generation of the 3D mesh from the 2D mesh not based on the geometry (:ref:`imported <importing_exporting_meshes_page>` for example);
+
* :ref:`importing and exporting meshes <importing_exporting_meshes_page>` in various formats;
-* :ref:`modifying meshes <modifying_meshes_page>` with a vast array of dedicated operations;
+* :ref:`modifying meshes <modifying_meshes_page>` with a vast array of dedicated operations;
* :ref:`creating groups <grouping_elements_page>` of mesh elements;
* filtering mesh entities (nodes or elements) using :ref:`Filters <filters_page>` functionality for :ref:`creating groups <grouping_elements_page>` and applying :ref:`mesh modifications <modifying_meshes_page>`;
* :ref:`viewing meshes <viewing_meshes_overview_page>` in the VTK viewer and :ref:`getting info <mesh_infos_page>` on mesh and its sub-objects;
-* :ref:`remeshing meshes <adaptation_page>`;
* applying to meshes :ref:`Quality Controls <quality_page>`, allowing to highlight important elements;
* taking various :ref:`measurements <measurements_page>` of the mesh objects.
Mesh module preferences are described in the :ref:`mesh_preferences_page` section of SALOME Mesh Help.
.. image:: ../images/image7.jpg
- :align: center
+ :align: center
.. centered::
Example of MESH module usage for engineering tasks
grouping_elements
about_filters
about_quality_controls
- adaptation
measurements
viewing_meshes_overview
smeshpy_interface
- tools
+ tools
mesh_preferences
using_notebook_smesh_page
As soon as a mesh is created, it is possible to manage it via its own
methods, described in class :class:`smeshBuilder.Mesh` documentation.
-Class :class:`smeshstudytools.SMeshStudyTools` provides several methods to manipulate mesh objects in Salome study.
+Class :class:`smeshstudytools.SMeshStudyTools` provides several methods to manipulate mesh objects in Salome study.
A usual workflow to generate a mesh on geometry is following:
maxArea = mefisto.LocalLength( 100. )
netgen.SetMaxSize( 20. )
netgen.SetFineness( smeshBuilder.VeryCoarse )
-
+
#. :ref:`Compute the mesh <compute_anchor>` (generate mesh nodes and elements):
.. code-block:: python
mesh.Compute()
An easiest way to start with Python scripting is to do something in
-GUI and then to get a corresponding Python script via
+GUI and then to get a corresponding Python script via
**File > Dump Study** menu item. Don't forget that you can get
all methods of any object in hand (e.g. a mesh group or a hypothesis)
by calling *dir()* Python built-in function.
tui_transforming_meshes
tui_viewing_meshes
tui_quality_controls
- tui_adaptation
tui_measurements
tui_work_on_objects_from_gui
tui_notebook_smesh
+++ /dev/null
-.. _tui_adaptation_page:
-
-**********
-Adaptation
-**********
-
-.. _tui_mg_adapt:
-
-MG_Adapt
-========
-
-.. literalinclude:: ../../../examples/adaptation_ex01.py
- :language: python
-
-:download:`Download this script <../../../examples/adaptation_ex01.py>`
-
-
-**See Also** the GUI :ref:`adaptation_page`.
SMESH_Pattern.idl
SMESH_MeshEditor.idl
SMESH_Measurements.idl
- MG_ADAPT.idl
)
SET(_idl_include_dirs
+++ /dev/null
-// Copyright (C) 2011-2020 CEA/DEN, EDF R&D
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-//
-// See http://www.salome-platform.org/
-//
-// File : MG_ADAPT.hxx
-//
-#ifndef MG_ADAPT_IDL
-#define MG_ADAPT_IDL
-
-#include "SALOME_Component.idl"
-#include "SALOME_Exception.idl"
-#include "SALOME_GenericObj.idl"
-#include "SALOMEDS.idl"
-#include "SMESH_Mesh.idl"
-
-module SMESH{
-
- typedef sequence<string> str_array ;
- struct MgAdaptHypothesisData
- {
- string myFileInDir, myMeshFileIn, myInMeshName, myMeshFileBackground, myOutMeshName,
- myMeshFileOut, myFileOutDir, myFileSizeMapDir, myFieldName;
- boolean fromMedFile;
- boolean myPublish, myMeshOutMed;
- boolean myUseLocalMap, myUseBackgroundMap, myUseConstantValue;
- double myConstantValue;
- long myRank, myTimeStep;
- boolean myUseNoTimeStep, myUseLastTimeStep, myUseChosenTimeStep;
- string myWorkingDir, myLogFile;
- boolean myPrintLogInFile, myKeepFiles, myRemoveLogOnSuccess;
- long myVerboseLevel;
- };
-
-
- interface MG_ADAPT : SALOME::GenericObj
- {
- //MG_ADAPT CreateMG_ADAPT(in PortableServer::POA_var poa);
- void setData( inout MgAdaptHypothesisData data);
-
- void setMedFileIn(in string MedFileIn );
- string getMedFileIn();
-
- void setMedFileOut(in string MedFileOut);
- string getMedFileOut();
-
- void setMeshName(in string s);
- string getMeshName();
-
- void setMeshNameOut(in string s);
- string getMeshNameOut();
-
- void setMeshOutMed(in boolean b);
- boolean getMeshOutMed();
-
- void setPublish(in boolean b);
- boolean getPublish();
-
- void setSizeMapFieldName(in string s);
- string getSizeMapFieldName();
-
- void setTimeStep(in long s);
- long getTimeStep() ;
-
- void setTimeStepRank(in long s, in long f);
- long getRank();
-
- void setTimeStepRankLast();
- void setNoTimeStep();
-
- void setLogFile(in string f);
- string getLogFile();
-
- void setVerbosityLevel(in long f);
- long getVerbosityLevel();
-
- void setRemoveOnSuccess(in boolean f);
- boolean getRemoveOnSuccess();
-
- MgAdaptHypothesisData getData();
-
- void setUseLocalMap(in boolean f);
- boolean getUseLocalMap();
-
- void setUseBackgroundMap(in boolean f);
- boolean getUseBackgroundMap();
-
- void setUseConstantValue(in boolean f);
- boolean getUseConstantValue();
-
- void setConstantSize(in double f);
- double getConstantSize() ;
-
- void setSizeMapFile(in string f);
- string getSizeMapFile();
-
- void setFromMedFile(in boolean f);
- boolean isFromMedFile();
-
- void setKeepWorkingFiles(in boolean f);
- boolean getKeepWorkingFiles();
-
- void setPrintLogInFile(in boolean f);
- boolean getPrintLogInFile();
-
- void setWorkingDir(in string f);
- string getWorkingDir() ;
-
- void setSizeMapType(in string f);
- boolean setAll();
- string getCommandToRun() ;
- void compute() raises(SALOME::SALOME_Exception);
- string getErrMsg();
- string getFileName() ;
- string getExeName();
- void copyMgAdaptHypothesisData(in MgAdaptHypothesisData f ) ;
-
- //void checkDirPath(inout string f);
-
- boolean hasOptionDefined( in string optionName ) ;
- void setOptionValue(in string optionName, in string optionValue) raises (SALOME::SALOME_Exception);
- string getOptionValue(in string optionName, inout boolean isDefault) raises (SALOME::SALOME_Exception);
- str_array getCustomOptionValuesStrVec() ;
- str_array getOptionValuesStrVec() ;
- };
-
- typedef MG_ADAPT MG_ADAPT_HYPOTHESIS;
- interface MG_ADAPT_OBJECT : SALOME::GenericObj
- {
- void setMeshIn(in SMESH_Mesh theMesh ) raises (SALOME::SALOME_Exception);
- void setMEDFileIn(in string f) raises (SALOME::SALOME_Exception);
- void setMEDFileOut(in string f) raises (SALOME::SALOME_Exception);
- void setMEDFileBackground(in string f) raises (SALOME::SALOME_Exception);
- void AddHypothesis(in MG_ADAPT mg) raises (SALOME::SALOME_Exception);
- long Compute(in boolean Publish) raises (SALOME::SALOME_Exception);
- };
-
-};
-#endif // MG_ADAPT_IDL
interface FilterManager;
interface SMESH_Pattern;
interface Measurements;
- interface MG_ADAPT;
- interface MG_ADAPT_OBJECT;
/*!
* Tags definition
SMESH_Pattern GetPattern();
Measurements CreateMeasurements();
+
/*!
Set the current mode
*/
in GEOM::GEOM_Object theGeom,
in double theTolerance );
-
- MG_ADAPT CreateMG_ADAPT();
- MG_ADAPT_OBJECT Adaptation(in string adaptType);
- MG_ADAPT CreateAdaptationHypothesis();
+
};
};
SET(SMESH_RESOURCES_FILES
ModuleMesh.png
- adapt_mg_adapt.png
advanced_mesh_info.png
bare_border_face.png
bare_border_volume.png
<parameter name="vol_precision" value="-6" />
<parameter name="selection_increment" value="0" />
<parameter name="controls_increment" value="2" />
- <!-- Adaptation -->
- <parameter name="mg_adapt_file_mesh_out" value="true" />
- <parameter name="mg_adapt_publish_mesh_out" value="false" />
- <parameter name="mg_adapt_size_map" value="Local" />
- <parameter name="mg_adapt_time_step" value="None" />
</section>
<section name="smesh_help" >
<parameter name="User's Guide/Mesh module/User's Guide" value="%SMESH_ROOT_DIR%/share/doc/salome/gui/SMESH/index.html;;http://docs.salome-platform.org/latest/gui/SMESH/index.html"/>
<parameter name="User's Guide/Mesh module/Plug-ins/MacMesh plugin" value="%SMESH_ROOT_DIR%/share/doc/salome/gui/SMESH/MacMesh/index.html;;http://docs.salome-platform.org/latest/gui/SMESH/MacMesh/index.html"/>
<parameter name="User's Guide/Mesh module/Plug-ins/blocFissure plugin" value="%SMESH_ROOT_DIR%/share/doc/salome/gui/SMESH/blocFissure/index.html;;http://docs.salome-platform.org/latest/gui/SMESH/blocFissure/index.html"/>
<parameter name="User's Guide/Mesh module/Plug-ins/SpherePadder plugin" value="%SMESH_ROOT_DIR%/share/doc/salome/gui/SMESH/padder/index.html;;http://docs.salome-platform.org/latest/gui/SMESH/padder/index.html"/>
- <parameter name="User's Guide/Mesh module/MG-Adapt plugin/User's Guide" value="%SMESH_ROOT_DIR%/share/doc/salome/gui/SMESH/index.html#adaptation;;http://docs.salome-platform.org/latest/gui/SMESH/index.html#adaptation"/>
- <parameter name="User's Guide/Mesh module/MG-Adapt plugin/Reference" value="%MESHGEMS_ROOT_DIR%/Docs/mg-adapt_api_manual.pdf"/>
- <parameter name="User's Guide/Mesh module/MG-Adapt plugin/Manual" value="%MESHGEMS_ROOT_DIR%/Docs/mg-adapt_user_manual.pdf"/>
<parameter name="User's Guide/Mesh module/MGCleaner plugin/User's Guide" value="%SMESH_ROOT_DIR%/share/doc/salome/gui/SMESH/MGCleaner/index.html;;http://docs.salome-platform.org/latest/gui/SMESH/MGCleaner/index.html"/>
<parameter name="User's Guide/Mesh module/MGCleaner plugin/Reference" value="%MESHGEMS_ROOT_DIR%/Docs/mg-cleaner_api_manual.pdf"/>
<parameter name="User's Guide/Mesh module/MGCleaner plugin/Manual" value="%MESHGEMS_ROOT_DIR%/Docs/mg-cleaner_user_manual.pdf"/>
# CGNS
##
IF(SALOME_SMESH_USE_CGNS)
- SET(SUBDIRS_CGNS
+ SET(SUBDIRS_CGNS
DriverCGNS
)
ENDIF(SALOME_SMESH_USE_CGNS)
# GUI
##
IF(SALOME_BUILD_GUI)
- SET(SUBDIRS_GUI OBJECT
- SMESHFiltersSelection
- SMESHGUI
+ SET(SUBDIRS_GUI OBJECT
+ SMESHFiltersSelection
+ SMESHGUI
PluginUtils
SMESH_SWIG_WITHIHM
StdMeshersGUI
${PROJECT_SOURCE_DIR}/src/SMDS
${PROJECT_SOURCE_DIR}/src/SMESHDS
${PROJECT_SOURCE_DIR}/src/SMESHUtils
- ${MEDCOUPLING_INCLUDE_DIRS}
)
# additional preprocessor / compiler flags
MeshDriverUNV
MeshDriverGMF
${DriverCGNS_LIB}
- ${MEDCoupling_medloader}
)
# --- headers ---
SMESH_MesherHelper.hxx
SMESH_ProxyMesh.hxx
SMESH_SMESH.hxx
- MG_ADAPT.hxx
)
# --- sources ---
SMESH_HypoFilter.cxx
SMESH_ProxyMesh.cxx
SMESH_MesherHelper.cxx
- MG_ADAPT.cxx
)
# --- rules ---
+++ /dev/null
-// Copyright (C) 2007-2020 CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-// file : MG_ADAPT.cxx
-
-#include "MG_ADAPT.hxx"
-
-#include "MeshFormatReader.hxx"
-#include "MeshFormatWriter.hxx"
-#include "MEDFileMesh.hxx"
-#include "MCAuto.hxx"
-#include "MEDFileData.hxx"
-#include "MEDFileField.hxx"
-#include "MEDCouplingFieldDouble.hxx"
-
-#include <SALOME_NamingService.hxx>
-#include <Utils_SALOME_Exception.hxx>
-#include "Utils_CorbaException.hxx"
-
-#include <utilities.h>
-#include <iostream>
-#include <unistd.h>
-#include <TCollection_AsciiString.hxx>
-#include <cstring>
-#include <cstdlib>
-#include <boost/filesystem.hpp>
-
-using namespace MG_ADAPT;
-static std::string removeFile(std::string fileName, int& notOk)
-{
- std::string errStr;
- notOk = std::remove(fileName.c_str());
- if (notOk) errStr = ToComment("\n error while removing file : ") << fileName;
- else errStr = ToComment("\n file : ") << fileName << " succesfully deleted! \n ";
-
- return errStr;
-}
-std::string remove_extension(const std::string& filename) {
- size_t lastdot = filename.find_last_of(".");
- if (lastdot == std::string::npos) return filename;
- return filename.substr(0, lastdot);
-}
-namespace
-{
-struct GET_DEFAULT // struct used to get default value from GetOptionValue()
-{
- bool isDefault;
- operator bool* () {
- return &isDefault;
- }
-};
-}
-
-//----------------------------------------------------------------------------------------
-MgAdapt::MgAdapt()
-{
- data = new MgAdaptHypothesisData();
- data->myInMeshName = "";
- data->fromMedFile = defaultFromMedFile();
- data->myFileInDir = defaultWorkingDirectory();
- data->myMeshFileIn = "";
- data->myFileOutDir = defaultWorkingDirectory();
- data->myOutMeshName = "";
- data->myMeshFileOut = "";
- data->myMeshOutMed = defaultMeshOutMed();
- data->myPublish = defaultPublish();
- data->myUseLocalMap = defaultUseLocalMap();
- data->myUseBackgroundMap = defaultUseBackgroundMap();
- data->myFileSizeMapDir = defaultWorkingDirectory();
- data->myMeshFileBackground = "";
- data->myUseConstantValue = defaultUseConstantValue();
- data->myConstantValue = 0.0;
- data->myFieldName = "";
- data->myUseNoTimeStep = defaultUseNoTimeStep();
- data->myUseLastTimeStep = defaultUseLastTimeStep();
- data->myUseChosenTimeStep = defaultUseChosenTimeStep();
- data->myTimeStep = -2;
- data->myRank = -2;
- data->myWorkingDir = defaultWorkingDirectory();
- data->myLogFile = defaultLogFile();
- data->myVerboseLevel = defaultVerboseLevel();
- data->myPrintLogInFile = defaultPrintLogInFile();
- data->myKeepFiles = defaultKeepFiles();
- data->myRemoveLogOnSuccess = defaultRemoveLogOnSuccess();
-
- buildModel();
- setAll();
-}
-MgAdapt::MgAdapt(MgAdaptHypothesisData* myData)
-{
- data = new MgAdaptHypothesisData();
- setData(myData);
- buildModel();
-}
-
-MgAdapt::MgAdapt( const MgAdapt& copy)
-{
- data = new MgAdaptHypothesisData();
- MgAdaptHypothesisData *copyData = copy.getData();
- copyMgAdaptHypothesisData(copyData);
- setAll();
-
- this->_option2value = copy._option2value;
- this->_customOption2value = copy._customOption2value;
- this->_defaultOptionValues = copy._defaultOptionValues;
- this->_doubleOptions = copy._doubleOptions;
- this->_charOptions = copy._charOptions;
- this->_boolOptions = copy._boolOptions;
-}
-
-//-----------------------------------------------------------------------------------------
-MgAdapt::~MgAdapt()
-{
- delete data;
-}
-void MgAdapt::buildModel()
-{
-
- const char* boolOptionNames[] = { "compute_ridges", // yes
- "" // mark of end
- };
- // const char* intOptionNames[] = { "max_number_of_errors_printed", // 1
- // "max_number_of_threads", // 4
- // "" // mark of end
- // };
- const char* doubleOptionNames[] = { "max_memory", // 0
- "" // mark of end
- };
- const char* charOptionNames[] = { "components", // "yes"
- "adaptation", // both
- "" // mark of end
- };
-
- int i = 0;
- while (boolOptionNames[i][0])
- {
- _boolOptions.insert( boolOptionNames[i] );
- _option2value[boolOptionNames[i++]].clear();
- }
- // i = 0;
- // while (intOptionNames[i][0])
- // _option2value[intOptionNames[i++]].clear();
-
- i = 0;
- while (doubleOptionNames[i][0]) {
- _doubleOptions.insert(doubleOptionNames[i]);
- _option2value[doubleOptionNames[i++]].clear();
- }
- i = 0;
- while (charOptionNames[i][0]) {
- _charOptions.insert(charOptionNames[i]);
- _option2value[charOptionNames[i++]].clear();
- }
-
- // default values to be used while MG-Adapt
-
- _defaultOptionValues["adaptation" ] = "both";
- _defaultOptionValues["components" ] = "outside components";
- _defaultOptionValues["compute_ridges"] = "yes";
- _defaultOptionValues["max_memory" ] = ToComment(defaultMaximumMemory());
-}
-
-//=============================================================================
-TOptionValues MgAdapt::getOptionValues() const
-{
- TOptionValues vals;
- TOptionValues::const_iterator op_val = _option2value.begin();
- for ( ; op_val != _option2value.end(); ++op_val )
- vals.insert( make_pair( op_val->first, getOptionValue( op_val->first, GET_DEFAULT() )));
-
- return vals;
-}
-
-std::vector <std::string> MgAdapt::getOptionValuesStrVec() const
-{
- std::vector <std::string> vals;
- TOptionValues::const_iterator op_val = _option2value.begin();
- for ( ; op_val != _option2value.end(); ++op_val )
- vals.push_back(op_val->first+":"+getOptionValue( op_val->first, GET_DEFAULT() ));
-
- return vals;
-}
-
-std::vector <std::string> MgAdapt::getCustomOptionValuesStrVec() const
-{
- std::vector <std::string> vals;
- TOptionValues::const_iterator op_val;
- for ( op_val = _customOption2value.begin(); op_val != _customOption2value.end(); ++op_val )
- {
- vals.push_back(op_val->first+":"+getOptionValue( op_val->first, GET_DEFAULT() ));
- }
- return vals;
-}
-const TOptionValues& MgAdapt::getCustomOptionValues() const
-{
- return _customOption2value;
-}
-void MgAdapt::setData(MgAdaptHypothesisData* myData)
-{
- copyMgAdaptHypothesisData(myData);
- setAll();
-}
-MgAdaptHypothesisData* MgAdapt::getData() const
-{
- return data;
-}
-void MgAdapt::setMedFileIn(std::string fileName)
-{
- if ( isFileExist(fileName) )
- {
- medFileIn = fileName;
-
- if (medFileOut == "") // default MED file Out
- medFileOut = remove_extension( fileName )+ ".adapt.med";
- }
- else
- {
- SALOME::ExceptionStruct es;
- es.type = SALOME::BAD_PARAM;
- std::string text = "\nThe file " + fileName + " does not exist.\n" ;
- es.text = CORBA::string_dup(text.c_str());
- throw SALOME::SALOME_Exception(es);
- }
-}
-
-std::string MgAdapt::getMedFileIn()
-{
- return medFileIn;
-}
-
-void MgAdapt::setMedFileOut(std::string fileOut)
-{
- medFileOut = fileOut;
-}
-std::string MgAdapt::getMedFileOut()
-{
- return medFileOut;
-}
-void MgAdapt::setMeshOutMed(bool mybool)
-{
- meshOutMed = mybool;
-}
-bool MgAdapt::getMeshOutMed()
-{
- return meshOutMed;
-}
-void MgAdapt::setPublish(bool mybool)
-{
- publish = mybool;
-}
-bool MgAdapt::getPublish()
-{
- return publish;
-}
-void MgAdapt::setFieldName(std::string myFieldName)
-{
- fieldName = myFieldName;
-}
-std::string MgAdapt::getFieldName()
-{
- return fieldName;
-}
-void MgAdapt::setTimeStep(int time)
-{
- timeStep = time;
-}
-int MgAdapt::getTimeStep() const
-{
- return timeStep;
-}
-
-void MgAdapt::setRankTimeStep(int time, int myRank)
-{
- timeStep = time;
- rank = myRank;
-}
-
-int MgAdapt::getRank()
-{
- return rank;
-}
-void MgAdapt::setTimeStepRankLast()
-{
- myUseLastTimeStep = true;
- myUseChosenTimeStep = false;
- myUseNoTimeStep = false;
- //~med_int aRank, tmst;
- //~std::string fieldFile = useBackgroundMap ? sizeMapFile : medFileIn;
- //~getTimeStepInfos(fieldFile, tmst, aRank);
- //~setRankTimeStep((int) tmst, (int) aRank);
-}
-void MgAdapt::setNoTimeStep()
-{
- myUseLastTimeStep = false;
- myUseChosenTimeStep = false;
- myUseNoTimeStep = true;
- //~int aRank = (int)MED_NO_IT;
- //~int tmst = (int)MED_NO_DT ;
- //~setRankTimeStep(tmst, aRank);
-}
-void MgAdapt::setChosenTimeStepRank()
-{
- myUseLastTimeStep = false;
- myUseChosenTimeStep = true;
- myUseNoTimeStep = false;
- //~int aRank = (int)MED_NO_IT;
- //~int tmst = (int)MED_NO_DT ;
- //~setRankTimeStep(tmst, aRank);
-}
-void MgAdapt::setUseLocalMap(bool myLocal)
-{
- useLocalMap = myLocal;
-}
-
-bool MgAdapt::getUseLocalMap()
-{
- return useLocalMap;
-}
-
-void MgAdapt::setUseBackgroundMap(bool bckg)
-{
- useBackgroundMap = bckg;
-}
-
-bool MgAdapt::getUseBackgroundMap()
-{
- return useBackgroundMap;
-}
-
-void MgAdapt::setUseConstantValue(bool cnst)
-{
- useConstantValue = cnst;
-}
-bool MgAdapt::getUseConstantValue()
-{
- return useConstantValue;
-}
-void MgAdapt::setLogFile(std::string myLogFile)
-{
- logFile = myLogFile;
-}
-std::string MgAdapt::getLogFile()
-{
- return logFile;
-}
-void MgAdapt::setVerbosityLevel(int verboLevel)
-{
- verbosityLevel = verboLevel;
-}
-int MgAdapt::getVerbosityLevel()
-{
- return verbosityLevel;
-}
-void MgAdapt::setRemoveOnSuccess(bool rmons)
-{
- removeOnSuccess = rmons;
-}
-bool MgAdapt::getRemoveOnSuccess()
-{
- return removeOnSuccess;
-}
-void MgAdapt::setSizeMapFile(std::string mapFile)
-{
- if ( mapFile == "" || isFileExist(mapFile) )
- {
- sizeMapFile = mapFile;
- }
- else
- {
- SALOME::ExceptionStruct es;
- es.type = SALOME::BAD_PARAM;
- std::string text = "\nThe file " + mapFile + " does not exist.\n" ;
- es.text = CORBA::string_dup(text.c_str());
- throw SALOME::SALOME_Exception(es);
- }
-}
-std::string MgAdapt::getSizeMapFile()
-{
- return sizeMapFile;
-}
-
-void MgAdapt::setMeshName(std::string name)
-{
- meshName = name;
-}
-std::string MgAdapt::getMeshName()
-{
- return meshName;
-}
-void MgAdapt::setMeshNameOut(std::string name)
-{
- meshNameOut = name;
-}
-std::string MgAdapt::getMeshNameOut()
-{
- return meshNameOut;
-}
-void MgAdapt::setFromMedFile(bool mybool)
-{
- fromMedFile = mybool;
-}
-bool MgAdapt::isFromMedFile()
-{
- return fromMedFile;
-}
-void MgAdapt::setConstantValue(double cnst)
-{
- constantValue = cnst;
-}
-double MgAdapt::getConstantValue() const
-{
- return constantValue;
-}
-
-void MgAdapt::setWorkingDir(std::string dir)
-{
- workingDir = dir;
-}
-std::string MgAdapt::getWorkingDir() const
-{
- return workingDir;
-}
-void MgAdapt::setKeepWorkingFiles(bool mybool)
-{
- toKeepWorkingFiles = mybool;
-}
-bool MgAdapt::getKeepWorkingFiles()
-{
- return toKeepWorkingFiles;
-}
-void MgAdapt::setPrintLogInFile(bool print)
-{
- printLogInFile = print;
-}
-bool MgAdapt::getPrintLogInFile()
-{
- return printLogInFile;
-}
-
-bool MgAdapt::setAll()
-{
-
- setFromMedFile(data->fromMedFile);
- std::string file;
- checkDirPath(data->myFileInDir);
- file = data->myFileInDir+data->myMeshFileIn;
- setMedFileIn(file);
- setMeshName(data->myInMeshName);
- setMeshNameOut(data->myOutMeshName);
- checkDirPath(data->myFileOutDir);
- std::string out = data->myFileOutDir+data->myMeshFileOut;
- setMedFileOut(out);
- setPublish(data->myPublish);
- setMeshOutMed(data->myMeshOutMed);
- setUseLocalMap(data->myUseLocalMap);
- setUseBackgroundMap(data->myUseBackgroundMap);
- setUseConstantValue(data->myUseConstantValue);
-
- std::string mapfile;
- if (useBackgroundMap)
- {
- checkDirPath(data->myFileSizeMapDir);
- mapfile = data->myFileSizeMapDir+data->myMeshFileBackground;
- setFieldName(data->myFieldName);
- }
- else if (useConstantValue)
- {
- setConstantValue(data->myConstantValue);
- }
- else
- {
- mapfile ="";
- setConstantValue(0.0);
- setFieldName(data->myFieldName);
- }
-
- setSizeMapFile(mapfile);
- if (data->myUseNoTimeStep)
- setNoTimeStep();
- else if (data->myUseLastTimeStep)
- setTimeStepRankLast();
- else
- {
- setChosenTimeStepRank();
- setRankTimeStep(data->myTimeStep, data->myRank);
- }
- /* Advanced options */
- setWorkingDir(data->myWorkingDir);
- checkDirPath(data->myWorkingDir);
- setLogFile(data->myWorkingDir+defaultLogFile());
- setVerbosityLevel(data->myVerboseLevel);
- setRemoveOnSuccess(data->myRemoveLogOnSuccess);
- setPrintLogInFile(data->myPrintLogInFile);
- setKeepWorkingFiles(data->myKeepFiles);
-
- return true;
-}
-
-void MgAdapt::checkDirPath(std::string& dirPath)
-{
- const char lastChar = *dirPath.rbegin();
-#ifdef WIN32
- if(lastChar != '\\') dirPath+='\\';
-#else
- if(lastChar != '/') dirPath+='/';
-#endif
-}
-//=============================================================================
-void MgAdapt::setOptionValue(const std::string& optionName,
- const std::string& optionValue)
-throw (std::invalid_argument)
-{
-// INFOS("setOptionValue");
-// std::cout << "optionName: " << optionName << ", optionValue: " << optionValue << std::endl;
- TOptionValues::iterator op_val = _option2value.find(optionName);
- if (op_val == _option2value.end())
- {
- op_val = _customOption2value.find( optionName );
- _customOption2value[ optionName ] = optionValue;
- return;
- }
-
- if (op_val->second != optionValue)
- {
- std::string lowerOptionValue = toLowerStr(optionValue);
- const char* ptr = lowerOptionValue.c_str();
- // strip white spaces
- while (ptr[0] == ' ')
- ptr++;
- int i = strlen(ptr);
- while (i != 0 && ptr[i - 1] == ' ')
- i--;
- // check value type
- bool typeOk = true;
- std::string typeName;
- if (i == 0)
- {
- // empty string
- }
- else if (_charOptions.count(optionName))
- {
- // do not check strings
- }
- else if (_doubleOptions.count(optionName))
- {
- // check if value is double
- toDbl(ptr, &typeOk);
- typeName = "real";
- }
- else if (_boolOptions.count(optionName))
- {
- // check if value is bool
- toBool(ptr, &typeOk);
- typeName = "bool";
- }
- else
- {
- // check if value is int
- toInt(ptr, &typeOk);
- typeName = "integer";
- }
- if ( typeOk ) // check some specific values ?
- {
- }
- if ( !typeOk )
- {
- std::string msg = "Advanced option '" + optionName + "' = '" + optionValue + "' but must be " + typeName;
- throw std::invalid_argument(msg);
- }
- std::string value( ptr, i );
-// std::cout << "==> value: " << value << std::endl;
- if ( _defaultOptionValues[ optionName ] == value ) value.clear();
-
-// std::cout << "==> value: " << value << std::endl;
- op_val->second = value;
- }
-}
-//=============================================================================
-//! Return option value. If isDefault provided, it can be a default value,
-// then *isDefault == true. If isDefault is not provided, the value will be
-// empty if it equals a default one.
-std::string MgAdapt::getOptionValue(const std::string& optionName, bool* isDefault) const
-throw (std::invalid_argument)
-{
-// INFOS("getOptionValue");
-// std::cout << "optionName: " << optionName << ", isDefault: " << isDefault << std::endl;
- TOptionValues::const_iterator op_val = _option2value.find(optionName);
- if (op_val == _option2value.end())
- {
- op_val = _customOption2value.find(optionName);
- if (op_val == _customOption2value.end())
- {
- std::string msg = "Unknown MG-Adapt option: <" + optionName + ">";
- throw std::invalid_argument(msg);
- }
- }
- std::string val = op_val->second;
- if ( isDefault ) *isDefault = ( val.empty() );
-
- if ( val.empty() && isDefault )
- {
- op_val = _defaultOptionValues.find( optionName );
- if (op_val != _defaultOptionValues.end()) val = op_val->second;
- }
-// std::cout << "==> val: " << val << std::endl;
-
- return val;
-}
-//================================================================================
-/*!
- * \brief Converts a string to a real value
- */
-//================================================================================
-
-double MgAdapt::toDbl(const std::string& str, bool* isOk )
-throw (std::invalid_argument)
-{
- if ( str.empty() ) throw std::invalid_argument("Empty value provided");
-
- char * endPtr;
- double val = strtod(&str[0], &endPtr);
- bool ok = (&str[0] != endPtr);
-
- if ( isOk ) *isOk = ok;
-
- if ( !ok )
- {
- std::string msg = "Not a real value:'" + str + "'";
- throw std::invalid_argument(msg);
- }
- return val;
-}
-//================================================================================
-/*!
- * \brief Converts a string to a lower
- */
-//================================================================================
-std::string MgAdapt::toLowerStr(const std::string& str)
-{
- std::string s = str;
- for ( size_t i = 0; i <= s.size(); ++i )
- s[i] = tolower( s[i] );
- return s;
-}
-//================================================================================
-/*!
- * \brief Converts a string to a bool
- */
-//================================================================================
-
-bool MgAdapt::toBool(const std::string& str, bool* isOk )
-throw (std::invalid_argument)
-{
- std::string s = str;
- if ( isOk ) *isOk = true;
-
- for ( size_t i = 0; i <= s.size(); ++i )
- s[i] = tolower( s[i] );
-
- if ( s == "1" || s == "true" || s == "active" || s == "yes" )
- return true;
-
- if ( s == "0" || s == "false" || s == "inactive" || s == "no" )
- return false;
-
- if ( isOk )
- *isOk = false;
- else
- {
- std::string msg = "Not a Boolean value:'" + str + "'";
- throw std::invalid_argument(msg);
- }
- return false;
-}
-//================================================================================
-/*!
- * \brief Converts a string to a integer value
- */
-//================================================================================
-
-int MgAdapt::toInt(const std::string& str, bool* isOk )
-throw (std::invalid_argument)
-{
- if ( str.empty() ) throw std::invalid_argument("Empty value provided");
-
- char * endPtr;
- int val = (int)strtol( &str[0], &endPtr, 10);
- bool ok = (&str[0] != endPtr);
-
- if ( isOk ) *isOk = ok;
-
- if ( !ok )
- {
- std::string msg = "Not an integer value:'" + str + "'";
- throw std::invalid_argument(msg);
- }
- return val;
-}
-//=============================================================================
-bool MgAdapt::hasOptionDefined( const std::string& optionName ) const
-{
- bool isDefault = false;
- try
- {
- getOptionValue( optionName, &isDefault );
- }
- catch ( std::invalid_argument )
- {
- return false;
- }
- return !isDefault;
-}
-//================================================================================
-/*!
- * \brief Return command to run MG-Tetra mesher excluding file prefix (-f)
- */
-//================================================================================
-
-std::string MgAdapt::getCommandToRun(MgAdapt* hyp)
-{
- return hyp ? hyp->getCommandToRun() : ToComment("error with hypothesis!");
-}
-
-
-
-int MgAdapt::compute(std::string& errStr)
-{
- std::string cmd = getCommandToRun();
-// std::cout << cmd << std::endl;
-
- int err = 0;
- execCmd( cmd.c_str(), err ); // run
-
- if ( err )
- {
- errStr = ToComment("system(mg-adapt.exe ...) command failed with error: ") << strerror( errno );
- }
- else
- {
- convertMeshFile(meshFormatOutputMesh, solFormatOutput);
- }
- if (!err) cleanUp();
- return err;
-}
-
-void MgAdapt::execCmd( const char* cmd, int& err)
-{
- err = 1;
- std::array <char, 128> buffer;
- std::streambuf* buf;
-outFileStream fileStream;
- if (printLogInFile)
- {
- fileStream.open(logFile);
- buf = fileStream.rdbuf();
- }
- else
- {
- buf = std::cout.rdbuf();
- }
- std::ostream logStream(buf);
-
- std::unique_ptr <FILE, decltype(&pclose)> pipe(popen(cmd, "r"), pclose );
- if(!pipe)
- {
- throw std::runtime_error("popen() failed!");
- }
- while(fgets(buffer.data(), buffer.size(), pipe.get()) !=nullptr )
- {
- logStream<<buffer.data() ;
- }
- err = 0;
-}
-/*
- * to delete tmp files .mesh, .sol and if needed
- * the log file
- *
- */
-void MgAdapt::cleanUp()
-{
- int notOk;
- std::string errStr;
- if(toKeepWorkingFiles)
- return;
- if(removeOnSuccess && printLogInFile)
- tmpFilesToBeDeleted.push_back(logFile);
-
- std::vector< std::string>::iterator it = tmpFilesToBeDeleted.begin();
- for (; it!=tmpFilesToBeDeleted.end(); ++it)
- {
- errStr=removeFile(*it, notOk);
- if (notOk)
- {
- appendMsgToLogFile(errStr);
- }
-
- }
-}
-
-void MgAdapt::appendMsgToLogFile(std::string& msg)
-{
- std::ofstream logStream;
- logStream.open(logFile, std::ofstream::out | std::ofstream::app);
- logStream<< msg;
- logStream.close();
-}
-//================================================================================
-/*!
- * \brief Return command to run MG-Tetra mesher excluding file prefix (-f)
- */
-//================================================================================
-
-std::string MgAdapt::getCommandToRun()
-{
- /*
- || return system command with args and options
- ||
- */
- std::string errStr;
- std::string cmd = getExeName();
- std::string meshIn(""), sizeMapIn(""), solFileIn("");
- updateTimeStepRank();
- convertMedFile(meshIn, solFileIn, sizeMapIn);
- if (!isFileExist(meshIn) || !isFileExist(solFileIn))
- {
- errStr = ToComment(" failed to find .mesh or .sol file from converter ")<< strerror( errno );
- return errStr;
- }
- tmpFilesToBeDeleted.push_back(meshIn);
- tmpFilesToBeDeleted.push_back(solFileIn);
- if(useBackgroundMap && !isFileExist(sizeMapIn))
- {
- errStr = ToComment(" failed to find .mesh size map file from converter ")<< strerror( errno );
- return errStr;
- }
-
- cmd+= " --in "+ meshIn;
- meshFormatOutputMesh = getFileName()+".mesh";
- tmpFilesToBeDeleted.push_back(meshFormatOutputMesh);
- cmd+= " --out "+ meshFormatOutputMesh;
- if (useLocalMap || useConstantValue) cmd+= " --sizemap "+ solFileIn;
- else // (useBackgroundMap)
- {
- cmd+= " --background_mesh "+ sizeMapIn ;
- cmd+= " --background_sizemap "+ solFileIn;
- tmpFilesToBeDeleted.push_back(sizeMapIn);
- }
- //~else
- //~{
- //~// constant value TODO
- //~}
- // Check coherence between mesh dimension and option fo adaptation
- checkDimensionOptionAdaptation();
-
-// sizemap file is written only if level is higher than 3
- if ( verbosityLevel > 3)
- {
- std::string solFileOut = getFileName()+".sol";
- cmd+= " --write_sizemap "+ solFileOut;
- solFormatOutput.push_back(solFileOut);
- tmpFilesToBeDeleted.push_back(solFileOut);
- }
-
- std::string option, value;
- bool isDefault;
- const TOptionValues* options[] = { &_option2value, &_customOption2value };
- for ( int iOp = 0; iOp < 2; ++iOp )
- {
- TOptionValues::const_iterator o2v = options[iOp]->begin();
- for ( ; o2v != options[iOp]->end(); ++o2v )
- {
- option = o2v->first;
- value = getOptionValue( option, &isDefault );
-
- if ( isDefault )
- continue;
- if ( value.empty() )//value == NoValue() )
- {
- if ( _defaultOptionValues.count( option ))
- continue; // non-custom option with no value
- //value.clear();
- }
- if ( strncmp( "no", option.c_str(), 2 ) == 0 ) // options w/o values: --no_*
- {
- if ( !value.empty() && toBool( value ) == false )
- continue;
- value.clear();
- }
- if ( option[0] != '-' )
- cmd += " --";
- else
- cmd += " ";
-// std::cout << "--- option: '" << option << ", value: '" << value <<"'"<< std::endl;
- cmd += option + " " + value;
- }
- }
-
- // Verbosity Level
- if (verbosityLevel != defaultVerboseLevel())
- {
- cmd+= " --verbose "+ ToComment(verbosityLevel);
- }
- //~}
-//~cmd+= " >"
-#ifdef WIN32
- cmd += " < NUL";
-#endif
-// std::cout << "--- cmd :"<< std::endl;
-// std::cout << cmd << std::endl;
-
- return cmd;
-}
-
-bool MgAdapt::isFileExist(const std::string& fName)
-{
-
- if ( fName.empty() ) return false;
-
- boost::system::error_code err;
- bool res = boost::filesystem::exists( fName, err );
-
- return err ? false : res;
-}
-//=======================================================================
-//function : defaultMaximumMemory
-//=======================================================================
-
-#if defined(WIN32)
-#include <windows.h>
-#elif !defined(__APPLE__)
-#include <sys/sysinfo.h>
-#endif
-
-double MgAdapt::defaultMaximumMemory()
-{
-#if defined(WIN32)
- // See http://msdn.microsoft.com/en-us/library/aa366589.aspx
- MEMORYSTATUSEX statex;
- statex.dwLength = sizeof (statex);
- long err = GlobalMemoryStatusEx (&statex);
- if (err != 0)
- {
- double totMB = (double)statex.ullAvailPhys / 1024. / 1024.;
- return (double)( 0.7 * totMB );
- }
-#elif !defined(__APPLE__)
- struct sysinfo si;
- long err = sysinfo( &si );
- if ( err == 0 )
- {
- long ramMB = si.totalram * si.mem_unit / 1024 / 1024;
- return ( 0.7 * ramMB );
- }
-#endif
- return 1024;
-}
-
-//=======================================================================
-//function : defaultWorkingDirectory
-//=======================================================================
-
-std::string MgAdapt::defaultWorkingDirectory()
-{
- TCollection_AsciiString aTmpDir;
-
- char *Tmp_dir = getenv("SALOME_TMP_DIR");
- if(Tmp_dir != NULL)
- {
- aTmpDir = Tmp_dir;
- }
- else {
-#ifdef WIN32
- aTmpDir = TCollection_AsciiString("C:\\");
-#else
- aTmpDir = TCollection_AsciiString("/tmp/");
-#endif
- }
- return aTmpDir.ToCString();
-}
-//================================================================================
-/*!
- * \brief Return a unique file name
- */
-//================================================================================
-
-std::string MgAdapt::getFileName() const
-{
- std::string aTmpDir = workingDir;
- const char lastChar = *aTmpDir.rbegin();
-#ifdef WIN32
- if(lastChar != '\\') aTmpDir+='\\';
-#else
- if(lastChar != '/') aTmpDir+='/';
-#endif
-
- TCollection_AsciiString aGenericName = (char*)aTmpDir.c_str();
- aGenericName += "MgAdapt_";
- aGenericName += getpid();
- aGenericName += "_";
- aGenericName += Abs((Standard_Integer)(long) aGenericName.ToCString());
-
- return aGenericName.ToCString();
-}
-//=======================================================================
-//function : defaultLogFile
-//=======================================================================
-
-std::string MgAdapt::defaultLogFile()
-{
- std::string alogFile("MG_ADAPT.log");
- return alogFile;
-}
-//=======================================================================
-//function : defaultUseConstantValue
-//=======================================================================
-
-bool MgAdapt::defaultUseConstantValue()
-{
- return false;
-}
-//=======================================================================
-//function : defaultUseNoTimeStep
-//=======================================================================
-
-bool MgAdapt::defaultUseNoTimeStep()
-{
- return true;
-}
-//=======================================================================
-//function : defaultRemoveLogOnSuccess
-//=======================================================================
-
-bool MgAdapt::defaultRemoveLogOnSuccess()
-{
- return true;
-}
-//=======================================================================
-//function : defaultPrintLogInFile
-//=======================================================================
-
-bool MgAdapt::defaultPrintLogInFile()
-{
- return false;
-}
-//=======================================================================
-//function : defaultUseChosenTimeStep
-//=======================================================================
-
-bool MgAdapt::defaultUseChosenTimeStep()
-{
- return false;
-}
-//=======================================================================
-//function : UseLastTimeStep
-//=======================================================================
-
-bool MgAdapt::defaultUseLastTimeStep()
-{
- return false;
-}
-//=======================================================================
-//function : defaultUseBackgroundMap
-//=======================================================================
-
-bool MgAdapt::defaultUseBackgroundMap()
-{
- return false;
-}
-//=======================================================================
-//function : defaultKeepFiles
-//=======================================================================
-
-bool MgAdapt::defaultKeepFiles()
-{
- return false;
-}
-//=======================================================================
-//function : defaultUseLocalMap
-//=======================================================================
-
-bool MgAdapt::defaultUseLocalMap()
-{
- return true;
-}
-//=======================================================================
-//function : defaultPublish
-//=======================================================================
-
-bool MgAdapt::defaultPublish()
-{
- return false;
-}
-//=======================================================================
-//function : defaultMeshOutMed
-//=======================================================================
-
-bool MgAdapt::defaultMeshOutMed()
-{
- return true;
-}
-//=======================================================================
-//function : defaultFromMedFile
-//=======================================================================
-
-bool MgAdapt::defaultFromMedFile()
-{
- return true;
-}
-//=======================================================================
-//function : defaultVerboseLevel
-//=======================================================================
-
-int MgAdapt::defaultVerboseLevel()
-{
- return 3;
-}
-std::string MgAdapt::getExeName()
-{
- return "mg-adapt.exe";
-}
-void MgAdapt::copyMgAdaptHypothesisData( const MgAdaptHypothesisData* from)
-{
- data->myFileInDir = from->myFileInDir;
- data->myMeshFileIn = from->myMeshFileIn;
- data->myMeshFileBackground = from->myMeshFileBackground;
- data->myOutMeshName = from->myOutMeshName;
- data->myMeshFileOut = from->myMeshFileOut;
- data->myFileOutDir = from->myFileOutDir;
- data->myFileSizeMapDir = from->myFileSizeMapDir;
- data->myFieldName = from->myFieldName;
- data->fromMedFile = from->fromMedFile;
- data->myPublish = from->myPublish;
- data->myMeshOutMed = from->myMeshOutMed;
- data->myUseLocalMap = from->myUseLocalMap;
- data->myUseBackgroundMap = from->myUseBackgroundMap;
- data->myUseConstantValue = from->myUseConstantValue;
- data->myConstantValue = from->myConstantValue;
- data->myTimeStep = from->myTimeStep;
- data->myRank = from->myRank;
- data->myUseNoTimeStep = from->myUseNoTimeStep;
- data->myUseLastTimeStep = from->myUseLastTimeStep;
- data->myUseChosenTimeStep = from->myUseChosenTimeStep;
- data->myWorkingDir = from->myWorkingDir;
- data->myLogFile = from->myLogFile;
- data->myPrintLogInFile = from->myPrintLogInFile;
- data->myKeepFiles = from->myKeepFiles;
- data->myRemoveLogOnSuccess = from->myRemoveLogOnSuccess;
- data->myVerboseLevel = from->myVerboseLevel;
-}
-
-std::vector<std::string> MgAdapt::getListFieldsNames(std::string fileIn)
-{
- MEDCoupling::MCAuto<MEDCoupling::MEDFileData> mfd = MEDCoupling::MEDFileData::New(fileIn);
- std::vector<std::string> listFieldsNames(mfd->getFields()->getFieldsNames());
- return listFieldsNames ;
-}
-
-void MgAdapt::checkDimensionOptionAdaptation()
-{
- // Quand le maillage est 3D, tout est possible
- // Quand le maillage est 2D, il faut 'surface' sauf si carte de fonds 3D
- MEDCoupling::MCAuto<MEDCoupling::MEDFileData> mfd = MEDCoupling::MEDFileData::New(medFileIn);
- int meshdim = mfd->getMeshes()->getMeshAtPos(0)->getMeshDimension() ;
-// std::cout << "meshdim = " << meshdim << std::endl;
-
- if ( meshdim == 2 )
- {
- std::string optionName = "adaptation";
- std::string optionValue = getOptionValue(optionName);
-// std::cout << "optionValue = '" << optionValue <<"'"<< std::endl;
- bool a_tester = false ;
- // carte locale ou constante : impératif d'avoir "surface"
- if ( useLocalMap || useConstantValue) a_tester = true ;
- // carte de fond : impératif d'avoir "surface" si le fonds est aussi 2D
- else
- {
- MEDCoupling::MCAuto<MEDCoupling::MEDFileData> mfdbg = MEDCoupling::MEDFileData::New(sizeMapFile);
- int meshdimbg = mfdbg->getMeshes()->getMeshAtPos(0)->getMeshDimension() ;
-// std::cout << "meshdimbg = " << meshdimbg << std::endl;
- if ( meshdimbg == 2 ) a_tester = true ;
- }
- if ( a_tester )
- {
- if ( optionValue == "" ) setOptionValue (optionName, "surface");
- else
- {
- if ( optionValue != "surface" )
- {
- SALOME::ExceptionStruct es;
- es.type = SALOME::BAD_PARAM;
- std::string text = "Mesh dimension is 2; the option should be 'surface' instead of '" + optionValue + "'." ;
- es.text = CORBA::string_dup(text.c_str());
- throw SALOME::SALOME_Exception(es);
- }
- }
- }
- }
-}
-
-void MgAdapt::checkFieldName(std::string fileIn)
-{
- bool ret = false ;
- std::vector<std::string> listFieldsNames = getListFieldsNames(fileIn);
- std::size_t jaux(listFieldsNames.size());
- for(std::size_t j=0;j<jaux;j++)
- {
- if ( fieldName == listFieldsNames[j] )
- {
- ret = true ;
- break ;
- }
- }
- if ( ! ret )
- {
- std::cout << "Available field names:" << std::endl;
- for(std::size_t j=0;j<jaux;j++)
- { std::cout << listFieldsNames[j] << std::endl;}
- SALOME::ExceptionStruct es;
- es.type = SALOME::BAD_PARAM;
- std::string text = "Field " + fieldName + " is not found." ;
- es.text = CORBA::string_dup(text.c_str());
- throw SALOME::SALOME_Exception(es);
- }
-}
-
-void MgAdapt::checkTimeStepRank(std::string fileIn)
-{
- bool ret = false ;
- MEDCoupling::MCAuto<MEDCoupling::MEDFileData> mfd = MEDCoupling::MEDFileData::New(fileIn);
- MEDCoupling::MCAuto<MEDCoupling::MEDFileAnyTypeFieldMultiTS> fts( mfd->getFields()->getFieldWithName(fieldName) );
- std::vector<double> timevalue;
- std::vector< std::pair<int,int> > timesteprank = fts->getTimeSteps(timevalue);
- std::size_t jaux(timesteprank.size());
- for(std::size_t j=0;j<jaux;j++)
- {
- if ( ( timeStep == timesteprank[j].first ) & ( rank == timesteprank[j].second ) )
- {
- ret = true ;
- break ;
- }
- }
- if ( ! ret )
- {
- std::cout << "Available (Time step, Rank):" << std::endl;
- for(std::size_t j=0;j<jaux;j++)
- { std::cout << "(Time step = " << timesteprank[j].first << ", Rank = " << timesteprank[j].second << ")" << std::endl;}
- SALOME::ExceptionStruct es;
- es.type = SALOME::BAD_PARAM;
- std::string text = "(Time step = " + std::to_string(timeStep) + ", Rank = " + std::to_string(rank) + ") is not found." ;
- es.text = CORBA::string_dup(text.c_str());
- throw SALOME::SALOME_Exception(es);
- }
-}
-
-void MgAdapt::convertMedFile(std::string& meshFormatMeshFileName, std::string& solFormatFieldFileName, std::string& meshFormatsizeMapFile)
-{
- std::vector<std::string> fieldFileNames;
- MEDCoupling::MeshFormatWriter writer;
- MEDCoupling::MCAuto<MEDCoupling::MEDFileData> mfd = MEDCoupling::MEDFileData::New(medFileIn);
- MEDCoupling::MEDFileMeshes* meshes = mfd->getMeshes();
- MEDCoupling::MEDFileMesh* fileMesh = meshes->getMeshAtPos(0); // ok only one mesh in file!
- if (meshNameOut =="")
- meshNameOut = fileMesh->getName();
- storeGroupsAndFams(fileMesh);
-
- MEDCoupling::MCAuto<MEDCoupling::MEDFileFields> fields = MEDCoupling::MEDFileFields::New();
- solFormatFieldFileName = getFileName();
- solFormatFieldFileName+=".sol";
- fieldFileNames.push_back(solFormatFieldFileName);
-
- if (useBackgroundMap)
- {
- checkFieldName(sizeMapFile) ;
- checkTimeStepRank(sizeMapFile) ;
- meshFormatsizeMapFile = getFileName();
- meshFormatsizeMapFile += ".mesh";
- buildBackGroundMeshAndSolFiles(fieldFileNames, meshFormatsizeMapFile);
- }
- else if(useLocalMap)
- {
- checkFieldName(medFileIn) ;
- checkTimeStepRank(medFileIn) ;
- MEDCoupling::MCAuto<MEDCoupling::MEDFileAnyTypeFieldMultiTS> fts( mfd->getFields()->getFieldWithName(fieldName) );
- MEDCoupling::MCAuto<MEDCoupling::MEDFileAnyTypeField1TS> f = fts->getTimeStep(timeStep, rank);
- MEDCoupling::MCAuto<MEDCoupling::MEDFileFieldMultiTS> tmFts = MEDCoupling::MEDFileFieldMultiTS::New();
- tmFts->pushBackTimeStep(f);
-
- fields->pushField(tmFts);
-
- writer.setFieldFileNames( fieldFileNames);
- }
- else
- {
- MEDCoupling::MCAuto<MEDCoupling::MEDCouplingMesh> mesh = fileMesh->getMeshAtLevel(1); // nodes mesh
- MEDCoupling::MCAuto<MEDCoupling::MEDCouplingUMesh> umesh = mesh->buildUnstructured(); // nodes mesh
- int dim = umesh->getSpaceDimension();
- int version = sizeof(double) < 8 ? 1 : 2;
- mcIdType nbNodes = umesh->getNumberOfNodes();
- buildConstantSizeMapSolFile(solFormatFieldFileName, dim, version, nbNodes);
- }
-
- mfd->setFields( fields );
- meshFormatMeshFileName = getFileName();
- meshFormatMeshFileName+=".mesh";
- writer.setMeshFileName(meshFormatMeshFileName);
- writer.setMEDFileDS( mfd);
- writer.write();
-
-}
-
-void MgAdapt::convertMeshFile(std::string& meshFormatIn, std::vector< std::string>& solFieldFileNames) const
-{
- MEDCoupling::MeshFormatReader reader(meshFormatIn, solFieldFileNames);
-
- MEDCoupling::MCAuto<MEDCoupling::MEDFileData> mfd = reader.loadInMedFileDS();
- // write MED
- MEDCoupling::MEDFileMeshes* meshes = mfd->getMeshes();
- MEDCoupling::MEDFileMesh* fileMesh = meshes->getMeshAtPos(0); // ok only one mesh in file!
- fileMesh->setName(meshNameOut);
- restoreGroupsAndFams(fileMesh);
- mfd->write(medFileOut, 2);
-}
-
-void MgAdapt::storeGroupsAndFams(MEDCoupling::MEDFileMesh* fileMesh)
-{
- storefams(fileMesh);
- storeGroups(fileMesh);
-}
-
-void MgAdapt::restoreGroupsAndFams(MEDCoupling::MEDFileMesh* fileMesh) const
-{
- restorefams(fileMesh);
- restoreGroups(fileMesh);
-}
-void MgAdapt::storeGroups(MEDCoupling::MEDFileMesh* fileMesh)
-{
- std::map<std::string, std::vector<std::string> > grpFams = fileMesh->getGroupInfo();
- std::map<std::string, std::vector<std::string> >::iterator g2ff = grpFams.begin();
-
- for ( ; g2ff != grpFams.end(); ++g2ff )
- {
- std::string groupName = g2ff->first;
- std::vector<std::string> famNames = g2ff->second;
-
- if ( famNames.empty() ) continue;
- std::size_t k = 0;
- std::vector< mcIdType> famListId;
- for ( size_t i = 0; i < famNames.size(); ++i )
- {
- famListId.push_back( fileMesh->getFamilyId( famNames[i].c_str() ) );
- }
- group grp(groupName, famListId, famNames);
- groupVec.push_back(grp);
- }
-}
-
-void MgAdapt::storefams(MEDCoupling::MEDFileMesh* fileMesh)
-{
- std::map<std::string, mcIdType> grpFams = fileMesh->getFamilyInfo();
- std::map<std::string, mcIdType >::iterator f = grpFams.begin();
-
- for ( ; f != grpFams.end(); ++f )
- {
- if(!f->second) continue; // FAMILLE_ZERO
- family fs(f->first, f->second);
- famVec.push_back(fs);
- }
-
-}
-
-void MgAdapt::restorefams(MEDCoupling::MEDFileMesh* fileMesh) const
-{
- std::vector<family>::const_iterator fIt = famVec.begin();
-
- for (; fIt!=famVec.end(); ++fIt)
- {
- try //
- {
- std::string givenFamNameFromMeshGemConverter = fileMesh->getFamilyNameGivenId( std::abs(fIt->_famId) );
- fileMesh->changeFamilyId(std::abs(fIt->_famId), fIt->_famId);
- fileMesh->changeFamilyName(givenFamNameFromMeshGemConverter, fIt->_famName);
- }
- catch (const std::exception& e)
- {
- std::cerr<<e.what();
- }
- }
-}
-
-void MgAdapt::restoreGroups(MEDCoupling::MEDFileMesh* fileMesh) const
-{
- std::map<std::string, std::vector<std::string> > info;
- std::vector <group>::const_iterator grpFams = groupVec.begin();
-
- for (; grpFams!=groupVec.end(); ++grpFams)
- {
- info.insert(std::pair <std::string, std::vector<std::string> > (grpFams->_name, grpFams->_famNames) );
- }
-
- fileMesh->setGroupInfo(info);
-}
-
-void MgAdapt::buildConstantSizeMapSolFile(const std::string& solFormatFieldFileName, const int dim, const int version, const mcIdType nbNodes) const
-{
- MeshFormat::Localizer loc;
- MeshFormat::MeshFormatParser writer;
- int fileId = writer.GmfOpenMesh( solFormatFieldFileName.c_str(), GmfWrite, version, dim);
- int typTab[] = {GmfSca};
- writer.GmfSetKwd(fileId, MeshFormat::GmfSolAtVertices, (int)nbNodes, 1, typTab);
- for (mcIdType i = 0; i<nbNodes; i++)
- {
- double valTab[1] = {constantValue};
- writer.GmfSetLin( fileId, MeshFormat::GmfSolAtVertices, valTab);
- }
- writer.GmfCloseMesh(fileId);
-}
-
-void MgAdapt::buildBackGroundMeshAndSolFiles(const std::vector<std::string>& fieldFileNames, const std::string& meshFormatsizeMapFile) const
-{
- MEDCoupling::MCAuto<MEDCoupling::MEDFileData> tmpMfd = MEDCoupling::MEDFileData::New(sizeMapFile);
- MEDCoupling::MEDFileFields* tmpFields = tmpMfd->getFields();
- MEDCoupling::MCAuto<MEDCoupling::MEDFileAnyTypeFieldMultiTS> fts( tmpFields->getFieldWithName(fieldName) );
- MEDCoupling::MCAuto<MEDCoupling::MEDFileFieldMultiTS> fts1 = MEDCoupling::DynamicCastSafe<MEDCoupling::MEDFileAnyTypeFieldMultiTS,MEDCoupling::MEDFileFieldMultiTS>(fts);
- MEDCoupling::MCAuto<MEDCoupling::MEDFileAnyTypeField1TS> f = fts1->getTimeStep(timeStep, rank);
- MEDCoupling::MCAuto<MEDCoupling::MEDFileFieldMultiTS> tmFts = MEDCoupling::MEDFileFieldMultiTS::New();
- tmFts->pushBackTimeStep(f);
-
- MEDCoupling::MCAuto<MEDCoupling::MEDFileFields> tmp_fields = MEDCoupling::MEDFileFields::New();
- tmp_fields->pushField(tmFts);
-
- tmpMfd->setFields( tmp_fields );
- MEDCoupling::MeshFormatWriter tmpWriter;
- tmpWriter.setMeshFileName(meshFormatsizeMapFile);
- tmpWriter.setFieldFileNames( fieldFileNames);
- tmpWriter.setMEDFileDS(tmpMfd);
- tmpWriter.write();
-}
-// =======================================================================
-med_idt MgAdapt::openMedFile(const std::string aFile)
-// =======================================================================
-// renvoie le medId associe au fichier Med apres ouverture
-{
- med_idt medIdt = MEDfileOpen(aFile.c_str(),MED_ACC_RDONLY);
- if (medIdt <0)
- {
- SALOME::ExceptionStruct es;
- es.type = SALOME::BAD_PARAM;
- std::string text = "\nThe med file " + aFile + " cannot be opened.\n" ;
- es.text = CORBA::string_dup(text.c_str());
- throw SALOME::SALOME_Exception(es);
- }
- return medIdt;
-}
-
-MgAdapt::Status MgAdapt::addMessage(const std::string& msg,
- const bool isFatal/*=false*/)
-{
- if ( isFatal )
- _myErrorMessages.clear(); // warnings are useless if a fatal error encounters
-
- _myErrorMessages.push_back( msg );
-
-//~MESSAGE(msg);
-#ifdef _DEBUG_
- std::cout << msg << std::endl;
-#endif
- return ( _myStatus = isFatal ? MgAdapt::DRS_FAIL : MgAdapt::DRS_WARN_SKIP_ELEM );
-}
-
-// =======================================================================
-void MgAdapt::getTimeStepInfos(std::string aFile, med_int& numdt, med_int& numit)
-// =======================================================================
-{
-// Il faut voir si plusieurs maillages
-
- herr_t erreur = 0 ;
- med_idt medIdt ;
-
-
- // Ouverture du fichier
- //~SCRUTE(aFile.toStdString());
- medIdt = openMedFile(aFile);
- if ( medIdt < 0 ) return ;
- // Lecture du nombre de champs
- med_int ncha = MEDnField(medIdt) ;
- if (ncha < 1 )
- {
- //~addMessage( ToComment(" error: there is no field in ") << aFile, /*fatal=*/true );
- return;
- }
- // Lecture des caracteristiques du champs
-
- // Lecture du type du champ, des noms des composantes et du nom de l'unite
- char nomcha [MED_NAME_SIZE+1];
- strcpy(nomcha, fieldName.c_str());
-// Lecture du nombre de composantes
- med_int ncomp = MEDfieldnComponentByName(medIdt, nomcha);
- char meshname[MED_NAME_SIZE+1];
- char * comp = (char*) malloc(ncomp*MED_SNAME_SIZE+1);
- char * unit = (char*) malloc(ncomp*MED_SNAME_SIZE+1);
- char dtunit[MED_SNAME_SIZE+1];
- med_bool local;
- med_field_type typcha;
- med_int nbofcstp;
- erreur = MEDfieldInfoByName (medIdt, nomcha, meshname,&local,&typcha,comp,unit,dtunit, &nbofcstp);
- free(comp);
- free(unit);
- if ( erreur < 0 )
- {
- //~addMessage( ToComment(" error: error while reading field ") << nomcha << " in file " << aFile , /*fatal=*/true );
- return;
- }
-
- med_float dt;
- med_int tmp_numdt, tmp_numit;
-
- //~med_int step = data->myUseLastTimeStep ? nbofcstp : data->myTimeStep+1;
- //~myPrint("step ", step);
- erreur = MEDfieldComputingStepInfo ( medIdt, nomcha, 1, &numdt, &numit, &dt );
- for(med_int step = 1; step <= nbofcstp; step++ )
- {
- erreur = MEDfieldComputingStepInfo ( medIdt, nomcha, step, &tmp_numdt, &tmp_numit, &dt );
- if(tmp_numdt > numdt)
- {
- numdt = tmp_numdt;
- numit = tmp_numit;
- }
- }
- if ( erreur < 0 )
- {
- //~addMessage( ToComment(" error: error while reading field ") << nomcha << "step (numdt, numit) = " <<"("<< numdt<< ", " \
- numit<< ")" <<" in file " << aFile , /*fatal=*/true );
- return;
- }
-
- // Fermeture du fichier
- if ( medIdt > 0 ) MEDfileClose(medIdt);
-
-}
-
-void MgAdapt::updateTimeStepRank()
-{
-
- med_int arank;
- med_int tmst;
- if (myUseNoTimeStep)
- {
- arank = MED_NO_IT;
- tmst = MED_NO_DT ;
- setRankTimeStep((int)tmst, (int)arank);
- }
- else if (myUseLastTimeStep)
- {
- std::string fieldFile = useBackgroundMap ? sizeMapFile : medFileIn;
- getTimeStepInfos(fieldFile, tmst, arank);
- setRankTimeStep((int)tmst, (int)arank);
- }
-}
+++ /dev/null
-// Copyright (C) 2007-2020 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, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-// File : MG_ADAPT.hxx
-//
-#ifndef MG_ADAPT_HXX
-#define MG_ADAPT_HXX
-#include <string>
-# include <sstream>
-#include <map>
-#include <vector>
-#include <set>
-#include <fstream>
-
-#include "MCAuto.hxx"
-#include "MCType.hxx"
-#include "MEDFileMesh.hxx"
-
-#include <med.h>
-// SMESH includes
-
-//~#include <med.h>
-std::string remove_extension(const std::string& filename);
-namespace MG_ADAPT{
-class MgAdapt;
-
-typedef std::map< std::string, std::string > TOptionValues;
-typedef std::set< std::string > TOptionNames;
-
-struct MgAdaptHypothesisData
-{
- std::string myFileInDir, myMeshFileIn, myInMeshName, myMeshFileBackground, myOutMeshName,
- myMeshFileOut, myFileOutDir, myFileSizeMapDir, myFieldName;
- bool fromMedFile;
- bool myPublish, myMeshOutMed;
- bool myUseLocalMap, myUseBackgroundMap, myUseConstantValue;
- double myConstantValue;
- int myRank, myTimeStep;
- bool myUseNoTimeStep, myUseLastTimeStep, myUseChosenTimeStep;
- std::string myWorkingDir, myLogFile;
- bool myPrintLogInFile, myKeepFiles, myRemoveLogOnSuccess;
- int myVerboseLevel;
-};
-
-class outFileStream : public std::ofstream{
-public:
- ~outFileStream(){close();} //to close file at dtor
-};
-
-/*!
- * \brief Class to generate string from any type
- */
-class ToComment : public std::string
-{
- std::ostringstream _s ;
-
-public :
-
- ToComment():std::string("") {}
-
- ToComment(const ToComment& c):std::string() {
- _s << c.c_str() ;
- this->std::string::operator=( _s.str() );
- }
-
- ToComment & operator=(const ToComment& c) {
- _s << c.c_str() ;
- this->std::string::operator=( _s.str() );
- return *this;
- }
-
- template <class T>
- ToComment( const T &anything ) {
- _s << anything ;
- this->std::string::operator=( _s.str() );
- }
-
- template <class T>
- ToComment & operator<<( const T &anything ) {
- _s << anything ;
- this->std::string::operator=( _s.str() );
- return *this ;
- }
-
- operator char*() const {
- return (char*)c_str();
- }
-
- std::ostream& Stream() {
- return _s;
- }
-};
-
-
-class MgAdapt
-{
-
-public:
-
- MgAdapt();
- MgAdapt(MgAdaptHypothesisData*);
- MgAdapt(const MgAdapt&);
- ~MgAdapt();
- void buildModel();
- void setData( MgAdaptHypothesisData* data);
-
- void setMedFileIn(std::string fileName);
- std::string getMedFileIn();
-
- void setMedFileOut(std::string fileOut);
- std::string getMedFileOut();
-
- void setMeshName(std::string name);
- std::string getMeshName();
-
- void setMeshNameOut(std::string name);
- std::string getMeshNameOut();
-
- void setMeshOutMed(bool mybool);
- bool getMeshOutMed();
-
- void setPublish(bool mybool);
- bool getPublish();
-
- void setFieldName(std::string myFieldName);
- std::string getFieldName();
-
- void setTimeStep(int time);
- int getTimeStep() const;
-
- void setRankTimeStep(int time, int myRank);
- int getRank();
-
- void setTimeStepRankLast();
- void setNoTimeStep();
- void setChosenTimeStepRank();
- void updateTimeStepRank();
-
- void setLogFile(std::string);
- std::string getLogFile();
-
- void setVerbosityLevel(int verbosity);
- int getVerbosityLevel();
-
- void setRemoveOnSuccess(bool mybool);
- bool getRemoveOnSuccess();
-
- MgAdaptHypothesisData* getData() const;
-
- void setUseLocalMap(bool mybool);
- bool getUseLocalMap();
-
- void setUseBackgroundMap(bool mybool);
- bool getUseBackgroundMap();
-
- void setUseConstantValue(bool mybool);
- bool getUseConstantValue();
-
- void setConstantValue(double cnst);
- double getConstantValue() const;
-
- void setSizeMapFile(std::string mapFile);
- std::string getSizeMapFile();
-
- void setFromMedFile(bool mybool);
- bool isFromMedFile();
-
- void setKeepWorkingFiles(bool mybool);
- bool getKeepWorkingFiles();
-
- void setPrintLogInFile(bool mybool);
- bool getPrintLogInFile();
-
- void setWorkingDir(std::string dir);
- std::string getWorkingDir() const;
-
-
- bool setAll();
- static std::string getCommandToRun(MgAdapt* );
- std::string getCommandToRun() ;
- int compute(std::string& errStr);
- std::string getFileName() const;
- static std::string getExeName();
- void copyMgAdaptHypothesisData( const MgAdaptHypothesisData* from) ;
-
- void checkDirPath(std::string& dirPath);
-
- bool hasOptionDefined( const std::string& optionName ) const;
- void setOptionValue(const std::string& optionName,
- const std::string& optionValue) throw (std::invalid_argument);
- std::string getOptionValue(const std::string& optionName,
- bool* isDefault=0) const throw (std::invalid_argument);
- std::vector <std::string> getCustomOptionValuesStrVec() const;
- std::vector <std::string> getOptionValuesStrVec() const;
-
-
- TOptionValues getOptionValues() const;
- const TOptionValues& getCustomOptionValues() const ;
- static double toDbl(const std::string&, bool* isOk = 0) throw (std::invalid_argument);
- static bool toBool(const std::string&, bool* isOk = 0) throw (std::invalid_argument);
- static int toInt(const std::string&, bool* isOk = 0 ) throw (std::invalid_argument);
- static std::string toLowerStr(const std::string& str);
-
- /* default values */
- static std::string defaultWorkingDirectory();
- static std::string defaultLogFile();
- static bool defaultKeepFiles();
- static bool defaultRemoveLogOnSuccess();
- static int defaultVerboseLevel();
- static bool defaultPrintLogInFile();
- static bool defaultFromMedFile();
- static bool defaultMeshOutMed();
- static bool defaultPublish();
- static bool defaultUseLocalMap();
- static bool defaultUseBackgroundMap();
- static bool defaultUseConstantValue();
- static bool defaultUseNoTimeStep();
- static bool defaultUseLastTimeStep();
- static bool defaultUseChosenTimeStep();
- static double defaultMaximumMemory();
- static bool isFileExist(const std::string& fName);
-
- enum Status {
- DRS_OK,
- DRS_EMPTY, // a file contains no mesh with the given name
- DRS_WARN_RENUMBER, // a file has overlapped ranges of element numbers,
- // so the numbers from the file are ignored
- DRS_WARN_SKIP_ELEM, // some elements were skipped due to incorrect file data
- DRS_WARN_DESCENDING, // some elements were skipped due to descending connectivity
- DRS_FAIL, // general failure (exception etc.)
- DRS_NO_TIME_STEP // general failure (exception etc.)
- };
-
- struct group {
-
- std::string _name;
- std::vector<MEDCoupling::mcIdType> _famListId;
- std::vector<std::string> _famNames;
- group(std::string name, std::vector<MEDCoupling::mcIdType> famListId, std::vector<std::string> famNames):_name(name)
- {
- std::vector<MEDCoupling::mcIdType>::iterator it = famListId.begin();
- for (; it!=famListId.end(); ++it)
- _famListId.push_back(*it);
-
- std::vector<std::string>::iterator itt = famNames.begin();
- for (; itt!=famNames.end(); ++itt)
- _famNames.push_back(*itt);
- }
- };
-
- struct family {
- std::string _famName;
- mcIdType _famId;
- family(std::string famName, MEDCoupling::mcIdType famId):_famName(famName), _famId(famId) {}
- };
-
-
-private :
- bool fromMedFile;
- std::string medFileIn;
- std::string medFileOut;
- std::string meshName;
- std::string meshNameOut;
- bool publish, meshOutMed;
- bool useLocalMap, useBackgroundMap, useConstantValue;
- bool myUseLastTimeStep, myUseNoTimeStep, myUseChosenTimeStep;
- std::string sizeMapFile;
- std::string fieldName;
- double constantValue;
- int rank, timeStep;
-
- /* advanced options */
-
-
- std::string logFile;
- std::string workingDir;
- int verbosityLevel;
- bool removeOnSuccess;
- bool toKeepWorkingFiles;
- bool printLogInFile;
-
- /* Model DATA */
- MgAdaptHypothesisData* data;
-
- /* */
-
- TOptionValues _option2value, _customOption2value; // user defined values
- TOptionValues _defaultOptionValues; // default values
- TOptionNames _doubleOptions, _charOptions, _boolOptions; // to find a type of option
-
- std::vector <std::string> _myErrorMessages;
- Status _myStatus;
- std::string meshFormatOutputMesh;
- std::vector< std::string> solFormatOutput;
- std::vector <group> groupVec;
- std::vector <family> famVec;
- std::vector< std::string> tmpFilesToBeDeleted;
-
- /* convert MED-->.mesh format */
- void convertMedFile(std::string& meshIn,std::string& solFileIn, std::string& sizeMapIn) ;
- void storeGroups(MEDCoupling::MEDFileMesh* fileMesh);
- void restoreGroups(MEDCoupling::MEDFileMesh* fileMesh) const;
- void storefams(MEDCoupling::MEDFileMesh* fileMesh);
- void restorefams(MEDCoupling::MEDFileMesh* fileMesh) const;
- void storeGroupsAndFams(MEDCoupling::MEDFileMesh* fileMesh);
- void restoreGroupsAndFams(MEDCoupling::MEDFileMesh* fileMesh) const;
- void convertMeshFile(std::string& meshFormatIn, std::vector< std::string>& solFieldFileNames) const ;
- void buildConstantSizeMapSolFile(const std::string& solFormatFieldFileName, const int dim, const int version, const mcIdType nbNodes) const;
- void buildBackGroundMeshAndSolFiles(const std::vector<std::string>& fieldFileNames, const std::string& meshFormatsizeMapFile) const;
- void getTimeStepInfos(std::string aFile, med_int& numdt, med_int& numit);
- Status addMessage(const std::string& msg, const bool isFatal = false);
- med_idt openMedFile(const std::string aFile) ;
- void execCmd( const char* cmd, int& err);
- void cleanUp();
- void appendMsgToLogFile(std::string& msg);
- std::vector<std::string> getListFieldsNames(std::string fileIn) ;
- void checkDimensionOptionAdaptation() ;
- void checkFieldName(std::string fileIn) ;
- void checkTimeStepRank(std::string fileIn) ;
-
-};
-
-}
-
-#endif // MG_ADAPT_HXX
${PROJECT_SOURCE_DIR}/src/SMESH_I
${PROJECT_BINARY_DIR}
${PROJECT_BINARY_DIR}/idl
- ${MEDCOUPLING_INCLUDE_DIRS}
)
# additional preprocessor / compiler flags
SMESHControls
SMESHObject
SMESHEngine
- ${MEDCoupling_medloader}
)
# --- headers ---
SMESHGUI_SplitBiQuad.h
SMESHGUI_IdPreview.h
SMESHGUI_PreVisualObj.h
- SMESHGUI_AdaptDlg.h
- SMESHGUI_MG_ADAPTDRIVER.h
- MG_ADAPTGUI.hxx # to replace in ../ADAPTGUI/
)
# header files / no moc processing
SMESHGUI_FileValidator.h
SMESHGUI_SelectionProxy.h
SMESH_SMESHGUI.hxx
- #~MG_ADAPT.hxx # to replace in ../ADAPT/
)
# header files / to install
SMESHGUI_SplitBiQuad.cxx
SMESHGUI_PreVisualObj.cxx
SMESHGUI_IdPreview.cxx
- SMESHGUI_AdaptDlg.cxx
- SMESHGUI_MG_ADAPTDRIVER.cxx
- MG_ADAPTGUI.cxx # to replace in ../ADAPTGUI/
- #MG_ADAPT.cxx
)
# sources / to compile
SMESH_msg_en.ts
SMESH_msg_fr.ts
SMESH_msg_ja.ts
-)
+)
# --- rules ---
+++ /dev/null
-// Copyright (C) 2007-2020 CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-// file : MG_ADAPTGUI.cxx
-
-#include "MG_ADAPTGUI.hxx"
-
-#include "MEDFileData.hxx"
-#include "MEDLoader.hxx"
-
-#include "SUIT_Desktop.h"
-#include "SUIT_Application.h"
-#include "SUIT_Session.h"
-
-#include "SalomeApp_Application.h"
-#include "SalomeApp_Module.h"
-#include "SalomeApp_Study.h"
-#include <SUIT_MessageBox.h>
-#include <LightApp_SelectionMgr.h>
-#include <SUIT_OverrideCursor.h>
-#include <SUIT_ResourceMgr.h>
-#include <SVTK_ViewWindow.h>
-#include <SALOME_ListIO.hxx>
-#include <SUIT_FileDlg.h>
-#include <QApplication>
-#include <QButtonGroup>
-#include <QGridLayout>
-#include <QGroupBox>
-#include <QHBoxLayout>
-#include <QKeyEvent>
-#include <QLabel>
-#include <QLineEdit>
-#include <QCheckBox>
-#include <QPushButton>
-#include <QRadioButton>
-#include <QTabWidget>
-#include <QVBoxLayout>
-#include <QDoubleSpinBox>
-#include <QSpinBox>
-#include <QTreeWidget>
-#include <QTreeWidgetItem>
-#include <QSpacerItem>
-#include <QString>
-#include <QHeaderView>
-#include <QItemDelegate>
-#include <QFileDialog>
-#include <QMessageBox>
-#include <QComboBox>
-
-#include <vtkPoints.h>
-#include <vtkUnstructuredGrid.h>
-#include <vtkIdList.h>
-#include <vtkCellArray.h>
-#include <vtkUnsignedCharArray.h>
-#include <vtkDataSetMapper.h>
-#include <VTKViewer_CellLocationsArray.h>
-#include <vtkProperty.h>
-
-#include <ElCLib.hxx>
-// SALOME KERNEL includes
-#include <SALOMEDS_SComponent.hxx>
-#include <SALOMEDS_SObject.hxx>
-#include <SALOMEDS_Study.hxx>
-#include <SALOMEDS_wrap.hxx>
-#include "SalomeApp_Tools.h"
-#include <SALOMEconfig.h>
-#include <med.h>
-#include <utilities.h>
-
-#include <TCollection_AsciiString.hxx>
-
-const int SPACING = 6; // layout spacing
-const int MARGIN = 9; // layout margin
-
-//=================================================================================
-// function : SMESHGUI_MgAdaptDlg()
-// purpose :
-//=================================================================================
-SMESHGUI_MgAdaptDlg::SMESHGUI_MgAdaptDlg( SalomeApp_Module* theModule, SMESH::MG_ADAPT_ptr myModel, QWidget* parent, bool isCreation )
- : mySMESHGUI( theModule ), QDialog(parent)
-{
- //~model = new MgAdapt(*myModel);
- model = SMESH::MG_ADAPT::_duplicate(myModel);
- myData = model->getData();
- buildDlg();
- if (!isCreation) readParamsFromHypo();
-}
-
-void SMESHGUI_MgAdaptDlg::buildDlg()
-{
- setModal( false );
- setAttribute( Qt::WA_DeleteOnClose, true );
- setWindowTitle( tr( "ADAPT_PREF_MG_ADAPT" ) );
- setSizeGripEnabled( true );
-
- myTabWidget = new QTabWidget( this );
-
- // Arguments
-
- myArgs = new SMESHGUI_MgAdaptArguments( myTabWidget );
- SMESH::str_array* str = model->getOptionValuesStrVec();
- SMESH::str_array* str2 = model->getCustomOptionValuesStrVec();
- std::vector<std::string> s;
- for (int i = 0; i< str->length(); i++) s.push_back( (*str)[i].in());
- for (int j = str->length(); j< str2->length(); j++) s.push_back((*str2)[ j - str->length() ].in() );
- //~str.insert( str.end(), str2.begin(), str2.end() );
-
- myAdvOpt = new MgAdaptAdvWidget(myTabWidget, &s);
-
- int argsTab = myTabWidget->addTab( myArgs, tr( "Args" ) );
- int advTab = myTabWidget->addTab( myAdvOpt, tr( "ADVOP" ) );
-
- myAdvOpt->workingDirectoryLabel ->setText (tr( "WORKING_DIR" ));
- myAdvOpt->workingDirectoryPushButton ->setText (tr( "SELECT_DIR" ));
- myAdvOpt->keepWorkingFilesCheck ->setText (tr( "KEEP_WORKING_FILES" ));
- myAdvOpt->verboseLevelLabel ->setText (tr( "VERBOSE_LEVEL" ));
- myAdvOpt->removeLogOnSuccessCheck ->setText (tr( "REMOVE_LOG_ON_SUCCESS" ));
- myAdvOpt->logInFileCheck ->setText (tr( "LOG_IN_FILE" ));
- myAdvOpt->logGroupBox ->setTitle(tr( "LOG_GROUP_TITLE" ));
-
- // buttons
- QPushButton* buttonOk = new QPushButton(tr("SMESH_BUT_APPLY_AND_CLOSE"), this);
- buttonOk->setAutoDefault(false);
- QPushButton* buttonApply = new QPushButton(tr("SMESH_BUT_APPLY"), this);
- buttonApply->setAutoDefault(false);
- QPushButton* buttonCancel = new QPushButton( tr( "SMESH_BUT_CANCEL" ), this );
- buttonCancel->setAutoDefault( false );
- QPushButton* buttonHelp = new QPushButton( tr( "SMESH_BUT_HELP" ), this );
- buttonHelp->setAutoDefault( false );
-
- QHBoxLayout* btnLayout = new QHBoxLayout;
- btnLayout->setSpacing( SPACING );
- btnLayout->setMargin( 0 );
- btnLayout->addWidget( buttonOk );
- btnLayout->addStretch( 10 );
- btnLayout->addWidget( buttonApply );
- btnLayout->addStretch( 10 );
- btnLayout->addWidget( buttonCancel );
- btnLayout->addStretch( 10 );
- btnLayout->addWidget( buttonHelp );
-
- QVBoxLayout* l = new QVBoxLayout ( this );
- l->setMargin( MARGIN );
- l->setSpacing( SPACING );
- l->addWidget( myTabWidget );
- l->addStretch();
- l->addLayout( btnLayout );
-
- connect( buttonOk, SIGNAL(pressed()), this, SLOT(PushOnOK()));
- connect( buttonApply, SIGNAL(pressed()), this, SLOT(PushOnApply()));
- connect( buttonCancel, SIGNAL(pressed()), this, SLOT(close()));
- connect( buttonHelp, SIGNAL(pressed()), this, SLOT(PushOnHelp()));
-
- connect( myArgs, SIGNAL(meshDimSignal(ADAPTATION_MODE)), myAdvOpt, SLOT( onMeshDimChanged(ADAPTATION_MODE)) );
-}
-
-
-//=================================================================================
-// function : ~SMESHGUI_MgAdaptDlg()
-// purpose : Destroys the object and frees any allocated resources
-//=================================================================================
-SMESHGUI_MgAdaptDlg::~SMESHGUI_MgAdaptDlg()
-{
- //~delete model;
-}
-
-//~void SMESHGUI_MgAdaptDlg::setModel(MgAdapt* mg)
-//~{
- //~model = mg;
-//~}
-SMESH::MG_ADAPT_ptr SMESHGUI_MgAdaptDlg::getModel() const
-{
- return model;
-}
-/*!
-\brief Perform clean-up actions on the dialog box closing.
-*/
-bool SMESHGUI_MgAdaptDlg::PushOnApply()
-{
- bool ret = readParamsFromWidgets();
- return ret;
-}
-void SMESHGUI_MgAdaptDlg::PushOnOK()
-{
- bool ret = PushOnApply();
- if ( ret ) reject();
-}
-void SMESHGUI_MgAdaptDlg::reject()
-{
- QDialog::reject();
-}
-bool SMESHGUI_MgAdaptDlg::readParamsFromHypo( ) const
-{
- bool ret = true;
- myArgs->aMedfile->setChecked(myData->fromMedFile) ;
- if (myData->fromMedFile)
- {
-
- *(myArgs->myFileInDir) = QString(myData->myFileInDir) ;
- myArgs->selectMedFileLineEdit->setText(QString(myData->myMeshFileIn)) ;
- // myData->myInMeshName = // TODO
-
- }
- else
- {
- myArgs->aBrowserObject->setText(QString(myData->myInMeshName));
- //~ myArgs->myFileInDir =""; // TODO
- //~ myArgs->selectMedFileLineEdit->setText(); // TODO
- }
- myArgs->meshNameLineEdit->setText(QString(myData->myOutMeshName));
- myArgs->medFileCheckBox->setChecked(myData->myMeshOutMed);
-
- if(myData->myMeshOutMed)
- {
- *(myArgs->myFileOutDir) = QString(myData->myFileOutDir);
- myArgs->selectOutMedFileLineEdit->setText(QString(myData->myMeshFileOut));
- }
- else
- {
- *(myArgs->myFileOutDir) = QString(""); //TODO
- }
-
- myArgs->publishOut->setChecked(myData->myPublish);
-
- myArgs->localButton->setChecked(myData->myUseLocalMap);
- myArgs->backgroundButton->setChecked(myData->myUseBackgroundMap);
- myArgs->constantButton->setChecked(myData->myUseConstantValue);
-
- if (myData->myUseConstantValue)
- {
- myArgs->dvalue->setValue(myData->myConstantValue);
- }
- else
- {
- myArgs->dvalue->setValue(0.0);
- }
-
- if (myData->myUseBackgroundMap)
- {
-
- *(myArgs->myFileSizeMapDir) = QString(myData->myFileSizeMapDir) ;
- myArgs->selectMedFileBackgroundLineEdit->setText(QString(myData->myMeshFileBackground));
- }
- else
- {
- *(myArgs->myFileSizeMapDir) = QString("") ; //TODO
- myArgs->selectMedFileBackgroundLineEdit->setText(""); //TODO
- }
-
- myArgs->fieldNameCmb->setCurrentText(QString(myData->myFieldName));
- myArgs->noTimeStep->setChecked(myData->myUseNoTimeStep);
- myArgs->lastTimeStep->setChecked( myData->myUseLastTimeStep);
- myArgs->chosenTimeStep->setChecked(myData->myUseChosenTimeStep);
- if (myData->myUseChosenTimeStep)
- {
- myArgs->rankSpinBox->setValue(myData->myRank);
- myArgs->timeStep->setValue(myData->myTimeStep);
- }
-
- myAdvOpt->workingDirectoryLineEdit->setText(QString(myData->myWorkingDir));
- myAdvOpt->logInFileCheck->setChecked(myData->myPrintLogInFile);
-
- myAdvOpt->verboseLevelSpin->setValue(myData->myVerboseLevel);
- myAdvOpt->removeLogOnSuccessCheck->setChecked(myData->myRemoveLogOnSuccess);
- myAdvOpt->keepWorkingFilesCheck->setChecked(myData->myKeepFiles);
-
- return ret;
-
-}
-
-bool SMESHGUI_MgAdaptDlg::readParamsFromWidgets()
-{
- MESSAGE ("readParamsFromWidgets") ;
- bool ret = true ;
- SMESH::MgAdaptHypothesisData* aData = new SMESH::MgAdaptHypothesisData();
- while ( ret )
- {
- // 1. Fichier du maillage de départ
- aData->fromMedFile = myArgs->aMedfile->isChecked();
- if (aData->fromMedFile)
- {
- aData->myFileInDir = CORBA::string_dup(myArgs->myFileInDir->toStdString().c_str());
- aData->myMeshFileIn = CORBA::string_dup(myArgs->selectMedFileLineEdit->text().toStdString().c_str());
- // aData->myInMeshName = // TODO
- }
- else // TODO browser
- {
- QMessageBox::critical( 0, QObject::tr("MG_ADAPT_ERROR"),
- QObject::tr("MG_ADAPT_MED_FILE_4") );
- ret = false ;
- break ;
- // aData->myInMeshName = CORBA::string_dup(myArgs->aBrowserObject->text().toStdString().c_str());
- // aData->myFileInDir = CORBA::string_dup(myAdvOpt->workingDirectoryLineEdit->text().toStdString().c_str());
- //
- // TCollection_AsciiString aGenericName = (char*)aData->myFileInDir;
- // TCollection_AsciiString aGenericName2 = "MgAdapt_";
- // aGenericName2 += getpid();
- // aGenericName2 += "_";
- // aGenericName2 += Abs((Standard_Integer)(long) aGenericName.ToCString());
- // aGenericName2 += ".med";
- // aGenericName+=aGenericName2;
- // emit myArgs->toExportMED(aGenericName.ToCString());
- // aData->myMeshFileIn = aGenericName2.ToCString();
- }
- // 2. Fichier du maillage de sortie
- aData->myOutMeshName = CORBA::string_dup(myArgs->meshNameLineEdit->text().toStdString().c_str());
- aData->myMeshOutMed = myArgs->medFileCheckBox->isChecked();
- if(aData->myMeshOutMed)
- {
- aData->myFileOutDir = CORBA::string_dup(myArgs->myFileOutDir->toStdString().c_str());
- aData->myMeshFileOut = CORBA::string_dup(myArgs->selectOutMedFileLineEdit->text().toStdString().c_str());
- }
- else
- {
- aData->myMeshFileOut = "";
- }
- aData->myPublish = myArgs->publishOut->isChecked();
-
- // 3. Type de carte de tailles
- aData->myUseLocalMap = myArgs->localButton->isChecked();
- aData->myUseBackgroundMap = myArgs->backgroundButton->isChecked();
- aData->myUseConstantValue = myArgs->constantButton->isChecked();
- // 3.1. Constante
- if (aData->myUseConstantValue)
- {
- aData->myConstantValue = myArgs->dvalue->value();
- }
- else
- {
- aData->myConstantValue = 0.0;
- }
- // 3.2. Arrière-plan
- if (aData->myUseBackgroundMap)
- {
- aData->myFileSizeMapDir = CORBA::string_dup(myArgs->myFileSizeMapDir->toStdString().c_str());
- aData->myMeshFileBackground = CORBA::string_dup(myArgs->selectMedFileBackgroundLineEdit->text().toStdString().c_str());
- }
- else
- {
- aData->myMeshFileBackground = "";
- }
-
- // 4. Le champ
- if ( ! aData->myUseConstantValue )
- {
- if ( strlen(myArgs->fieldNameCmb->currentText().toStdString().c_str()) == 0 )
- {
- QMessageBox::critical( 0, QObject::tr("MG_ADAPT_ERROR"),
- QObject::tr("MG_ADAPT_MED_FILE_5") );
- ret = false ;
- break ;
- }
- {
- aData->myFieldName = CORBA::string_dup(myArgs->fieldNameCmb->currentText().toStdString().c_str());
- aData->myUseNoTimeStep = myArgs->noTimeStep->isChecked();
- aData->myUseLastTimeStep = myArgs->lastTimeStep->isChecked();
- aData->myUseChosenTimeStep = myArgs->chosenTimeStep->isChecked();
- if (aData->myUseChosenTimeStep)
- {
- aData->myRank = myArgs->rankSpinBox->value();
- aData->myTimeStep = myArgs->timeStep->value();
- }
- }
- }
-
- // 5. Options avancées
- aData->myWorkingDir = CORBA::string_dup(myAdvOpt->workingDirectoryLineEdit->text().toStdString().c_str());
- aData->myPrintLogInFile = myAdvOpt->logInFileCheck->isChecked();
- aData->myVerboseLevel = myAdvOpt->verboseLevelSpin->value();
- aData->myRemoveLogOnSuccess = myAdvOpt->removeLogOnSuccessCheck->isChecked();
- aData->myKeepFiles = myAdvOpt->keepWorkingFilesCheck->isChecked();
- model->setData(*aData);
-
- QString msg;
- checkParams(msg);
- break ;
- }
-
- delete aData;
-
- return ret;
-}
-bool SMESHGUI_MgAdaptDlg::storeParamsToHypo( const SMESH::MgAdaptHypothesisData& ) const
-{
-}
-/*!
- \brief Show help page
-*/
-void SMESHGUI_MgAdaptDlg::PushOnHelp()
-{
-// QString aHelpFile;
- // if ( myTabWidget->currentIndex() == MinDistance ) {
- // aHelpFile = "measurements.html#min-distance-anchor";
- // } else if ( myTabWidget->currentIndex() == BoundingBox ) {
- // aHelpFile = "measurements.html#bounding-box-anchor";
- // } else if ( myTabWidget->currentWidget() == myAngle ) {
- // aHelpFile = "measurements.html#angle-anchor";
- // } else {
- // aHelpFile = "measurements.html#basic-properties-anchor";
- // }
-
-// SMESH::ShowHelpFile( aHelpFile );
-}
-bool SMESHGUI_MgAdaptDlg::checkParams(QString& msg)
-{
- if ( !QFileInfo( myAdvOpt->workingDirectoryLineEdit->text().trimmed() ).isWritable() )
- {
- SUIT_MessageBox::warning( this,
- tr( "SMESH_WRN_WARNING" ),
- tr( "NO_PERMISSION" ) );
- return false;
- }
-
-
- myAdvOpt->myOptionTable->setFocus();
- QApplication::instance()->processEvents();
-
- QString name, value;
- bool isDefault, ok = true;
- int iRow = 0, nbRows = myAdvOpt->myOptionTable->topLevelItemCount();
- for ( ; iRow < nbRows; ++iRow )
- {
- QTreeWidgetItem* row = myAdvOpt->myOptionTable->topLevelItem( iRow );
- myAdvOpt->GetOptionAndValue( row, name, value, isDefault );
-
- if ( name.simplified().isEmpty() )
- continue; // invalid custom option
-
- if ( isDefault ) // not selected option
- value.clear();
-
- try
- {
- model->setOptionValue( name.toLatin1().constData(), value.toLatin1().constData() );
- }
- catch ( const SALOME::SALOME_Exception& ex )
- {
- msg = ex.details.text.in();
- ok = false;
- break;
- }
- }
-
- return ok;
-}
-
-//=================================================================================
-// function : SMESHGUI_MgAdaptArguments()
-// purpose :
-//=================================================================================
-SMESHGUI_MgAdaptArguments::SMESHGUI_MgAdaptArguments( QWidget* parent )
- :QWidget(parent)
-{
-
- myFileInDir = new QString("");
- myFileOutDir = new QString("");
- myFileSizeMapDir = new QString("");
- if ( SUIT_FileDlg::getLastVisitedPath().isEmpty() )
- {
- *myFileInDir = QDir::currentPath();
- *myFileOutDir = QDir::currentPath();
- *myFileSizeMapDir = QDir::currentPath();
- }
- else
- {
- *myFileInDir = SUIT_FileDlg::getLastVisitedPath();
- *myFileOutDir = SUIT_FileDlg::getLastVisitedPath();
- *myFileSizeMapDir = SUIT_FileDlg::getLastVisitedPath();
- }
-
- meshDim = 0;
- meshDimBG = 0;
- // Mesh in
- aMeshIn = new QGroupBox( tr( "MeshIn" ), this );
- aMedfile = new QRadioButton( tr( "MEDFile" ), aMeshIn );
- aBrowser = new QRadioButton( tr( "Browser" ), aMeshIn );
- aBrowserObject = new QLineEdit( aMeshIn );
- selectMedFilebutton = new QPushButton("...", aMeshIn);
- selectMedFileLineEdit = new QLineEdit( aMeshIn );
-
- meshIn = new QGridLayout( aMeshIn );
-
- meshIn->setMargin( MARGIN );
- meshIn->setSpacing( SPACING );
- meshIn->addWidget( aMedfile, 0, 0, 1,1 );
- meshIn->addWidget( aBrowser, 0, 1,1,1);
- meshIn->addWidget( aBrowserObject, 0, 2, 1, 1 );
- meshIn->addWidget( selectMedFilebutton, 1, 0,1, 1);
- meshIn->addWidget( selectMedFileLineEdit, 1, 1, 1, 1 );
- hspacer = new QSpacerItem(188, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
-
- meshInGroup = new QButtonGroup( this );
- meshInGroup->addButton( aMedfile, 0 );
- meshInGroup->addButton( aBrowser, 1 );
-
- //Mesh out
-
- aMeshOut = new QGroupBox( tr( "MeshOut" ), this );
- meshName = new QLabel(tr("MeshName"), aMeshOut);
- secondHspacer = new QSpacerItem(100, 30);
- meshNameLineEdit = new QLineEdit(aMeshOut) ;
- medFileCheckBox = new QCheckBox(tr("MEDFile"), aMeshOut);
- selectOutMedFilebutton = new QPushButton("...", aMeshOut);
- thirdHspacer = new QSpacerItem(188, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
- selectOutMedFileLineEdit = new QLineEdit(aMeshOut) ;
- publishOut = new QCheckBox(tr("Publish_MG_ADAPT"), aMeshOut);
-
- meshOut = new QGridLayout( aMeshOut );
-
- meshOut->setMargin( MARGIN );
- meshOut->setSpacing( SPACING );
- meshOut->addWidget( meshName, 0, 0, 1,1 );
- meshOut->addItem( secondHspacer, 0, 1, 1, 1 );
- meshOut->addWidget( meshNameLineEdit, 0, 2,1,1);
- meshOut->addWidget( medFileCheckBox, 1, 0,1,1 );
- meshOut->addWidget( selectOutMedFilebutton, 1, 1,1,1 );
- meshOut->addWidget( selectOutMedFileLineEdit, 1, 2,1,1);
- meshOut->addWidget( publishOut, 2, 0,1,1 );
-
- //size map definition
-
- sizeMapDefinition = new QGroupBox(tr("SIZE_MAP_DEF"), this);
- localButton = new QRadioButton(tr("LOCAL_MG_ADAPT"), sizeMapDefinition);
- backgroundButton = new QRadioButton(tr("BACKGRND_MG_ADAPT"), sizeMapDefinition);
- constantButton = new QRadioButton(tr("CNST_MG_ADAPT"), sizeMapDefinition);
- medFileBackground = new QLabel(tr("MED_FILE_BCKG"), sizeMapDefinition);
- selectMedFileBackgroundbutton = new QPushButton("...", sizeMapDefinition);
- selectMedFileBackgroundLineEdit = new QLineEdit(sizeMapDefinition);
- valueLabel = new QLabel(tr("VALUE_MG_ADAPT"), sizeMapDefinition);
- dvalue = new QDoubleSpinBox(sizeMapDefinition);
- sizeMapDefGroup = new QButtonGroup( this );
- sizeMapDefGroup->addButton( localButton, 0 );
- sizeMapDefGroup->addButton( backgroundButton, 1 );
- sizeMapDefGroup->addButton( constantButton, 2 );
-
- sizeMapDefGroupLayout = new QGridLayout(sizeMapDefinition);
- sizeMapDefGroupLayout->addWidget(localButton, 0,0);
- sizeMapDefGroupLayout->addWidget(backgroundButton, 0,1);
- sizeMapDefGroupLayout->addWidget(constantButton, 0,2);
- sizeMapDefGroupLayout->addWidget(medFileBackground, 1,0);
- sizeMapDefGroupLayout->addWidget(selectMedFileBackgroundbutton, 1,1);
- sizeMapDefGroupLayout->addWidget(selectMedFileBackgroundLineEdit, 1,2);
- sizeMapDefGroupLayout->addWidget(valueLabel, 2,0);
- sizeMapDefGroupLayout->addWidget(dvalue, 2,1);
-
- // size Map field
- sizeMapField = new QGroupBox(tr("SIZE_MAP_FIELD"), this);
- fieldName = new QLabel(tr("MG_ADAPT_FIELD_NAME"), sizeMapField);
- fieldNameCmb = new QComboBox(sizeMapField);
- noTimeStep = new QRadioButton(tr("MG_ADAPT_NO_T_ST"), sizeMapField);
- lastTimeStep = new QRadioButton(tr("MG_ADAPT_L_ST"), sizeMapField);
- chosenTimeStep = new QRadioButton(tr("MG_ADAPT_CH_ST"), sizeMapField);
- timeStepLabel = new QLabel(tr("MG_ADAPT_TSTP"), sizeMapField);
- timeStep = new QSpinBox(sizeMapField);
- timeStep->setMinimum(-1);
- rankLabel = new QLabel(tr("MG_ADAPT_RANK"), sizeMapField);
- rankSpinBox = new QSpinBox(sizeMapField);
- rankSpinBox->setMinimum(-1);
-
- timeStepGroup = new QButtonGroup(this);
- timeStepGroup->addButton(noTimeStep, 0);
- timeStepGroup->addButton(lastTimeStep, 1);
- timeStepGroup->addButton(chosenTimeStep, 2);
-
- sizeMapFieldGroupLayout = new QGridLayout(sizeMapField);
-
- sizeMapFieldGroupLayout->addWidget(fieldName, 0,0);
- sizeMapFieldGroupLayout->addWidget(fieldNameCmb, 0,1);
- sizeMapFieldGroupLayout->addWidget(noTimeStep, 1,0);
- sizeMapFieldGroupLayout->addWidget(lastTimeStep, 1,1);
- sizeMapFieldGroupLayout->addWidget(chosenTimeStep, 1,2);
- sizeMapFieldGroupLayout->addWidget(timeStepLabel, 2,0);
- sizeMapFieldGroupLayout->addWidget(timeStep, 2,1);
- sizeMapFieldGroupLayout->addWidget(rankLabel, 2,2);
- sizeMapFieldGroupLayout->addWidget(rankSpinBox, 2,3);
-
- QGridLayout* argumentsLayout = new QGridLayout( this );
- argumentsLayout->setMargin( MARGIN );
- argumentsLayout->setSpacing( SPACING );
-
- argumentsLayout->addWidget( aMeshIn, 0, 0, 1, 3 );
- argumentsLayout->addWidget( aMeshOut, 1, 0, 1, 3 );
- argumentsLayout->addWidget( sizeMapDefinition, 2, 0, 1, 3 );
- argumentsLayout->addWidget( sizeMapField, 3, 0, 1, 3 );
- argumentsLayout->setColumnStretch( 1, 5 );
- argumentsLayout->setRowStretch( 4, 5 );
-
- // Initial state
- setMode( Mesh, Local);
- medFileCheckBox->setChecked(true);
- visibleTimeStepRankLabel (false);
-
- // Connections
- connect( meshInGroup, SIGNAL( buttonClicked( int ) ), this, SLOT( modeChanged( int ) ) );
- connect( sizeMapDefGroup, SIGNAL( buttonClicked( int ) ), this, SLOT( sizeMapDefChanged( int ) ) );
- connect( selectMedFilebutton, SIGNAL( pressed( ) ), this, SLOT( onSelectMedFilebuttonClicked( ) ) );
- connect( medFileCheckBox, SIGNAL (stateChanged(int)), this, SLOT(onMedFileCheckBox(int) ) );
- connect( publishOut, SIGNAL (stateChanged(int)), this, SLOT(onPublishOut(int) ) );
- connect( selectOutMedFilebutton, SIGNAL( pressed()), this, SLOT(onSelectOutMedFilebutton()));
- connect( selectMedFileBackgroundbutton, SIGNAL(pressed()), this, SLOT(onSelectMedFileBackgroundbutton()) );
- connect( timeStepGroup, SIGNAL( buttonClicked( int ) ), this, SLOT( timeStepGroupChanged( int ) ) );
- emit updateSelection();
-}
-
-//=================================================================================
-// function : ~SMESHGUI_MgAdaptArguments()
-// purpose : Destroys the object and frees any allocated resources
-//=================================================================================
-SMESHGUI_MgAdaptArguments::~SMESHGUI_MgAdaptArguments()
-{
-}
-
-void SMESHGUI_MgAdaptArguments::onNoTimeStep(bool disableOther)
-{
- noTimeStep->setChecked(true);
-
- visibleTimeStepRankLabel (false);
- rankSpinBox->setValue(-2);
- timeStep->setValue(-2);
-
- lastTimeStep->setDisabled(disableOther);
- chosenTimeStep->setDisabled(disableOther);
-}
-void SMESHGUI_MgAdaptArguments::onLastTimeStep(bool disableOther)
-{
- lastTimeStep->setChecked(true);
-
- visibleTimeStepRankLabel (false);
- rankSpinBox->setValue(-1);
- timeStep->setValue(-1);
- noTimeStep->setDisabled(disableOther);
-}
-void SMESHGUI_MgAdaptArguments::onChosenTimeStep(bool disableOther, int vmax)
-{
- chosenTimeStep->setChecked(true);
-
- visibleTimeStepRankLabel (true);
- rankSpinBox->setValue(-1);
- timeStep->setValue(-1);
- if (vmax) timeStep->setMaximum(vmax);
-}
-
-void SMESHGUI_MgAdaptArguments::visibleTimeStepRankLabel(bool visible)
-{
- rankLabel->setVisible(visible);
- rankSpinBox->setVisible(visible);
-
- timeStepLabel->setVisible(visible);
- timeStep->setVisible(visible);
-}
-
-void SMESHGUI_MgAdaptArguments::onSelectOutMedFilebutton()
-{
-
- QString filtre = QString("Med") ;
- filtre += QString(" files (*.") + QString("med") + QString(");;");
- QString fileName = QFileDialog::getSaveFileName(this, tr("SAVE_MED"), QString(""), filtre);
- QFileInfo myFileInfo(fileName);
- selectOutMedFileLineEdit->setText(myFileInfo.fileName());
- *myFileOutDir = myFileInfo.path();
-
-}
-void SMESHGUI_MgAdaptArguments::onSelectMedFileBackgroundbutton()
-{
- QString fileName0 = selectMedFileBackgroundbutton->text().trimmed();
-
- QString fileName = getMedFileName(false);
- if (fileName != QString::null)
- {
- myFieldList = GetListeChamps(fileName);
- if (myFieldList.empty())
- {
- fileName = fileName0;
- fieldNameCmb->clear();
- }
- else
- {
- // fill field name Combobox
- fieldNameCmb->clear();
- std::map<QString, int>::const_iterator it;
- for ( it=myFieldList.begin() ; it != myFieldList.end(); it++)
- {
- fieldNameCmb->insertItem(0,QString(it->first));
- int typeStepInField = it->second > 2 ? 2 : it->second ;
- timeStepGroupChanged(typeStepInField, false);
- }
- // Dimension du maillage de fonds
- MEDCoupling::MCAuto<MEDCoupling::MEDFileData> mfd = MEDCoupling::MEDFileData::New(fileName.toStdString());
- meshDimBG = mfd->getMeshes()->getMeshAtPos(0)->getMeshDimension() ;
- valueAdaptation ();
- }
- }
- else
- {
- fileName = fileName0;
- fieldNameCmb->clear();
- }
-
- QFileInfo myFileInfo(fileName);
- *myFileSizeMapDir = myFileInfo.path();
- selectMedFileBackgroundLineEdit->setText(myFileInfo.fileName());
-
-}
-void SMESHGUI_MgAdaptArguments::onMedFileCheckBox(int state)
-{
- if (state == Qt::Checked)
- {
- selectOutMedFilebutton->show();
- selectOutMedFileLineEdit->show();
- selectOutMedFilebutton->setEnabled(true);
- selectOutMedFileLineEdit->setEnabled(true);
- }
- else
- {
- selectOutMedFilebutton->setEnabled(false);
- selectOutMedFileLineEdit->setEnabled(false);
- publishOut->setChecked(true);
- }
-}
-void SMESHGUI_MgAdaptArguments::onPublishOut(int state)
-{
- if (state == Qt::Unchecked)
- {
- medFileCheckBox->setChecked(true);
- }
-}
-
-void SMESHGUI_MgAdaptArguments::onSelectMedFilebuttonClicked()
-{
- // bool keep = false;
- QString fileName0 = selectMedFileLineEdit->text().trimmed();
-
- QString fileName = getMedFileName(false);
- if(fileName != QString::null)
- {
- QString aMeshName = lireNomMaillage(fileName.trimmed(), meshDim);
- if (aMeshName == QString::null )
- {
- QMessageBox::critical( 0, QObject::tr("MG_ADAPT_ERROR"),
- QObject::tr("MG_ADAPT_MED_FILE_2") );
- fileName = fileName0;
- }
- else
- {
- meshNameLineEdit->setText(aMeshName);
- valueAdaptation ();
-// ADAPTATION_MODE aMode = meshDim == 3 ? ADAPTATION_MODE::BOTH : ADAPTATION_MODE::SURFACE; // and when dimesh 3 without 2D mesh?
-// emit meshDimSignal(aMode);
- }
- }
- else
- {
- return;
- }
-
- QFileInfo myFileInfo(fileName);
- *myFileInDir = myFileInfo.path();
- *myFileOutDir = myFileInfo.path();
- selectMedFileLineEdit->setText(myFileInfo.fileName());
- QString outF = fileName == QString::null ? myFileInfo.fileName() :
- QString( remove_extension(myFileInfo.fileName().toStdString() ).c_str() )+ QString(".adapt.med");
- selectOutMedFileLineEdit->setText(outF);
- onLocalSelected(myFileInfo.filePath());
-
-}
-
-void SMESHGUI_MgAdaptArguments::valueAdaptation()
-{
- ADAPTATION_MODE aMode ;
- if ( meshDimBG < 3 )
- {
- aMode = meshDim == 3 ? ADAPTATION_MODE::BOTH : ADAPTATION_MODE::SURFACE;
- }
- else
- {
- aMode = ADAPTATION_MODE::BOTH;
- }
- emit meshDimSignal(aMode);
-}
-
-void SMESHGUI_MgAdaptArguments::onLocalSelected(QString filePath)
-{
- myFieldList = GetListeChamps(filePath, false);
- if (myFieldList.empty())
- {
- if (localButton->isChecked())
- {
- fieldNameCmb->clear();
- }
- }
- else
- {
- // fill field name Combobox
- fieldNameCmb->clear();
- std::map<QString, int>::const_iterator it;
- for ( it = myFieldList.begin() ; it != myFieldList.end(); it++)
- {
- fieldNameCmb->insertItem(0,QString(it->first));
- // Je ne comprends pas le rapport entre pas de temps et apparition d'un nouveau champ... GN
- int typeStepInField = it->second > 2 ? 2 : it->second ;
-// std::cout << "SMESHGUI_MgAdaptArguments::onLocalSelected typeStepInField : " << typeStepInField << std::endl;
- timeStepGroupChanged(typeStepInField, false);
- }
- }
-}
-// =======================================================================
-// Gestion les boutons qui permettent de
-// 1) retourne le nom d'un fichier par une fenetre de dialogue si aucun
-// objet est selectionne dans l arbre d etude
-// 2) retourne le nom du fichier asocie a l objet
-// selectionne dans l arbre d etude
-// =======================================================================
-QString SMESHGUI_MgAdaptArguments::getMedFileName(bool avertir)
-{
-
- QString aFile = QString::null;
- QString filtre = QString("Med") ;
- filtre += QString(" files (*.") + QString("med") + QString(");;");
- aFile = SUIT_FileDlg::getOpenFileName(0, QObject::tr("MG_ADAPT_SELECT_FILE_0"), QString(""), filtre );
-
- return aFile;
-
-}
-void SMESHGUI_MgAdaptArguments::setMode(const Mode theMode, const SIZEMAP theSizeMap )
-{
- QRadioButton* aButton = qobject_cast<QRadioButton*>( meshInGroup->button( theMode ) );
- QRadioButton* bButton = qobject_cast<QRadioButton*>( sizeMapDefGroup->button( theSizeMap ) );
- if ( aButton )
- {
- aButton->setChecked( true );
- modeChanged( theMode );
- }
- if ( bButton )
- {
- bButton->setChecked( true );
- sizeMapDefChanged( theSizeMap );
- }
-}
-
-void SMESHGUI_MgAdaptArguments::modeChanged( int theMode )
-{
- clear();
- if(theMode == Mesh)
- {
- aBrowserObject->hide();
- selectMedFileLineEdit->show();
- selectMedFilebutton->show();
- localButton->setEnabled(true);
- }
- else
- {
- selectMedFileLineEdit->hide();
- selectMedFilebutton->hide();
- localButton->setEnabled(false);
- aBrowserObject->show();
- sizeMapDefChanged(Background);
- emit updateSelection();
- }
-}
-
-void SMESHGUI_MgAdaptArguments::sizeMapDefChanged( int theSizeMap )
-{
- fieldNameCmb->clear();
- if(theSizeMap == Local)
- {
- localButton->setEnabled(true);
- localButton->setChecked(true);
- medFileBackground->hide();
- selectMedFileBackgroundbutton->hide();
- selectMedFileBackgroundLineEdit->hide();
- selectMedFileBackgroundLineEdit->clear();
- valueLabel->hide();
- dvalue->hide();
-
- sizeMapField->setEnabled(true);
- if (!selectMedFileLineEdit->text().isEmpty())
- {
- QFileInfo myFileInfo(QDir(*myFileInDir), selectMedFileLineEdit->text());
- onLocalSelected(myFileInfo.filePath());
- }
- }
- else if (theSizeMap == Background)
- {
- medFileBackground->show();
- backgroundButton->setChecked(true);
- selectMedFileBackgroundbutton->show();
- selectMedFileBackgroundLineEdit->show();
- valueLabel->hide();
- dvalue->hide();
- sizeMapField->setEnabled(true);
- }
- else
- {
- medFileBackground->hide();
- constantButton->setChecked(true);
- selectMedFileBackgroundbutton->hide();
- selectMedFileBackgroundLineEdit->clear();
- selectMedFileBackgroundLineEdit->hide();
- valueLabel->show();
- dvalue->show();
- sizeMapField->setEnabled(false);
- }
- meshDimBG = 0;
- valueAdaptation();
-}
-void SMESHGUI_MgAdaptArguments::timeStepGroupChanged(int timeStepType, bool disableOther, int vmax)
-{
- switch (timeStepType)
- {
- case 0 :
- onNoTimeStep(disableOther);
- break;
- case 1 :
- onLastTimeStep(disableOther);
- break;
- case 2 :
- onChosenTimeStep(disableOther, vmax);
- default:
- break;
- }
-}
-
-void SMESHGUI_MgAdaptArguments::clear()
-{
- selectMedFileLineEdit->clear();
- aBrowserObject->clear();
-
- meshNameLineEdit->clear();
- selectOutMedFileLineEdit->clear();
-}
-// med_int SMESHGUI_MgAdaptArguments::getMeshDim() const
-// {
-// return meshDim;
-// }
-QWidget* ItemDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &o, const QModelIndex &index) const
-{
- bool editable = index.data( EDITABLE_ROLE ).toInt();
- return editable ? QItemDelegate::createEditor( parent, o, index ) : 0;
-}
-
-//////////////////////////////////////////
-// MgAdaptAdvWidget
-//////////////////////////////////////////
-
-MgAdaptAdvWidget::MgAdaptAdvWidget( QWidget* parent, std::vector <std::string>* options, Qt::WindowFlags f )
- : QWidget( parent, f ), myOptions(options)
-{
- setupWidget();
- myOptionTable->header()->setSectionResizeMode( QHeaderView::ResizeToContents );
- myOptionTable->setItemDelegate( new ItemDelegate( myOptionTable ) );
-
- for ( int i = 0, nb = myOptions->size(); i < nb; ++i )
- {
- AddOption( (*myOptions)[i].c_str() );
- }
-
- connect( myOptionTable, SIGNAL( itemChanged(QTreeWidgetItem *, int)), SLOT( itemChanged(QTreeWidgetItem *, int )));
- connect( addBtn, SIGNAL(clicked()), this, SLOT( onAddOption() ) );
- connect(workingDirectoryPushButton, SIGNAL(pressed()), this, SLOT(_onWorkingDirectoryPushButton()));
-}
-
-MgAdaptAdvWidget::~MgAdaptAdvWidget()
-{
-}
-
-void MgAdaptAdvWidget::AddOption( const char* option, bool isCustom )
-{
- QString name, value;
- bool isDefault = false;
- if ( option )
- {
- QStringList name_value_type = QString(option).split( ":", QString::KeepEmptyParts );
- if ( name_value_type.size() > 0 )
- name = name_value_type[0];
- if ( name_value_type.size() > 1 )
- value = name_value_type[1];
- if ( name_value_type.size() > 2 )
- isDefault = !name_value_type[2].toInt();
- }
- QTreeWidget* table = myOptionTable;
- //table->setExpanded( true );
-
- QTreeWidgetItem* row;
- if (optionTreeWidgetItem.size())
- {
- std::map<QString, QTreeWidgetItem *>::iterator it = optionTreeWidgetItem.find(name);
- if(it != optionTreeWidgetItem.end()) return; // option exist
- else
- {
- row = getNewQTreeWidgetItem(table, option, name, isCustom);
- }
- }
- else
- {
- row = getNewQTreeWidgetItem(table, option, name, isCustom);
- }
- row->setText( 0, tr( name.toLatin1().constData() ));
- row->setText( 1, tr( value.toLatin1().constData() ));
- row->setCheckState( 0, isDefault ? Qt::Unchecked : Qt::Checked);
- row->setData( NAME_COL, PARAM_NAME, name );
-
- if ( isCustom )
- {
- myOptionTable->scrollToItem( row );
- myOptionTable->setCurrentItem( row );
- myOptionTable->editItem( row, NAME_COL );
- }
-}
-
-QTreeWidgetItem* MgAdaptAdvWidget::getNewQTreeWidgetItem(QTreeWidget* table, const char* option, QString& name, bool isCustom)
-{
- QTreeWidgetItem* row = new QTreeWidgetItem( table );
- row->setData( NAME_COL, EDITABLE_ROLE, int( isCustom && !option ));
- row->setFlags( row->flags() | Qt::ItemIsEditable );
- optionTreeWidgetItem.insert(std::pair <QString, QTreeWidgetItem*> (name, row));
-
- return row;
-}
-
-void MgAdaptAdvWidget::onAddOption()
-{
- AddOption( NULL, true );
-}
-void MgAdaptAdvWidget::GetOptionAndValue( QTreeWidgetItem * tblRow,
- QString& option,
- QString& value,
- bool& isDefault)
-{
- option = tblRow->data( NAME_COL, PARAM_NAME ).toString();
- value = tblRow->text( VALUE_COL );
- isDefault = ! tblRow->checkState( NAME_COL );
-
-}
-
-void MgAdaptAdvWidget::itemChanged(QTreeWidgetItem* tblRow, int column)
-{
- if ( tblRow )
- {
- myOptionTable->blockSignals( true );
-
- tblRow->setData( VALUE_COL, EDITABLE_ROLE, int( tblRow->checkState( NAME_COL )));
-
- int c = tblRow->checkState( NAME_COL ) ? 0 : 150;
- tblRow->setForeground( VALUE_COL, QBrush( QColor( c, c, c )));
-
- if ( column == NAME_COL && tblRow->data( NAME_COL, EDITABLE_ROLE ).toInt() ) // custom table
- {
- tblRow->setData( NAME_COL, PARAM_NAME, tblRow->text( NAME_COL ));
- }
-
- myOptionTable->blockSignals( false );
- }
-}
-void MgAdaptAdvWidget::setupWidget()
-{
- if (this->objectName().isEmpty())
- this->setObjectName(QString(tr("MG-ADAPT-ADV")));
- this->resize(337, 369);
- gridLayout_4 = new QGridLayout(this);
- gridLayout_4->setObjectName(QString("gridLayout_4"));
- myOptionTable = new MgAdaptAdvWidgetTreeWidget(this);
- QFont font;
- font.setBold(false);
- font.setWeight(50);
- QTreeWidgetItem *__qtreewidgetitem = new QTreeWidgetItem();
- __qtreewidgetitem->setFont(1, font);
- __qtreewidgetitem->setFont(0, font);
- __qtreewidgetitem->setText(1, tr("OPTION_VALUE_COLUMN"));
- __qtreewidgetitem->setText(0, tr("OPTION_NAME_COLUMN"));
- myOptionTable->setHeaderItem(__qtreewidgetitem);
- myOptionTable->setObjectName(QString("myOptionTable"));
- myOptionTable->setEditTriggers(QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed);
- myOptionTable->setTabKeyNavigation(true);
-
- gridLayout_4->addWidget(myOptionTable, 0, 0, 1, 2);
-
- addBtn = new QPushButton(this);
- addBtn->setText(QApplication::translate("SMESH_AdvOptionsWdg", "ADD_OPTION_BTN", Q_NULLPTR));
- addBtn->setObjectName(QString("addBtn"));
-
- gridLayout_4->addWidget(addBtn, 1, 0, 1, 1);
-
- horizontalSpacer = new QSpacerItem(188, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
-
- gridLayout_4->addItem(horizontalSpacer, 1, 1, 1, 1);
-
- logGroupBox = new QGroupBox(this);
- logGroupBox->setObjectName(QString("logGroupBox"));
- gridLayout_2 = new QGridLayout(logGroupBox);
- gridLayout_2->setObjectName(QString("gridLayout_2"));
- gridLayout = new QGridLayout();
- gridLayout->setObjectName(QString("gridLayout"));
- workingDirectoryLabel = new QLabel(logGroupBox);
- workingDirectoryLabel->setObjectName(QString("workingDirectoryLabel"));
-
- gridLayout->addWidget(workingDirectoryLabel, 0, 0, 1, 1);
-
- workingDirectoryLineEdit = new QLineEdit(logGroupBox);
- workingDirectoryLineEdit->setObjectName(QString("workingDirectoryLineEdit"));
-
- gridLayout->addWidget(workingDirectoryLineEdit, 0, 1, 1, 1);
-
- workingDirectoryPushButton = new QPushButton(logGroupBox);
- workingDirectoryPushButton->setObjectName(QString("workingDirectoryPushButton"));
-
- gridLayout->addWidget(workingDirectoryPushButton, 0, 2, 1, 1);
-
- verboseLevelLabel = new QLabel(logGroupBox);
- verboseLevelLabel->setObjectName(QString("verboseLevelLabel"));
-
- gridLayout->addWidget(verboseLevelLabel, 1, 0, 1, 1);
-
- verboseLevelSpin = new QSpinBox(logGroupBox);
- verboseLevelSpin->setObjectName(QString("verboseLevelSpin"));
-
- gridLayout->addWidget(verboseLevelSpin, 1, 1, 1, 1);
-
-
- gridLayout_2->addLayout(gridLayout, 0, 0, 1, 1);
-
- horizontalLayout = new QHBoxLayout();
- horizontalLayout->setObjectName(QString("horizontalLayout"));
- logInFileCheck = new QCheckBox(logGroupBox);
- logInFileCheck->setObjectName(QString("logInFileCheck"));
- logInFileCheck->setChecked(true);
-
- horizontalLayout->addWidget(logInFileCheck);
-
- removeLogOnSuccessCheck = new QCheckBox(logGroupBox);
- removeLogOnSuccessCheck->setObjectName(QString("removeLogOnSuccessCheck"));
- removeLogOnSuccessCheck->setChecked(true);
-
- horizontalLayout->addWidget(removeLogOnSuccessCheck);
-
-
- gridLayout_2->addLayout(horizontalLayout, 1, 0, 1, 1);
-
- keepWorkingFilesCheck = new QCheckBox(logGroupBox);
- keepWorkingFilesCheck->setObjectName(QString("keepWorkingFilesCheck"));
- keepWorkingFilesCheck->setAutoExclusive(false);
-
- gridLayout_2->addWidget(keepWorkingFilesCheck, 2, 0, 1, 1);
-
-
- gridLayout_4->addWidget(logGroupBox, 3, 0, 1, 2);
-
-}
-void MgAdaptAdvWidget::_onWorkingDirectoryPushButton()
-{
- QString aDirName=QFileDialog::getExistingDirectory ();
- if (!(aDirName.isEmpty()))workingDirectoryLineEdit->setText(aDirName);
-}
-void MgAdaptAdvWidget::onMeshDimChanged(ADAPTATION_MODE aMode)
-{
-/* default adaptation mode
- * assume that if meshDim == 2 and no 3D backgrounmesh-->adaptation surface
- * if meshDim == 3 and if there is not 2D mesh -->VOLUME
- * else BOTH
- */
-
- QString adaptation("adaptation"), value;
- switch(aMode)
- {
- case ADAPTATION_MODE::SURFACE:
- {
- value ="surface";
- setOptionValue(adaptation, value);
- break;
- }
- case ADAPTATION_MODE::BOTH :
- {
- value = "both";
- setOptionValue(adaptation, value);
- break;
- }
- case ADAPTATION_MODE::VOLUME :
- {
- value = "volume";
- setOptionValue(adaptation, value);
- break;
- }
- }
-}
-void MgAdaptAdvWidget::setOptionValue(QString& option, QString& value)
-{
- std::map<QString, QTreeWidgetItem *>::iterator it = optionTreeWidgetItem.find(option);
- if (it != optionTreeWidgetItem.end())
- {
- it->second->setText( 0, tr( option.toLatin1().constData() ));
- it->second->setText( 1, tr( value.toLatin1().constData() ));
- it->second->setCheckState( 0, Qt::Checked );
- it->second->setData( NAME_COL, PARAM_NAME, option );
- myOptionTable->editItem( it->second, NAME_COL );
- }
-}
-namespace
-{
-bool isEditable( const QModelIndex& index )
-{
- return index.isValid() &&
- index.flags() & Qt::ItemIsEditable &&
- index.flags() & Qt::ItemIsEnabled &&
- ( !index.data( Qt::UserRole + 1 ).isValid() || index.data( Qt::UserRole + 1 ).toInt() != 0 );
-}
-}
-
-MgAdaptAdvWidgetTreeWidget::MgAdaptAdvWidgetTreeWidget( QWidget* parent )
- : QTreeWidget( parent )
-{
-}
-
-QModelIndex MgAdaptAdvWidgetTreeWidget::moveCursor( CursorAction action, Qt::KeyboardModifiers modifiers )
-{
- QModelIndex current = currentIndex();
- int column = current.column();
- if ( action == MoveNext )
- {
- if ( column < columnCount()-1 )
- {
- QModelIndex next = current.sibling( current.row(), column+1 );
- if ( isEditable( next ) ) return next;
- }
- else
- {
- QModelIndex next = current.sibling( current.row()+1, 0 );
- if ( isEditable( next ) ) return next;
- }
- }
- else if ( action == MovePrevious )
- {
- if ( column == 0 ) {
- QModelIndex next = current.sibling( current.row()-1, columnCount()-1 );
- if ( isEditable( next ) ) return next;
- }
- else {
- QModelIndex next = current.sibling( current.row(), column-1 );
- if ( isEditable( next ) ) return next;
- }
- }
- return QTreeWidget::moveCursor( action, modifiers );
-}
-
-void MgAdaptAdvWidgetTreeWidget::keyPressEvent( QKeyEvent* e )
-{
- switch ( e->key() )
- {
- case Qt::Key_F2:
- {
- QModelIndex index = currentIndex();
- if ( !isEditable( index ) ) {
- for ( int i = 0; i < columnCount(); i++ ) {
- QModelIndex sibling = index.sibling( index.row(), i );
- if ( isEditable( sibling ) ) {
- if ( !edit( sibling, EditKeyPressed, e ) ) e->ignore();
- }
- }
- }
- }
- break;
- default:
- break;
- }
- QTreeWidget::keyPressEvent( e );
-}
-
-// ======================================================
-// ========================================================
-QString lireNomMaillage(QString aFile, med_int& meshdim)
-{
- QString nomMaillage = QString::null ;
-
- while ( true )
- {
- std::vector<std::string> listMeshesNames = MEDCoupling::GetMeshNames(aFile.toStdString());
-
- std::size_t numberOfMeshes(listMeshesNames.size());
- // std::cout << "numberOfMeshes:" << numberOfMeshes << std::endl;
- if (numberOfMeshes == 0 )
- {
- QMessageBox::critical( 0, QObject::tr("MG_ADAPT_ERROR"),
- QObject::tr("MG_ADAPT_MED_FILE_2") );
- break ;
- }
- if (numberOfMeshes > 1 )
- {
- QMessageBox::critical( 0, QObject::tr("MG_ADAPT_ERROR"),
- QObject::tr("MG_ADAPT_MED_FILE_3") );
- break ;
- }
-
-// std::cout << "nomMaillage:" << listMeshesNames[0] << std::endl;
- nomMaillage = QString(listMeshesNames[0].c_str());
-
- // Dimension du maillage
- MEDCoupling::MCAuto<MEDCoupling::MEDFileData> mfd = MEDCoupling::MEDFileData::New(aFile.toStdString());
- meshdim = mfd->getMeshes()->getMeshAtPos(0)->getMeshDimension() ;
-// std::cout << "meshdim:" << meshdim << std::endl;
-
- break ;
- }
-
- return nomMaillage;
-}
-
-// =======================================================================
-std::map<QString, int> GetListeChamps(QString aFile, bool errorMessage)
-// =======================================================================
-{
-// Il faut voir si plusieurs maillages
-
- std::map<QString, int> ListeChamp ;
-
- while ( true )
- {
- MEDCoupling::MCAuto<MEDCoupling::MEDFileData> mfd = MEDCoupling::MEDFileData::New(aFile.toStdString());
- std::vector<std::string> listFieldsNames(mfd->getFields()->getFieldsNames());
- std::size_t jaux(listFieldsNames.size());
- if (jaux < 1 )
- {
- if(errorMessage)
- {
- QMessageBox::critical( 0, QObject::tr("_ERROR"),
- QObject::tr("HOM_MED_FILE_5") );
- }
- break ;
- }
- // nbofcstp inutile pour le moment
- med_int nbofcstp = 1;
- for(std::size_t j=0;j<jaux;j++)
- {
-// std::cout << listFieldsNames[j] << std::endl;
- ListeChamp.insert(std::pair<QString, int> (QString(listFieldsNames[j].c_str()), nbofcstp));
- }
- break ;
- }
-
- return ListeChamp;
-}
-
-// =======================================================================
-std::string remove_extension(const std::string& filename)
-// =======================================================================
-{
- size_t lastdot = filename.find_last_of(".");
- if (lastdot == std::string::npos) return filename;
- return filename.substr(0, lastdot);
-}
+++ /dev/null
-// Copyright (C) 2007-2020 CEA/DEN, EDF R&D, OPEN CASCADE\r
-//\r
-// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,\r
-// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS\r
-//\r
-// This library is free software; you can redistribute it and/or\r
-// modify it under the terms of the GNU Lesser General Public\r
-// License as published by the Free Software Foundation; either\r
-// version 2.1 of the License, or (at your option) any later version.\r
-//\r
-// This library is distributed in the hope that it will be useful,\r
-// but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
-// Lesser General Public License for more details.\r
-//\r
-// You should have received a copy of the GNU Lesser General Public\r
-// License along with this library; if not, write to the Free Software\r
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
-//\r
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com\r
-//\r
-// SMESH SMESHGUI : GUI for the adaptation in the SMESH component\r
-// File : MG_ADAPTGUI.hxx\r
-//\r
-#ifndef MG_ADAPTGUI_HXX\r
-#define MG_ADAPTGUI_HXX\r
-\r
-#include <set>\r
-// SMESH includes\r
-\r
-// Qt includes\r
-#include <QDialog>\r
-#include <QTreeWidget>\r
-#include<QItemDelegate>\r
-\r
-#include "LightApp_DataOwner.h"\r
-#include "SalomeApp_Application.h"\r
-#include <SALOMEconfig.h>\r
-#include <SALOME_ListIO.hxx>\r
-#include "SalomeApp_Module.h"\r
-#include "SalomeApp_Study.h"\r
-#include <med.h>\r
-#include <map>\r
-\r
-\r
-// model\r
-\r
-\r
-//~#include "MG_ADAPT.hxx"\r
-\r
-#include CORBA_SERVER_HEADER(MG_ADAPT)\r
-\r
-class SUIT_ViewWindow;\r
-class SUIT_Desktop;\r
-class SUIT_Study;\r
-class SUIT_ResourceMgr;\r
-\r
-class CAM_Module;\r
-\r
-class SALOMEDSClient_Study;\r
-class SALOMEDSClient_SObject;\r
-\r
-class SalomeApp_Study;\r
-class SalomeApp_Module;\r
-class LightApp_SelectionMgr;\r
-\r
-\r
-class QButtonGroup;\r
-class QLineEdit;\r
-class QGroupBox;\r
-class QRadioButton;\r
-class QLabel;\r
-class QCheckBox;\r
-class QGridLayout;\r
-class QTabWidget;\r
-class QDoubleSpinBox;\r
-class QSpinBox;\r
-class QTreeWidget;\r
-class QTreeWidgetItem;\r
-class QSpacerItem;\r
-class QHBoxLayout;\r
-class QItemDelegate;\r
-class QComboBox;\r
-\r
-// IDL includes\r
-#include <SALOMEconfig.h>\r
-\r
-class SVTK_ViewWindow;\r
-class SVTK_Selector;\r
-class SMESHGUI_MgAdaptDlg;\r
-class SMESHGUI_MgAdaptArguments;\r
-class SMESHGUI_SpinBox;\r
-class MgAdaptAdvWidgetTreeWidget;\r
-class MgAdaptAdvWidget;\r
-//~class MgAdapt;\r
-class QHeaderView;\r
-class QFileDialog;\r
-\r
-\r
-std::map<QString, int> GetListeChamps(QString aFile, bool errorMessage = true);\r
-QString lireNomMaillage(QString aFile, med_int& meshDim);\r
-\r
-std::string remove_extension(const std::string& filename);\r
-\r
-enum ADAPTATION_MODE{\r
- SURFACE,\r
- VOLUME,\r
- BOTH\r
-};\r
-//=================================================================================\r
-// class : SMESHGUI_MgAdaptDlg\r
-// purpose :\r
-//=================================================================================\r
-class SMESHGUI_MgAdaptDlg : public QDialog\r
-{\r
- Q_OBJECT;\r
-public:\r
- //! Property type\r
- enum Mode { Arguments, AdvancedOptions};\r
- SMESHGUI_MgAdaptDlg( SalomeApp_Module*, SMESH::MG_ADAPT_ptr, QWidget* parent= 0,bool isCreation = true );\r
- ~SMESHGUI_MgAdaptDlg();\r
-\r
- void buildDlg();\r
- void reject();\r
- bool checkParams(QString& msg) ;\r
- //~void setModel(MgAdapt*);\r
- SMESH::MG_ADAPT_ptr getModel() const;\r
-\r
-public slots:\r
-\r
-protected slots:\r
- virtual bool PushOnApply();\r
-\r
-private slots:\r
- virtual void PushOnHelp();\r
- virtual void PushOnOK();\r
-\r
-protected :\r
-\r
- SMESHGUI_MgAdaptArguments* myArgs;\r
- MgAdaptAdvWidget* myAdvOpt;\r
- bool readParamsFromHypo( ) const ;\r
- bool readParamsFromWidgets( ) ;\r
- bool storeParamsToHypo( const SMESH::MgAdaptHypothesisData & ) const;\r
-\r
-private:\r
-\r
- SalomeApp_Module* mySMESHGUI; /* Current SMESHGUI object */\r
- QTabWidget* myTabWidget;\r
-\r
-\r
- SMESH::MgAdaptHypothesisData* myData;\r
- SMESH::MG_ADAPT_ptr model;\r
-\r
-};\r
-\r
-class SMESHGUI_MgAdaptArguments : public QWidget\r
-{\r
- Q_OBJECT;\r
-public:\r
- //! Property type\r
- enum Mode { Mesh, Browser};\r
- enum SIZEMAP { Local, Background, Constant};\r
- SMESHGUI_MgAdaptArguments( QWidget* parent);\r
- ~SMESHGUI_MgAdaptArguments();\r
- void setMode( const Mode, const SIZEMAP );\r
-\r
- QString* myFileInDir;\r
- QString* myFileOutDir;\r
- QString* myFileSizeMapDir;\r
- QGroupBox* aMeshIn ;\r
- QRadioButton* aMedfile;\r
- QRadioButton* aBrowser ;\r
- QLineEdit* aBrowserObject;\r
- QPushButton* selectMedFilebutton ;\r
- QSpacerItem* hspacer;\r
- QLineEdit* selectMedFileLineEdit ;\r
- QButtonGroup* meshInGroup ;\r
- QGridLayout* meshIn ;\r
-\r
- QGroupBox* aMeshOut ;\r
- QLabel* meshName;\r
- QLineEdit* meshNameLineEdit;\r
- QSpacerItem* secondHspacer;\r
- QCheckBox* medFileCheckBox;\r
- QPushButton* selectOutMedFilebutton;\r
- QLineEdit* selectOutMedFileLineEdit;\r
- QSpacerItem* thirdHspacer;\r
- QCheckBox* publishOut;\r
- QGridLayout* meshOut ;\r
-\r
- QGroupBox* sizeMapDefinition ;\r
- QRadioButton* localButton;\r
- QRadioButton* backgroundButton ;\r
- QRadioButton* constantButton ;\r
- QLabel* medFileBackground;\r
- QPushButton* selectMedFileBackgroundbutton;\r
- QLineEdit* selectMedFileBackgroundLineEdit;\r
- QLabel* valueLabel;\r
- QDoubleSpinBox* dvalue;\r
- QButtonGroup* sizeMapDefGroup ;\r
- QGridLayout* sizeMapDefGroupLayout;\r
-\r
-\r
- QGroupBox* sizeMapField;\r
- QLabel* fieldName;\r
- QComboBox* fieldNameCmb;\r
- QRadioButton* noTimeStep;\r
- QRadioButton* lastTimeStep ;\r
- QRadioButton* chosenTimeStep;\r
- QLabel* timeStepLabel;\r
- QSpinBox* timeStep;\r
- QLabel* rankLabel;\r
- QSpinBox* rankSpinBox;\r
- QButtonGroup* timeStepGroup;\r
- QGridLayout* sizeMapFieldGroupLayout;\r
-\r
-signals:\r
- void updateSelection();\r
- void toExportMED(const char *);\r
- void meshDimSignal(ADAPTATION_MODE aMode);\r
-public slots:\r
-\r
-protected slots:\r
-\r
-private slots:\r
- void modeChanged( int);\r
- void sizeMapDefChanged(int);\r
- void timeStepGroupChanged(int timeStepType, bool disableOther = false, int vmax = 0);\r
- void onSelectMedFilebuttonClicked();\r
- void clear();\r
- void onMedFileCheckBox(int);\r
- void onPublishOut(int);\r
- void onSelectOutMedFilebutton();\r
- void onSelectMedFileBackgroundbutton();\r
- void onLocalSelected(QString);\r
- void onNoTimeStep(bool disableOther = false);\r
- void onLastTimeStep(bool disableOther = false);\r
- void onChosenTimeStep(bool disableOther = false, int vmax = 0);\r
- void visibleTimeStepRankLabel(bool visible);\r
- void valueAdaptation ();\r
-\r
-private:\r
-\r
- QString getMedFileName(bool avertir);\r
- LightApp_SelectionMgr* selMgr ;\r
- med_int meshDim;\r
- med_int meshDimBG;\r
- std::map<QString, int> myFieldList;\r
-\r
-};\r
-enum {\r
- OPTION_ID_COLUMN = 0,\r
- OPTION_TYPE_COLUMN,\r
- OPTION_NAME_COLUMN = 0,\r
- OPTION_VALUE_COLUMN,\r
- NB_COLUMNS,\r
-};\r
-\r
-//////////////////////////////////////////\r
-// MgAdaptAdvWidget\r
-//////////////////////////////////////////\r
-class MgAdaptAdvWidget : public QWidget\r
-{\r
- Q_OBJECT\r
-\r
-public:\r
- MgAdaptAdvWidget( QWidget* = 0, std::vector <std::string> * = nullptr, Qt::WindowFlags = 0 );\r
- ~MgAdaptAdvWidget();\r
- std::vector < std::string > * myOptions;\r
- QGridLayout *gridLayout_4;\r
- MgAdaptAdvWidgetTreeWidget *myOptionTable;\r
- QPushButton *addBtn;\r
- QSpacerItem *horizontalSpacer;\r
- QGroupBox *logGroupBox;\r
- QGridLayout *gridLayout_2;\r
- QGridLayout *gridLayout;\r
- QLabel *workingDirectoryLabel;\r
- QLineEdit *workingDirectoryLineEdit;\r
- QPushButton *workingDirectoryPushButton;\r
- QLabel *verboseLevelLabel;\r
- QSpinBox *verboseLevelSpin;\r
- QHBoxLayout *horizontalLayout;\r
- QCheckBox *logInFileCheck;\r
- QCheckBox *removeLogOnSuccessCheck;\r
- QCheckBox *keepWorkingFilesCheck;\r
-\r
- void AddOption( const char* name_value_type, bool isCustom = false );\r
- void GetOptionAndValue( QTreeWidgetItem * tblRow, QString& option, QString& value, bool& dflt );\r
- void setupWidget();\r
-\r
-public slots:\r
- void onAddOption();\r
- void itemChanged(QTreeWidgetItem * tblRow, int column);\r
- void onMeshDimChanged(ADAPTATION_MODE aMode);\r
-private slots:\r
- void _onWorkingDirectoryPushButton();\r
-private:\r
- void setOptionValue(QString& option, QString& value);\r
- std::map<QString, QTreeWidgetItem *> optionTreeWidgetItem;\r
-\r
- QTreeWidgetItem* getNewQTreeWidgetItem(QTreeWidget* table, const char* option, QString& name, bool isCustom);\r
-\r
-};\r
-\r
-enum { EDITABLE_ROLE = Qt::UserRole + 1, PARAM_NAME,\r
- NAME_COL = 0, VALUE_COL\r
- };\r
-\r
-class ItemDelegate: public QItemDelegate\r
-{\r
-public:\r
-\r
- ItemDelegate(QObject* parent=0): QItemDelegate(parent) {}\r
- QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem &o, const QModelIndex &index) const;\r
-};\r
-\r
-class MgAdaptAdvWidgetTreeWidget : public QTreeWidget\r
-{\r
- Q_OBJECT\r
-public:\r
- MgAdaptAdvWidgetTreeWidget( QWidget* );\r
-\r
-protected:\r
- QModelIndex moveCursor( CursorAction, Qt::KeyboardModifiers );\r
- void keyPressEvent( QKeyEvent* );\r
-};\r
-\r
-#endif // MG_ADAPTGUI_HXX\r
// SMESH includes
#include "SMESHGUI.h"
-#include "SMESHGUI_AdaptDlg.h"
#include "SMESHGUI_Add0DElemsOnAllNodesDlg.h"
#include "SMESHGUI_AddMeshElementDlg.h"
#include "SMESHGUI_AddQuadraticElementDlg.h"
int objectCount = 0;
QString aNameList;
QString aParentComponent = QString::null;
-
+
for( SALOME_ListIteratorOfListIO anIt( selected ); anIt.More(); anIt.Next() )
{
Handle(SALOME_InteractiveObject) anIO = anIt.Value();
if ( anIO.IsNull() ) continue;
-
+
QString father = "unknown", name;
_PTR(SObject) aSO = aStudy->FindObjectID( anIO->getEntry() );
}
break;
}
- // Adaptation - begin
- case SMESHOp::OpMGAdapt:
- {
- SMESH::SMESH_Mesh_var aMesh = SMESH::SMESH_Mesh::_nil();
- SMESHGUI_AdaptDlg *objet = new SMESHGUI_AdaptDlg( this, theCommandID, aMesh);
- }
- // Adaptation - end
case SMESHOp::OpSplitBiQuadratic:
case SMESHOp::OpConvertMeshToQuadratic:
case SMESHOp::OpCreateBoundaryElements: // create 2D mesh from 3D
createSMESHAction( SMESHOp::OpAutoColor, "AUTO_COLOR" );
createSMESHAction( SMESHOp::OpDisableAutoColor, "DISABLE_AUTO_COLOR" );
- // Adaptation - begin
- createSMESHAction( SMESHOp::OpMGAdapt, "MG_ADAPT", "ICON_MG_ADAPT" );
- // Adaptation - end
-
createSMESHAction( SMESHOp::OpMinimumDistance, "MEASURE_MIN_DIST", "ICON_MEASURE_MIN_DIST" );
createSMESHAction( SMESHOp::OpBoundingBox, "MEASURE_BND_BOX", "ICON_MEASURE_BND_BOX" );
createSMESHAction( SMESHOp::OpPropertiesLength, "MEASURE_LENGTH", "ICON_MEASURE_LENGTH" );
meshId = createMenu( tr( "MEN_MESH" ), -1, 70, 10 ),
ctrlId = createMenu( tr( "MEN_CTRL" ), -1, 60, 10 ),
modifyId = createMenu( tr( "MEN_MODIFY" ), -1, 40, 10 ),
- adaptId = createMenu( tr( "MEN_ADAPT" ), -1, 80, 10 ),
measureId = createMenu( tr( "MEN_MEASURE" ), -1, 50, 10 ),
viewId = createMenu( tr( "MEN_VIEW" ), -1, 2 );
createMenu( SMESHOp::OpSmoothing, modifyId, -1 );
createMenu( SMESHOp::OpPatternMapping, modifyId, -1 );
- // Adaptation - begin
- createMenu( SMESHOp::OpMGAdapt, adaptId, -1 );
- // Adaptation - end
-
createMenu( SMESHOp::OpMinimumDistance, measureId, -1 );
createMenu( SMESHOp::OpBoundingBox, measureId, -1 );
createMenu( SMESHOp::OpAngle, measureId, -1 );
connect( volumeMenu, SIGNAL( aboutToShow() ), this, SLOT( onUpdateControlActions() ) );
// ----- create toolbars --------------
- int meshTb = createTool( tr( "TB_MESH" ), QString( "SMESHMeshToolbar" ) ) ;
+ int meshTb = createTool( tr( "TB_MESH" ), QString( "SMESHMeshToolbar" ) ),
+ info = createTool( tr( "TB_INFO" ), QString( "SMESHInformationToolbar" ) ),
+ groupTb = createTool( tr( "TB_GROUP" ), QString( "SMESHGroupToolbar" ) ),
+ ctrl0dTb = createTool( tr( "TB_CTRL0D" ), QString( "SMESHNodeControlsToolbar" ) ),
+ ctrl1dTb = createTool( tr( "TB_CTRL1D" ), QString( "SMESHEdgeControlsToolbar" ) ),
+ ctrl2dTb = createTool( tr( "TB_CTRL2D" ), QString( "SMESHFaceControlsToolbar" ) ),
+ ctrl3dTb = createTool( tr( "TB_CTRL3D" ), QString( "SMESHVolumeControlsToolbar" ) ),
+ addElemTb = createTool( tr( "TB_ADD" ), QString( "SMESHAddElementToolbar" ) ),
+ addNonElemTb = createTool( tr( "TB_ADDNON" ), QString( "SMESHAddElementToolbar" ) ),
+ remTb = createTool( tr( "TB_REM" ), QString( "SMESHRemoveToolbar" ) ),
+ //renumbTb = createTool( tr( "TB_RENUMBER" ), QString( "SMESHRenumberingToolbar" ) ),
+ transformTb = createTool( tr( "TB_TRANSFORM" ), QString( "SMESHTransformationToolbar" ) ),
+ modifyTb = createTool( tr( "TB_MODIFY" ), QString( "SMESHModificationToolbar" ) ),
+ measuremTb = createTool( tr( "TB_MEASUREM" ), QString( "SMESHMeasurementsToolbar" ) ),
+ dispModeTb = createTool( tr( "TB_DISP_MODE" ), QString( "SMESHDisplayModeToolbar" ) );
+
createTool( SMESHOp::OpCreateMesh, meshTb );
createTool( SMESHOp::OpCreateSubMesh, meshTb );
createTool( SMESHOp::OpEditMeshOrSubMesh, meshTb );
createTool( SMESHOp::OpEvaluate, meshTb );
createTool( SMESHOp::OpMeshOrder, meshTb );
- int infoTb = createTool( tr( "TB_INFO" ), QString( "SMESHInformationToolbar" ) ) ;
- createTool( SMESHOp::OpMeshInformation, infoTb );
- //createTool( SMESHOp::OpStdInfo, meshTb );
- //createTool( SMESHOp::OpWhatIs, meshTb ); // VSR: issue #0021242 (eliminate "Mesh Element Information" command)
- createTool( SMESHOp::OpFindElementByPoint, infoTb );
-
- int groupTb = createTool( tr( "TB_GROUP" ), QString( "SMESHGroupToolbar" ) ) ;
createTool( SMESHOp::OpCreateGroup, groupTb );
createTool( SMESHOp::OpCreateGeometryGroup, groupTb );
createTool( SMESHOp::OpConstructGroup, groupTb );
createTool( SMESHOp::OpEditGroup, groupTb );
- int ctrl0dTb = createTool( tr( "TB_CTRL0D" ), QString( "SMESHNodeControlsToolbar" ) ) ;
+ createTool( SMESHOp::OpMeshInformation, info );
+ //createTool( SMESHOp::OpStdInfo, meshTb );
+ //createTool( SMESHOp::OpWhatIs, meshTb ); // VSR: issue #0021242 (eliminate "Mesh Element Information" command)
+ createTool( SMESHOp::OpFindElementByPoint, info );
+
createTool( SMESHOp::OpFreeNode, ctrl0dTb );
createTool( SMESHOp::OpEqualNode, ctrl0dTb );
//createTool( SMESHOp::OpNodeConnectivityNb, ctrl0dTb );
- int ctrl1dTb = createTool( tr( "TB_CTRL1D" ), QString( "SMESHEdgeControlsToolbar" ) ) ;
createTool( SMESHOp::OpFreeBorder, ctrl1dTb );
createTool( SMESHOp::OpLength, ctrl1dTb );
createTool( SMESHOp::OpConnection, ctrl1dTb );
createTool( SMESHOp::OpEqualEdge, ctrl1dTb );
- int ctrl2dTb = createTool( tr( "TB_CTRL2D" ), QString( "SMESHFaceControlsToolbar" ) ) ;
createTool( SMESHOp::OpFreeEdge, ctrl2dTb );
createTool( SMESHOp::OpFreeFace, ctrl2dTb );
createTool( SMESHOp::OpBareBorderFace, ctrl2dTb );
createTool( SMESHOp::OpEqualFace, ctrl2dTb );
createTool( SMESHOp::OpDeflection2D, ctrl2dTb );
- int ctrl3dTb = createTool( tr( "TB_CTRL3D" ), QString( "SMESHVolumeControlsToolbar" ) ) ;
createTool( SMESHOp::OpAspectRatio3D, ctrl3dTb );
createTool( SMESHOp::OpVolume, ctrl3dTb );
createTool( SMESHOp::OpMaxElementLength3D, ctrl3dTb );
createTool( SMESHOp::OpOverConstrainedVolume, ctrl3dTb );
createTool( SMESHOp::OpEqualVolume, ctrl3dTb );
- int addElemTb = createTool( tr( "TB_ADD" ), QString( "SMESHAddElementToolbar" ) ) ;
createTool( SMESHOp::OpNode, addElemTb );
createTool( SMESHOp::OpElem0D, addElemTb );
createTool( SMESHOp::OpElem0DOnElemNodes, addElemTb );
createTool( SMESHOp::OpHexagonalPrism, addElemTb );
createTool( SMESHOp::OpPolyhedron, addElemTb );
- int addNonElemTb = createTool( tr( "TB_ADDNON" ), QString( "SMESHAddElementToolbar" ) ) ;
createTool( SMESHOp::OpQuadraticEdge, addNonElemTb );
createTool( SMESHOp::OpQuadraticTriangle, addNonElemTb );
createTool( SMESHOp::OpBiQuadraticTriangle, addNonElemTb );
createTool( SMESHOp::OpQuadraticHexahedron, addNonElemTb );
createTool( SMESHOp::OpTriQuadraticHexahedron, addNonElemTb );
- int remTb = createTool( tr( "TB_REM" ), QString( "SMESHRemoveToolbar" ) ) ;
createTool( SMESHOp::OpRemoveNodes, remTb );
createTool( SMESHOp::OpRemoveElements, remTb );
createTool( SMESHOp::OpRemoveOrphanNodes, remTb );
createTool( SMESHOp::OpClearMesh, remTb );
-// int renumbTb = createTool( tr( "TB_RENUMBER" ), QString( "SMESHRenumberingToolbar" ) ) ;
//createTool( SMESHOp::OpRenumberingNodes, renumbTb );
//createTool( SMESHOp::OpRenumberingElements, renumbTb );
- int transformTb = createTool( tr( "TB_TRANSFORM" ), QString( "SMESHTransformationToolbar" ) ) ;
createTool( SMESHOp::OpMergeNodes, transformTb );
createTool( SMESHOp::OpMergeElements, transformTb );
createTool( SMESHOp::OpTranslation, transformTb );
createTool( SMESHOp::OpSewing, transformTb );
createTool( SMESHOp::OpDuplicateNodes, transformTb );
- int modifyTb = createTool( tr( "TB_MODIFY" ), QString( "SMESHModificationToolbar" ) ) ;
createTool( SMESHOp::OpConvertMeshToQuadratic, modifyTb );
createTool( SMESHOp::OpCreateBoundaryElements, modifyTb );
createTool( SMESHOp::OpExtrusion, modifyTb );
createTool( SMESHOp::OpSmoothing, modifyTb );
createTool( SMESHOp::OpPatternMapping, modifyTb );
- // Adaptation - begin
- int adaptTb = createTool( tr( "TB_ADAPTATION" ),QString( "SMESHAdaptationToolbar" ) ) ;
- createTool( SMESHOp::OpMGAdapt, adaptTb );
- // Adaptation - end
-
- int measuremTb = createTool( tr( "TB_MEASUREM" ), QString( "SMESHMeasurementsToolbar" ) ) ;
createTool( SMESHOp::OpMinimumDistance, measuremTb );
- int dispModeTb = createTool( tr( "TB_DISP_MODE" ), QString( "SMESHDisplayModeToolbar" ) );
createTool( SMESHOp::OpUpdate, dispModeTb );
QString lc = "$"; // VSR : instead of QtxPopupSelection::defEquality();
popupMgr()->insert( separator(), -1, 0 );
createPopupItem( SMESHOp::OpConvertMeshToQuadratic, OB, mesh_submesh, "&& " + hasElems );
createPopupItem( SMESHOp::OpCreateBoundaryElements, OB, mesh_group, "&& selcount=1 && dim>=2");
- popupMgr()->insert( separator(), -1, 0 );
+ //popupMgr()->insert( separator(), -1, 0 );
- // Adaptation - begin
- createPopupItem( SMESHOp::OpMGAdapt, OB, mesh );
- // Adaptation - end
+ //popupMgr()->insert( separator(), -1, 0 );
QString only_one_non_empty = QString( " && %1=1 && numberOfNodes>0" ).arg( dc );
QString multiple_non_empty = QString( " && %1>0 && numberOfNodes>0" ).arg( dc );
lab = lab + tr("INFO_COMPUTE") + "<br/>";
lab = lab + tr("INFO_REFINE") + ":";
items << wrap(tr("INFO_REFINE_LOCAL_SIZE"), "li")
- << wrap(tr("INFO_REFINE_SUBMESH"), "li");
+ << wrap(tr("INFO_REFINE_SUBMESH"), "li");
lab = lab + wrap(items.join(""), "ul");
items.clear();
gb = app->infoPanel()->addGroup(tr("INFO_GRP_IMPORT_MESH"));
items << wrap("UNV", "li")
- << wrap("MED", "li")
- << wrap("STL", "li")
- << wrap("CGNS", "li")
- << wrap("SAUV", "li")
- << wrap("GMF", "li");
+ << wrap("MED", "li")
+ << wrap("STL", "li")
+ << wrap("CGNS", "li")
+ << wrap("SAUV", "li")
+ << wrap("GMF", "li");
lab = tr("INFO_AVAILABLE_FORMATS") + ":" + wrap(items.join(""), "ul");
items.clear();
-
+
app->infoPanel()->addLabel(lab, gb);
-
+
gb = app->infoPanel()->addGroup(tr("INFO_GRP_CHECK_MESH"));
lab = tr("INFO_DISPLAY") + "<br/>";
items << wrap(tr("INFO_QUALITY_AREA"), "li")
- << wrap(tr("INFO_QUALITY_VOLUME"), "li")
- << wrap(tr("INFO_QUALITY_ASPECT_RATION"), "li")
- << wrap("...", "li");
+ << wrap(tr("INFO_QUALITY_VOLUME"), "li")
+ << wrap(tr("INFO_QUALITY_ASPECT_RATION"), "li")
+ << wrap("...", "li");
lab = lab + tr("INFO_QUALITY_INFO") + ":" + wrap(items.join(""), "ul");
items.clear();
lab = lab + tr("INFO_CLIPPING");
-
+
app->infoPanel()->addLabel(lab, gb);
// << Help Panel
setPreferenceProperty( dispgroup, "columns", 2 );
addPreference( tr( "PREF_FITALL_ON_DISPLAYONLY" ), dispgroup, LightApp_Preferences::Bool, "SMESH", "fitall_on_displayonly" );
-
+
int dispmode = addPreference( tr( "PREF_DISPLAY_MODE" ), dispgroup, LightApp_Preferences::Selector, "SMESH", "display_mode" );
QStringList modes;
modes.append( tr("MEN_WIRE") );
setPreferenceProperty( coloringType, "indexes", indices );
addPreference( tr( "SMESH_DISTRIBUTION_COLOR" ), distributionGr, LightApp_Preferences::Color, "SMESH", "distribution_color" );
- // Adaptation - begin
- // Adaptation tab ------------------------------------------------------------------------
- int adaptTab = addPreference( tr( "ADAPT_PREF_TAB_GENERAL" ) );
- int bloc, pref ;
- // MG-Adapt
- bloc = addPreference( tr( "ADAPT_PREF_MG_ADAPT" ), adaptTab );
- setPreferenceProperty( bloc, "columns", 1 );
- pref = addPreference( tr( "ADAPT_PREF_MG_ADAPT_FILE_MAILLAGE_OUT" ), bloc, LightApp_Preferences::Bool, "HOMARD", "mg_adapt_file_mesh_out" );
- pref = addPreference( tr( "ADAPT_PREF_MG_ADAPT_PUBLICATION_MAILLAGE_OUT" ), bloc, LightApp_Preferences::Bool, "HOMARD", "mg_adapt_publish_mesh_out" );
- pref = addPreference( tr( "ADAPT_PREF_MG_ADAPT_SIZE_MAP" ), bloc, LightApp_Preferences::Selector, "HOMARD", "mg_adapt_size_map" );
- QStringList aListOfSizeMap;
- aListOfSizeMap << tr( "ADAPT_PREF_MG_ADAPT_SIZE_MAP_LOCAL" );
- aListOfSizeMap << tr( "ADAPT_PREF_MG_ADAPT_SIZE_MAP_BACKGROUND" );
- aListOfSizeMap << tr( "ADAPT_PREF_NONE" );;
- setPreferenceProperty( pref, "strings", aListOfSizeMap );
- pref = addPreference( tr( "ADAPT_PREF_MG_ADAPT_TIME_STEP" ), bloc, LightApp_Preferences::Selector, "HOMARD", "mg_adapt_time_step" );
- QStringList aListOfTimeStep;
- aListOfTimeStep << tr( "ADAPT_PREF_NONE" );
- aListOfTimeStep << tr( "ADAPT_PREF_MG_ADAPT_TIME_STEP_LAST" );
- aListOfTimeStep << tr( "ADAPT_PREF_MG_ADAPT_TIME_STEP_C" );;
- setPreferenceProperty( pref, "strings", aListOfTimeStep );
- // Adaptation - end
-
}
void SMESHGUI::preferencesChanged( const QString& sect, const QString& name )
case SMESHOp::OpElem0DOnElemNodes: // Create 0D elements on all nodes
op = new SMESHGUI_Add0DElemsOnAllNodesOp();
break;
- // Adaptation - begin
- case SMESHOp::OpMGAdapt:
- break;
- // Adaptation - end
default:
break;
}
+++ /dev/null
-// Copyright (C) 2011-2020 CEA/DEN, EDF R&D
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-// SMESH SMESHGUI : GUI for the adaptation in the SMESH component
-// File : SMESHGUI_AdaptDlg.cxx
-// Author : Gerald NICOLAS, EDF
-
-// SMESH includes
-#include "SMESHGUI.h"
-#include "SMESHGUI_AdaptDlg.h"
-#include "SMESHGUI_MG_ADAPTDRIVER.h"
-//~#include "MG_ADAPT_i.hxx"
-//~#include "MG_ADAPT.hxx"
-
-// SALOME GUI includes
-#include <SUIT_Desktop.h>
-#include <SUIT_ResourceMgr.h>
-#include <SUIT_Session.h>
-#include <SalomeApp_Application.h>
-#include <SalomeApp_Study.h>
-
-// SALOME KERNEL includes
-#include "utilities.h"
-#include <SALOME_LifeCycleCORBA.hxx>
-
-//=================================================================================
-// function : SMESHGUI_AdaptDlg()
-// purpose :
-//=================================================================================
-SMESHGUI_AdaptDlg::SMESHGUI_AdaptDlg( SMESHGUI* theModule,
- int theCommandID,
- SMESH::SMESH_Mesh_ptr theMesh )
- : mySMESHGUI( theModule )
-{
- action( theCommandID ) ;
-}
-
-//=================================================================================
-// function : ~SMESHGUI_AdaptDlg()
-// purpose : Destroys the object and frees any allocated resources
-//=================================================================================
-SMESHGUI_AdaptDlg::~SMESHGUI_AdaptDlg()
-{
-}
-
-/*!
- * \brief Pilote les actions d'adaption de maillage
- * \param
- * \return bool OK/notOK
-*/
-void SMESHGUI_AdaptDlg::action (int theCommandID)
-//=======================================================================
-{
-// std::cout << "SMESHGUI_AdaptDlg::action avec theCommandID : " << theCommandID << std::endl;
-
-// Preferences
-// recupPreferences();
-
-// Menus and actions
- bool ok = OnGUIEvent (theCommandID) ;
- if ( ! ok ) INFOS("Erreur");
-
- return ;
-}
-
-// /*!
-// * \brief Gets the preferences for the adaptation
-// * \param
-// * \return
-// *
-// * Pour chaque valeur, le defaut est la valeur definie dans ADAPT_Gen
-// * . Si la recuperation dans config/salome s'est bien passee a la creation de ADAPT_Gen
-// * ces valeurs sont les valeurs definies.
-// * . Si cela ne s'est pas bien passe, ce sont les valeurs par defaut de ADAPT_Gen
-// */
-// void SMESHGUI_AdaptDlg::recupPreferences()
-// {
-// INFOS("Début de recupPreferences")
-// //
-// // A. Declarations
-// //
-// SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() );
-// SALOME_LifeCycleCORBA* ls = new SALOME_LifeCycleCORBA(app->namingService());
-// Engines::EngineComponent_var comp = ls->FindOrLoad_Component("FactoryServer", "SMESH");
-// ADAPT::ADAPT_Gen_var adaptGen = ADAPT::ADAPT_Gen::_narrow(comp);
-// if (!CORBA::is_nil(adaptGen))
-// adaptGen->UpdateStudy();
-//
-// SUIT_ResourceMgr* resMgr = mySMESHGUI->getApp()->resourceMgr();
-//
-// }
-
-/*!
- * \brief Launches the GUI for the adaptation
- * \param theCommandID - the integer that references the operation
- * \return bool OK/notOK
-*/
-bool SMESHGUI_AdaptDlg::OnGUIEvent (int theCommandID)
-{
-// std::cout << "SMESHGUI_AdaptDlg:OnGUIEvent avec theCommandID : " << theCommandID << std::endl;
-// A. Controles
- SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() );
- if ( !app ) return false;
-
- SalomeApp_Study* aStudy = dynamic_cast<SalomeApp_Study*> ( app->activeStudy() );
- if ( !aStudy )
- {
- INFOS ( "FAILED to cast active study to SalomeApp_Study" );
- return false;
- }
-
- SUIT_Desktop* parent = SUIT_Session::session()->activeApplication()->desktop();
-
- SALOME_LifeCycleCORBA* ls = new SALOME_LifeCycleCORBA(app->namingService());
- Engines::EngineComponent_var comp = ls->FindOrLoad_Component("FactoryServer", "SMESH");
-// ADAPT::ADAPT_Gen_var adaptGen = ADAPT::ADAPT_Gen::_narrow(comp);
-// if (!CORBA::is_nil(adaptGen))
-// adaptGen->UpdateStudy();
-
- mySMESHGUI->getApp()->updateObjectBrowser();
-//
-// B. Choix selon les commandes
- bool ok = true ;
- SCRUTE(theCommandID);
- switch (theCommandID)
- {
- case 8020: // Adaptation avec MG-Adpat
- {
-// INFOS("Interface avec MG-Adapt" );
-
- SMESH::MG_ADAPT_ptr model = SMESHGUI::GetSMESHGen()->CreateMG_ADAPT();
- bool isCreation = false;
- if (mySMESHGUI->isStudyLocked()) break;
- mySMESHGUI->EmitSignalDeactivateDialog();
- SMESHGUI_MG_ADAPTDRIVER *mgAdapt = new SMESHGUI_MG_ADAPTDRIVER(mySMESHGUI, model, isCreation);
- mgAdapt->show();
- break;
- }
-
- }
- mySMESHGUI->getApp()->updateObjectBrowser();
- return ok;
-}
-
-
-
+++ /dev/null
-// Copyright (C) 2011-2020 CEA/DEN, EDF R&D
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-// SMESH SMESHGUI : GUI for the adaptation in the SMESH component
-// File : SMESHGUI_AdaptDlg.h
-// Author : Gérald NICOLAS, EDF
-//
-#ifndef SMESHGUI_ADAPTDLG_H
-#define SMESHGUI_ADAPTDLG_H
-
-// SMESH includes
-#include "SMESH_SMESHGUI.hxx"
-
-// Qt includes
-#include <QDialog>
-
-// IDL includes
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SMESH_Mesh)
-
-class SMESHGUI;
-
-//=================================================================================
-// class : SMESHGUI_AdaptDlg
-// purpose :
-//=================================================================================
-class SMESHGUI_EXPORT SMESHGUI_AdaptDlg : public QWidget
-{
-public:
- SMESHGUI_AdaptDlg( SMESHGUI*,
- int theCommandID,
- SMESH::SMESH_Mesh_ptr = SMESH::SMESH_Mesh::_nil() );
- ~SMESHGUI_AdaptDlg();
-
- void action (int theCommandID);
- virtual bool OnGUIEvent (int theCommandID);
-
-// static ADAPT::ADAPT_Gen_var InitAdaptGen(SalomeApp_Application*);
-
-public slots:
-
-protected slots:
-
-private slots:
-
-private:
-
-// void recupPreferences();
- SMESHGUI* mySMESHGUI; /* Current SMESHGUI object */
-
- QString _ObjectName;
- QString _LanguageShort ;
- int _PublisMeshIN ;
- int _PublisMeshOUT ;
- int _YACSMaxIter ;
- int _YACSMaxNode ;
- int _YACSMaxElem ;
- int _YACSTypeTest ;
-};
-
-#endif // SMESHGUI_ADAPTDLG_H
+++ /dev/null
-// Copyright (C) 2007-2020 CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-// File : SMESHGUI_MG_ADAPTDRIVER.cxx
-
-#include "SMESHGUI_MG_ADAPTDRIVER.h"
-
-#include "SUIT_Desktop.h"
-#include "SUIT_Application.h"
-#include "SUIT_Session.h"
-
-#include "SalomeApp_Application.h"
-#include "SalomeApp_Module.h"
-#include "SalomeApp_Study.h"
-
-#include "SMESH_Comment.hxx"
-#include "SMESH_Actor.h"
-#include "SMESHGUI.h"
-#include "SMESHGUI_FilterDlg.h"
-#include "SMESHGUI_Selection.h"
-#include <SUIT_MessageBox.h>
-#include "SMESHGUI_IdValidator.h"
-#include "SMESHGUI_Utils.h"
-#include "SMESHGUI_MeshEditPreview.h"
-#include "SMESHGUI_VTKUtils.h"
-#include <SMESH_TypeFilter.hxx>
-#include <SMESH_MeshAlgos.hxx>
-#include <SMESH_LogicalFilter.hxx>
-#include <SMDS_Mesh.hxx>
-#include <SMDS_MeshNode.hxx>
-#include "SMESHGUI_SpinBox.h"
-
-#include <LightApp_SelectionMgr.h>
-#include <SUIT_OverrideCursor.h>
-#include <SUIT_ResourceMgr.h>
-#include <SVTK_ViewWindow.h>
-#include <SALOME_ListIO.hxx>
-#include <SUIT_FileDlg.h>
-#include "SMESHGUI_MeshUtils.h"
-
-
-#include <QApplication>
-#include <QButtonGroup>
-#include <QGridLayout>
-#include <QGroupBox>
-#include <QHBoxLayout>
-#include <QKeyEvent>
-#include <QLabel>
-#include <QLineEdit>
-#include <QCheckBox>
-#include <QPushButton>
-#include <QRadioButton>
-#include <QTabWidget>
-#include <QVBoxLayout>
-#include <QDoubleSpinBox>
-#include <QSpinBox>
-#include <QTreeWidget>
-#include <QTreeWidgetItem>
-#include <QSpacerItem>
-#include <QString>
-#include <QHeaderView>
-#include <QItemDelegate>
-#include <QFileDialog>
-#include <QMessageBox>
-#include <QComboBox>
-
-#include <vtkPoints.h>
-#include <vtkUnstructuredGrid.h>
-#include <vtkIdList.h>
-#include <vtkCellArray.h>
-#include <vtkUnsignedCharArray.h>
-#include <vtkDataSetMapper.h>
-#include <VTKViewer_CellLocationsArray.h>
-#include <vtkProperty.h>
-
-#include <ElCLib.hxx>
-// SALOME KERNEL includes
-#include <SALOMEDS_SComponent.hxx>
-#include <SALOMEDS_SObject.hxx>
-#include <SALOMEDS_Study.hxx>
-#include <SALOMEDS_wrap.hxx>
-#include "SalomeApp_Tools.h"
-#include <SALOMEconfig.h>
-#include <med.h>
-#include <utilities.h>
-
-#include <TCollection_AsciiString.hxx>
-
-const int SPACING = 6; // layout spacing
-const int MARGIN = 9; // layout margin
-
-SALOME_ListIO mySelected;
-
-
-//================================================================
-// Function : firstIObject
-// Purpose : Return the first selected object in the selected object list
-//================================================================
-Handle(SALOME_InteractiveObject) firstIObject()
-{
- const SALOME_ListIO& aList = selectedIO();
- return aList.Extent() > 0 ? aList.First() : Handle(SALOME_InteractiveObject)();
-}
-//================================================================
-// Function : selectedIO
-// Return the list of selected SALOME_InteractiveObject's
-//================================================================
-const SALOME_ListIO& selectedIO()
-{
- SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* > ( SUIT_Session::session()->activeApplication() );
- LightApp_SelectionMgr* aSelectionMgr = app->selectionMgr();
- if( aSelectionMgr )
- {
- aSelectionMgr->selectedObjects( mySelected );
- for (SALOME_ListIteratorOfListIO it (mySelected); it.More(); it.Next())
- SCRUTE(it.Value()->getEntry());
- };
- return mySelected;
-}
-//================================================================
-// Function : getStudy
-// Returne un pointeur sur l'etude active
-//================================================================
-_PTR(Study) getStudy()
-{
- static _PTR(Study) _study;
- if(!_study)
- _study = SalomeApp_Application::getStudy();
- return _study;
-}
-
-bool createAndPublishMed(QString fileName)
-{
-
- SMESH::DriverMED_ReadStatus res;
- SMESH::mesh_array_var aMeshes = new SMESH::mesh_array;
- // SMESHGUI aGui;
-
- aMeshes = SMESHGUI::GetSMESHGen()->CreateMeshesFromMED( fileName.toUtf8().constData(), res );
- _PTR(SObject) aMeshSO = SMESH::FindSObject( aMeshes[0] );
- _PTR(Study) aStudy = SMESH::getStudy();
- QStringList anEntryList;
- // bool isEmpty;
- if ( aMeshSO )
- {
- _PTR(StudyBuilder) aBuilder = aStudy->NewBuilder();
- _PTR(AttributePixMap) aPixmap = aBuilder->FindOrCreateAttribute( aMeshSO, "AttributePixMap" );
- aPixmap->SetPixMap( "ICON_SMESH_TREE_MESH_IMPORTED" );
- anEntryList.append( aMeshSO->GetID().c_str() );
- }
- else
- {
- // isEmpty = true;
- return false;
- }
- SMESHGUI::GetSMESHGUI()->updateObjBrowser();
-
- // browse to the published meshes
- if( LightApp_Application* anApp =
- dynamic_cast<LightApp_Application*>( SUIT_Session::session()->activeApplication() ) )
- anApp->browseObjects( anEntryList );
- return true;
-}
-bool createMgAdaptObject(MgAdapt *myMgAdapt )
-{
- // SMESH::SMESH_Mesh_var newMesh = SMESHGUI::GetSMESHGen()->CreateEmptyMesh();
-
- // _PTR(SObject) aHypothesis;
- _PTR(Study) aStudy = SMESH::getStudy();
- QStringList anEntryList;
- _PTR(StudyBuilder) aBuilder = aStudy->NewBuilder();
- _PTR(SComponent) mgadapt = aStudy->FindComponent("MG-ADAPT");
- _PTR(GenericAttribute) ga;
- if (!aBuilder->FindAttribute(mgadapt, ga, "AttributeName") )
- {
- mgadapt = aBuilder->NewComponent("MG-ADAPT");
- _PTR(AttributeName) Name = aBuilder->FindOrCreateAttribute(mgadapt, "AttributeName");
- Name->SetValue("MG-ADAPT");
- _PTR(AttributePixMap) myPixmap = aBuilder->FindOrCreateAttribute( mgadapt, "AttributePixMap" );
- myPixmap->SetPixMap( "ICON_MG_ADAPT" );
- anEntryList.append( mgadapt->GetID().c_str() );
- }
-
- _PTR(SObject) obj = aBuilder->NewObject(mgadapt);
- _PTR(AttributeName) myName = aBuilder->FindOrCreateAttribute(obj, "AttributeName");
- myName->SetValue("hypo");
- _PTR(AttributePixMap) aPixmap = aBuilder->FindOrCreateAttribute( obj, "AttributePixMap" );
- aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO" );
- anEntryList.append( obj->GetID().c_str() );
-
- SMESHGUI::GetSMESHGUI()->updateObjBrowser();
-
- // // browse to the published meshes
- if( LightApp_Application* anApp =
- dynamic_cast<LightApp_Application*>( SUIT_Session::session()->activeApplication() ) )
- anApp->browseObjects( anEntryList );
- return true;
-}
-
-
-// MG ADAPT UTILS
-//================================================================
-// Function : IObjectCount
-// Return the number of selected objects
-//================================================================
-int IObjectCount()
-{
- SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() );
- LightApp_SelectionMgr* aSelectionMgr = app->selectionMgr();
- if( aSelectionMgr )
- {
- aSelectionMgr->selectedObjects( mySelected );
- SCRUTE(mySelected.Extent());
- return mySelected.Extent();
- }
- return 0;
-}
-
-
-
-SMESHGUI_MG_ADAPTDRIVER::SMESHGUI_MG_ADAPTDRIVER( SMESHGUI* theModule, SMESH::MG_ADAPT_ptr myModel, bool isCreation )
- : mySMESHGUI( theModule ),
- myFilterDlg(0),
- myIsApplyAndClose( false ),
- SMESHGUI_MgAdaptDlg((SalomeApp_Module*)theModule, myModel, SMESHGUI::desktop(), isCreation)
-{
-
- resMgr = resourceMgr();
-
- selMgr = selectionMgr();
-
- // connections
- connect(myArgs, SIGNAL(updateSelection()), this, SLOT(updateSelection()));
- connect(myArgs, SIGNAL(toExportMED(const char*)), this, SLOT(exportMED(const char*)));
-}
-
-SUIT_ResourceMgr* SMESHGUI_MG_ADAPTDRIVER::resourceMgr()
-{
- return dynamic_cast<SUIT_ResourceMgr*>( SUIT_Session::session()->resourceMgr() );
-}
-
-LightApp_SelectionMgr* SMESHGUI_MG_ADAPTDRIVER::selectionMgr()
-{
- SalomeApp_Application* anApp = dynamic_cast<SalomeApp_Application*>( SUIT_Session::session()->activeApplication() );
- if( anApp )
- return dynamic_cast<LightApp_SelectionMgr*>( anApp->selectionMgr() );
- else
- return 0;
-}
-
-void SMESHGUI_MG_ADAPTDRIVER::updateSelection()
-{
- disconnect( selMgr, 0, this, 0 );
- selMgr->clearFilters();
-
- SMESH::SetPointRepresentation( true );
- if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow() )
- aViewWindow->SetSelectionMode( ActorSelection );
- if (myArgs->aBrowser->isChecked())
- {
- connect( selMgr, SIGNAL( currentSelectionChanged() ), this, SLOT( selectionChanged() ));
- selectionChanged();
- }
-
-}
-void SMESHGUI_MG_ADAPTDRIVER::selectionChanged()
-{
- //~ get selected mesh
- SALOME_ListIO aList;
- selMgr->selectedObjects(aList);
- QString aString = "";
- int nbSel = aList.Extent();
- if (nbSel != 1)
- return;
-
- Handle(SALOME_InteractiveObject) IO = aList.First();
- SMESH::SMESH_Mesh_var mesh = SMESH::GetMeshByIO(IO);
- if ( !mesh->_is_nil() )
- {
- myMesh = mesh;
-
- mySelectedObject = SMESH::IObjectToInterface<SMESH::SMESH_IDSource>( IO );
- if ( mySelectedObject->_is_nil() )
- return;
- }
- else
- return;
-
- SMESH::GetNameOfSelectedIObjects( selMgr, aString );
- if ( aString.isEmpty() ) aString = " ";
- else aString = aString.trimmed();
-
-
- bool ok = !aString.isEmpty();
- if ( !mesh->_is_nil() )
- {
- myArgs->aBrowserObject->setText( aString );
- myArgs->meshNameLineEdit->setText( aString );
- myArgs->selectOutMedFileLineEdit->setText(aString+QString(".med"));
- ADAPTATION_MODE aMode;
- int nbVolumes = myMesh->NbVolumes();
- int nbFaces = myMesh->NbFaces();
- if(nbFaces > 0 && nbVolumes > 0) aMode = ADAPTATION_MODE::BOTH;
- else if(nbFaces > 0) aMode = ADAPTATION_MODE::SURFACE;
- else aMode = ADAPTATION_MODE::VOLUME;
- emit myArgs->meshDimSignal(aMode);
- }
-
-}
-void SMESHGUI_MG_ADAPTDRIVER::exportMED(const char* tmp_file)
-{
- bool toOverwrite = true;
- bool toFindOutDim = true;
- myMesh->ExportMED(tmp_file, false, -1, toOverwrite, toFindOutDim);
-}
-void SMESHGUI_MG_ADAPTDRIVER::setMyMesh(SMESH::SMESH_Mesh_var mesh)
-{
- myMesh = mesh;
-}
-SMESH::SMESH_Mesh_var SMESHGUI_MG_ADAPTDRIVER::getMyMesh()
-{
- return myMesh;
-}
-
-//=================================================================================
-// function : PushOnOk()
-// purpose :
-//=================================================================================
-void SMESHGUI_MG_ADAPTDRIVER::PushOnOK()
-{
- setIsApplyAndClose( true );
- bool ret = PushOnApply();
-// std::cout << "SMESHGUI_MG_ADAPTDRIVER::PushOnOK ret : " <<ret<<std::endl;
- if ( ret ) reject();
-}
-bool SMESHGUI_MG_ADAPTDRIVER::PushOnApply()
-{
- MESSAGE("PushOnApply");
-
- if ( SMESHGUI::isStudyLocked() )
- return false;
- if( !isValid() )
- return false;
-
- bool ok = SMESHGUI_MgAdaptDlg::PushOnApply();
-// std::cout << "SMESHGUI_MG_ADAPTDRIVER::PushOnApply ok 1 : " <<ok<<std::endl;
-
- if ( ok )
- {
- ok = execute();
- if (getModel()->getPublish()) this->createMeshInObjectBrowser();
-// std::cout << "SMESHGUI_MG_ADAPTDRIVER::PushOnApply ok 2 : " <<ok<<std::endl;
- if ( ok )
- {
- QMessageBox::information( 0, QObject::tr(""),
- QObject::tr("MG_ADAPT_DIAG_1") );
- }
- else
- {
- QMessageBox::critical( 0, QObject::tr("MG_ADAPT_ERROR"),
- QObject::tr("MG_ADAPT_DIAG_2") );
- }
- }
-
- return ok;
-}
-
-bool SMESHGUI_MG_ADAPTDRIVER::execute()
-{
- int err = 1;
- char* errStr;
- try
- {
- getModel()->compute();
- err = 0;
- errStr = getModel()->getErrMsg();
- std::string msg = err == 0 ? " ok" : std::string("Not ok \n")+CORBA::string_dup(errStr) ;
- }
- catch (const std::exception& e)
- {
- std::cerr<<e.what();
- }
- return err == 0;
-}
-
-//=================================================================================
-// function : Init()
-// purpose :
-//=================================================================================
-void SMESHGUI_MG_ADAPTDRIVER::Init (bool ResetControls)
-{
- myBusy = false;
-
- if ( ResetControls )
- {
- myLineEditElements->clear();
- myNbOkElements = 0;
-
- buttonOk->setEnabled(false);
- buttonApply->setEnabled(false);
-
- //~myActor = 0;
- myMesh = SMESH::SMESH_Mesh::_nil();
-
- myIdSourceCheck->setChecked(true);
-
- onConstructor( 0 );
- }
-
-}
-
-//=======================================================================
-//function : onConstructor
-//purpose : switch operation mode
-//=======================================================================
-
-void SMESHGUI_MG_ADAPTDRIVER::onConstructor( int withGeom )
-{
-
- myGeomLabel ->setVisible( withGeom );
- myGeomNameEdit ->setVisible( withGeom );
- myReuseHypCheck ->setVisible( withGeom );
- myCopyElementsCheck->setVisible( withGeom );
- myFilterBtn ->setVisible( !withGeom );
- myIdSourceCheck ->setVisible( !withGeom );
-
- if ( !withGeom )
- myMeshNameEdit->setText( SMESH::UniqueMeshName("Mesh"));
-
-}
-
-//~void SMESHGUI_MG_ADAPTDRIVER::onSelectIdSource( bool )
-//~{}
-
-//=================================================================================
-// function : enterEvent()
-// purpose :
-//=================================================================================
-void SMESHGUI_MG_ADAPTDRIVER::enterEvent (QEvent*)
-{
-
- // if ( !ConstructorsBox->isEnabled() ) {
- // SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI );
- // if ( aViewWindow && !mySelector ) {
- // mySelector = aViewWindow->GetSelector();
- // }
- // activateThisDialog();
- // }
-
-}
-
-//=================================================================================
-// function : keyPressEvent()
-// purpose :
-//=================================================================================
-void SMESHGUI_MG_ADAPTDRIVER::keyPressEvent( QKeyEvent* e )
-{
-
- QDialog::keyPressEvent( e );
- if ( e->isAccepted() )
- return;
-
- if ( e->key() == Qt::Key_F1 )
- {
- e->accept();
- PushOnHelp();
- }
-
-}
-
-//=================================================================================
-// function : PushOnHelp()
-// purpose :
-//=================================================================================
-void SMESHGUI_MG_ADAPTDRIVER::PushOnHelp()
-{
-
- QString aHelpFile = "adaptation.html#_mg_adapt_anchor";
-
- SMESH::ShowHelpFile( aHelpFile );
-
-}
-
-//=======================================================================
-//function : getErrorMsg
-//purpose : Return an error message and entries of invalid smesh object
-//=======================================================================
-
-QString SMESHGUI_MG_ADAPTDRIVER::getErrorMsg( SMESH::string_array_var theInvalidEntries,
- QStringList & theEntriesToBrowse )
-{
-
- if ( theInvalidEntries->length() == 0 )
- return tr("OPERATION_FAILED");
-
- // theInvalidEntries - SObject's that hold geometry objects whose
- // counterparts are not found in the newGeometry, followed by SObject's
- // holding mesh sub-objects that are invalid because they depend on a not found
- // preceding sub-shape
-
- QString msg = tr("SUBSHAPES_NOT_FOUND_MSG") + "\n";
-
- QString objString;
- for ( CORBA::ULong i = 0; i < theInvalidEntries->length(); ++i )
- {
- _PTR(SObject) so = SMESH::getStudy()->FindObjectID( theInvalidEntries[i].in() );
-
- int objType = SMESHGUI_Selection::type( theInvalidEntries[i].in() );
- if ( objType < 0 ) // geom object
- {
- objString += "\n";
- if ( so )
- objString += so->GetName().c_str();
- else
- objString += theInvalidEntries[i].in(); // it's something like "FACE #2"
- }
- else // smesh object
- {
- theEntriesToBrowse.push_back( theInvalidEntries[i].in() );
-
- objString += "\n ";
- switch ( objType ) {
- case SMESH::MESH:
- objString += tr("SMESH_MESH");
- break;
- case SMESH::HYPOTHESIS:
- objString += tr("SMESH_HYPOTHESIS");
- break;
- case SMESH::ALGORITHM:
- objString += tr("SMESH_ALGORITHM");
- break;
- case SMESH::SUBMESH_VERTEX:
- case SMESH::SUBMESH_EDGE:
- case SMESH::SUBMESH_FACE:
- case SMESH::SUBMESH_SOLID:
- case SMESH::SUBMESH_COMPOUND:
- case SMESH::SUBMESH:
- objString += tr("SMESH_SUBMESH");
- break;
- case SMESH::GROUP:
- objString += tr("SMESH_GROUP");
- break;
- default:
- ;
- }
- objString += " \"";
- if ( so )
- objString += so->GetName().c_str();
- objString += "\" (";
- objString += theInvalidEntries[i].in();
- objString += ")";
- }
- }
- if ( !objString.isEmpty() )
- msg += objString;
-
- return msg;
-}
-
-//=================================================================================
-// function : isValid
-// purpose :
-//=================================================================================
-
-bool SMESHGUI_MG_ADAPTDRIVER::isValid()
-{
- bool ok = true;
- return ok;
-}
-
-bool SMESHGUI_MG_ADAPTDRIVER::createMeshInObjectBrowser()
-{
- QString filename(getModel()->getMedFileOut());
- QStringList errors;
- QStringList anEntryList;
- bool isEmpty = false;
- bool ok = false;
- SMESH::SMESH_Gen_var SMESH_Gen_ptr = SMESHGUI::GetSMESHGen();
- if (!SMESH_Gen_ptr) {
- std::cerr << "Could not retrieve SMESH_Gen_ptr" << std::endl;
- throw SALOME_Exception(LOCALIZED("Could not retrieve SMESH::GetSMESHGen()"));
- }
- SMESH::mesh_array_var aMeshes = new SMESH::mesh_array;
- aMeshes->length( 1 ); // one mesh only
- SMESH::DriverMED_ReadStatus res;
- aMeshes = SMESH_Gen_ptr->CreateMeshesFromMED( filename.toUtf8().constData(), res );
- if ( res != SMESH::DRS_OK ) {
- errors.append( QString( "%1 :\n\t%2" ).arg( filename ).arg( QObject::tr( QString( "SMESH_DRS_%1" ).arg( res ).toLatin1().data() ) ) );
- }
- _PTR(Study) aStudy = SMESH::getStudy();
- for ( int i = 0, iEnd = aMeshes->length(); i < iEnd; i++ )
- {
- _PTR(SObject) aMeshSO = SMESH::FindSObject( aMeshes[i] );
- if ( aMeshSO )
- {
- _PTR(StudyBuilder) aBuilder = aStudy->NewBuilder();
- _PTR(AttributePixMap) aPixmap = aBuilder->FindOrCreateAttribute( aMeshSO, "AttributePixMap" );
- aPixmap->SetPixMap( "ICON_SMESH_TREE_MESH_IMPORTED" ); // put REFINED mesh ico
- anEntryList.append( aMeshSO->GetID().c_str() );
- }
- else
- {
- isEmpty = true;
- }
- }
- // update Object browser
- SMESHGUI::GetSMESHGUI()->updateObjBrowser();
- // browse to the published meshes
- if( LightApp_Application* anApp =
- dynamic_cast<LightApp_Application*>( SUIT_Session::session()->activeApplication() ) )
- anApp->browseObjects( anEntryList );
-
- // show Error message box if there were errors
- if ( errors.count() > 0 ) {
- SUIT_MessageBox::critical( SMESHGUI::desktop(),
- QObject::tr( "SMESH_ERROR" ),
- QObject::tr( "SMESH_IMPORT_ERRORS" ) + "\n" + errors.join( "\n" ) );
- }
-
- // show warning message box, if some imported mesh is empty
- if ( isEmpty ) {
- SUIT_MessageBox::warning( SMESHGUI::desktop(),
- QObject::tr( "SMESH_WRN_WARNING" ),
- QObject::tr( "SMESH_DRS_SOME_EMPTY" ) );
- }
- return true;
-}
-
-//================================================================
-// function : setIsApplyAndClose
-// Purpose : Set value of the flag indicating that the dialog is
-// accepted by Apply & Close button
-//================================================================
-void SMESHGUI_MG_ADAPTDRIVER::setIsApplyAndClose( const bool theFlag )
-{
- myIsApplyAndClose = theFlag;
-}//================================================================
-// function : isApplyAndClose
-// Purpose : Get value of the flag indicating that the dialog is
-// accepted by Apply & Close button
-//================================================================
-bool SMESHGUI_MG_ADAPTDRIVER::isApplyAndClose() const
-{
- return myIsApplyAndClose;
-}
-
-//=================================================================================
-// function : DeactivateActiveDialog()
-// purpose :
-//=================================================================================
-void SMESHGUI_MG_ADAPTDRIVER::deactivateActiveDialog()
-{
- if (ConstructorsBox->isEnabled())
- {
- ConstructorsBox->setEnabled(false);
- GroupArguments->setEnabled(false);
- GroupButtons->setEnabled(false);
- mySMESHGUI->ResetState();
- mySMESHGUI->SetActiveDialogBox(0);
- if ( selMgr )
- selMgr->removeFilter( myIdSourceFilter );
- }
-}
-
-//=================================================================================
-// function : ActivateThisDialog()
-// purpose :
-//=================================================================================
-void SMESHGUI_MG_ADAPTDRIVER::activateThisDialog()
-{
-
- /* Emit a signal to deactivate the active dialog */
- // mySMESHGUI->EmitSignalDeactivateDialog();
- // ConstructorsBox->setEnabled(true);
- // GroupArguments->setEnabled(true);
- // GroupButtons->setEnabled(true);
-
- // mySMESHGUI->SetActiveDialogBox((QDialog*)this);
-
- // onSelectIdSource( myIdSourceCheck->isChecked() );
-
- // SelectionIntoArgument();
-}
-
-//=================================================================================
-// function : setFilters()
-// purpose : SLOT. Called when "Filter" button pressed.
-//=================================================================================
-void SMESHGUI_MG_ADAPTDRIVER::setFilters()
-{
- if(myMesh->_is_nil())
- {
- SUIT_MessageBox::critical(this,
- tr("SMESH_ERROR"),
- tr("NO_MESH_SELECTED"));
- return;
- }
- if ( !myFilterDlg )
- myFilterDlg = new SMESHGUI_FilterDlg( mySMESHGUI, SMESH::ALL );
-
- QList<int> types;
- if ( myMesh->NbEdges() ) types << SMESH::EDGE;
- if ( myMesh->NbFaces() ) types << SMESH::FACE;
- if ( myMesh->NbVolumes() ) types << SMESH::VOLUME;
- if ( myMesh->NbBalls() ) types << SMESH::BALL;
- if ( myMesh->Nb0DElements()) types << SMESH::ELEM0D;
- if ( types.count() > 1 ) types << SMESH::ALL;
-
- myFilterDlg->Init( types );
- myFilterDlg->SetSelection();
- myFilterDlg->SetMesh( myMesh );
- myFilterDlg->SetSourceWg( myLineEditElements );
-
- myFilterDlg->show();
-}
-
-//=================================================================================
-// function : onOpenView()
-// purpose :
-//=================================================================================
-void SMESHGUI_MG_ADAPTDRIVER::onOpenView()
-{
- if ( mySelector ) {
- SMESH::SetPointRepresentation(false);
- }
- else {
- mySelector = SMESH::GetViewWindow( mySMESHGUI )->GetSelector();
- activateThisDialog();
- }
-}
-
-//=================================================================================
-// function : onCloseView()
-// purpose :
-//=================================================================================
-void SMESHGUI_MG_ADAPTDRIVER::onCloseView()
-{
- deactivateActiveDialog();
- mySelector = 0;
-}
+++ /dev/null
-// Copyright (C) 2011-2020 CEA/DEN, EDF R&D
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-// SMESH SMESHGUI : GUI for the adaptation in the SMESH component
-// File : SMESHGUI_MG_ADAPTDRIVER.h
-//
-#ifndef SMESHGUI_MG_ADAPTDRIVER_H
-#define SMESHGUI_MG_ADAPTDRIVER_H
-
-#include <set>
-// SMESH includes
-#include "SMESH_SMESHGUI.hxx"
-
-// Qt includes
-#include <QDialog>
-#include <QTreeWidget>
-#include<QItemDelegate>
-
-#include <QThread>
-
-#include "LightApp_DataOwner.h"
-#include "SalomeApp_Application.h"
-#include <SALOMEconfig.h>
-#include <SALOME_ListIO.hxx>
-#include "SalomeApp_Module.h"
-#include "SalomeApp_Study.h"
-#include <med.h>
-#include <QObject>
-// model
-#include "MG_ADAPTGUI.hxx"
-
-#include CORBA_SERVER_HEADER(MG_ADAPT)
-
-class SUIT_ViewWindow;
-class SUIT_Desktop;
-class SUIT_Study;
-class SUIT_ResourceMgr;
-
-class CAM_Module;
-
-class SALOMEDSClient_Study;
-class SALOMEDSClient_SObject;
-
-class SalomeApp_Study;
-class SalomeApp_Module;
-class LightApp_SelectionMgr;
-class SUIT_SelectionFilter;
-
-
-class QButtonGroup;
-class QLineEdit;
-class QGroupBox;
-class QRadioButton;
-class QLabel;
-class QCheckBox;
-class QGridLayout;
-class QTabWidget;
-class QDoubleSpinBox;
-class QSpinBox;
-class QTreeWidget;
-class QTreeWidgetItem;
-class QSpacerItem;
-class QHBoxLayout;
-class QItemDelegate;
-class QComboBox;
-class QObject;
-
-
-// IDL includes
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SMESH_Mesh)
-#include CORBA_SERVER_HEADER(SMESH_Gen)
-class SMESHGUI;
-class SMESHGUI_MgAdaptDlg;
-class SMESHGUI_IdValidator;
-class SMESHGUI_FilterDlg;
-class MgAdapt;
-class QHeaderView;
-class QFileDialog;
-
-
-int IObjectCount();
-const SALOME_ListIO& selectedIO();
-_PTR(Study) getStudy();
-Handle(SALOME_InteractiveObject) firstIObject();
-bool createAndPublishMed(QString fileName);
-bool createMgAdaptObject(MgAdapt* myMgAdapt = 0);
-
-
-class SMESHGUI_MG_ADAPTDRIVER : public SMESHGUI_MgAdaptDlg
-{
- Q_OBJECT;
-
-public :
- SMESHGUI_MG_ADAPTDRIVER( SMESHGUI*, SMESH::MG_ADAPT_ptr, bool isCreation = true );
- void setMyMesh(SMESH::SMESH_Mesh_var);
- SMESH::SMESH_Mesh_var getMyMesh() ;
-
-private :
-
- SMESHGUI* mySMESHGUI; /* Current SMESHGUI object */
- LightApp_SelectionMgr* selMgr ;
- SUIT_ResourceMgr* resMgr;
- SUIT_ResourceMgr* resourceMgr();
- LightApp_SelectionMgr* selectionMgr();
- SMESH::SMESH_Mesh_var myMesh ;
-
-
-
- void Init( bool = true );
- void enterEvent( QEvent* ); /* mouse enter the QWidget */
- void keyPressEvent( QKeyEvent* );
- QString getErrorMsg( SMESH::string_array_var invalidEntries,
- QStringList & entriesToBrowse );
-
- bool isValid();
- bool createMeshInObjectBrowser();
- void setIsApplyAndClose( const bool theFlag );
- bool isApplyAndClose() const;
- bool execute();
- SMESHGUI_IdValidator* myIdValidator;
- int myNbOkElements; /* to check when elements are defined */
-
- SVTK_Selector* mySelector;
-
- bool myBusy;
- GEOM::GEOM_Object_var myNewGeometry;
- //~SMESH_Actor* myActor; //
- SUIT_SelectionFilter* myIdSourceFilter;
-
- SMESH::SMESH_IDSource_var mySelectedObject;
-
- QTabWidget* myTabWidget;
- QButtonGroup* GroupConstructors;
-
- QGroupBox* ConstructorsBox;
- QGroupBox* GroupArguments;
- QGroupBox* GroupButtons;
-
- QPushButton* buttonOk;
- QPushButton* buttonCancel;
- QPushButton* buttonApply;
- QPushButton* buttonHelp;
-
- QLabel* myTextLabelElements;
- QLabel* myGeomLabel;
- QLineEdit* myLineEditElements;
- QLineEdit* myMeshNameEdit;
- QLineEdit* myGeomNameEdit;
- QCheckBox* myIdSourceCheck;
- QCheckBox* myCopyGroupsCheck;
- QCheckBox* myReuseHypCheck;
- QCheckBox* myCopyElementsCheck;
- QCheckBox* myKeepIdsCheck;
-
- QPushButton* myFilterBtn;
- SMESHGUI_FilterDlg* myFilterDlg;
-
- QString myHelpFileName;
-
- bool myIsApplyAndClose;
-
- QString inputMeshName;
- QString outputMeshName;
-private slots:
- void selectionChanged();
- void updateSelection();
-
-protected slots :
-
-private slots:
-
- void exportMED(const char* );
-
- virtual bool PushOnApply();
- virtual void PushOnOK();
- virtual void PushOnHelp();
-
- void deactivateActiveDialog();
- void activateThisDialog();
- void onConstructor( int );
- //~void onTextChange( const QString& );
- //~void onSelectIdSource( bool );
- void setFilters();
- void onOpenView();
- void onCloseView();
-
-
-};
-
-
-
-
-#endif // SMESHGUI_MG_ADAPTDRIVER_H
OpConvertMeshToQuadratic = 4513, // MENU MODIFICATION - CONVERT TO/FROM QUADRATIC
OpCreateBoundaryElements = 4514, // MENU MODIFICATION - CREATE BOUNDARY ELEMENTS
OpSplitBiQuadratic = 4515, // MENU MODIFICATION - SPLIT BI-QUADRATIC TO LINEAR
- // Adaptation ---------------------//--------------------------------
- OpMGAdapt = 8020, // MENU ADAPTATION - MG-ADAPT
// Measurements -------------------//--------------------------------
OpPropertiesLength = 5000, // MENU MEASUREMENTS - BASIC PROPERTIES - LENGTH
OpPropertiesArea = 5001, // MENU MEASUREMENTS - BASIC PROPERTIES - AREA
<source>ICON_CREATE_GEO_GROUP</source>
<translation>mesh_groups_from_gemetry.png</translation>
</message>
- <message>
- <source>ICON_MG_ADAPT</source>
- <translation>adapt_mg_adapt.png</translation>
- </message>
<message>
<source>ICON_CONV_TO_QUAD</source>
<translation>mesh_conv_to_quad.png</translation>
<message>
<source>ICON_MEASURE_AREA</source>
<translation>mesh_measure_area.png</translation>
- </message>
+ </message>
<message>
<source>ICON_MEASURE_VOLUME</source>
<translation>mesh_measure_volume.png</translation>
<source>MEN_CONSTRUCT_GROUP</source>
<translation>Construct Group</translation>
</message>
- <message>
- <source>MEN_MG_ADAPT</source>
- <translation>Remesh with MG_Adapt</translation>
- </message>
- <message>
- <source>Args</source>
- <translation>Arguments</translation>
- </message>
- <message>
- <source>MeshOut</source>
- <translation>Mesh Out</translation>
- </message>
- <message>
- <source>MeshIn</source>
- <translation>Mesh In</translation>
- </message>
- <message>
- <source>MEDFile</source>
- <translation>MED file</translation>
- </message>
- <message>
- <source>Browser</source>
- <translation>Browser</translation>
- </message>
- <message>
- <source>Publish_MG_ADAPT</source>
- <translation>Publish</translation>
- </message>
- <message>
- <source>SIZE_MAP_FIELD</source>
- <translation>Size map field</translation>
- </message>
- <message>
- <source>MG_ADAPT_FIELD_NAME</source>
- <translation>Field Name</translation>
- </message>
- <message>
- <source>MG_ADAPT_MED_FILE_1</source>
- <translation>This MED file cannot be read.</translation>
- </message>
- <message>
- <source>MG_ADAPT_MED_FILE_2</source>
- <translation>No mesh in this MED file.</translation>
- </message>
- <message>
- <source>MG_ADAPT_MED_FILE_3</source>
- <translation>More than one mesh in this MED file.</translation>
- </message>
- <message>
- <source>MG_ADAPT_MED_FILE_4</source>
- <translation>The mesh in this MED file cannot be read.</translation>
- </message>
- <message>
- <source>MG_ADAPT_MED_FILE_5</source>
- <translation>No field in this MED file.</translation>
- </message>
- <message>
- <source>MG_ADAPT_ERROR</source>
- <translation>Error</translation>
- </message>
- <message>
- <source>MG_ADAPT_CH_ST</source>
- <translation>Chosen time step</translation>
- </message>
- <message>
- <source>MG_ADAPT_RANK</source>
- <translation>Rank</translation>
- </message>
- <message>
- <source>MG_ADAPT_TSTP</source>
- <translation>Time step </translation>
- </message>
- <message>
- <source>MG_ADAPT_NO_T_ST</source>
- <translation>No time step</translation>
- </message>
- <message>
- <source>MG_ADAPT_L_ST</source>
- <translation>Last time step</translation>
- </message>
- <message>
- <source>MeshName</source>
- <translation>Mesh name</translation>
- </message>
- <message>
- <source>LOCAL_MG_ADAPT</source>
- <translation>Local</translation>
- </message>
- <message>
- <source>BACKGRND_MG_ADAPT</source>
- <translation>Background</translation>
- </message>
- <message>
- <source>CNST_MG_ADAPT</source>
- <translation>Constant</translation>
- </message>
- <message>
- <source>MED_FILE_BCKG</source>
- <translation>MED file background size map</translation>
- </message>
- <message>
- <source>VALUE_MG_ADAPT</source>
- <translation>Value</translation>
- </message>
- <message>
- <source>SIZE_MAP_DEF</source>
- <translation>Size map definition</translation>
- </message>
- <message>
- <source>ADVOP</source>
- <translation>Advanced Options</translation>
- </message>
- <message>
- <source>MG_ADAPT_DIAG_1</source>
- <translation>Adaptation succeeded.</translation>
- </message>
- <message>
- <source>MG_ADAPT_DIAG_2</source>
- <translation>Adaptation failed.</translation>
- </message>
<message>
<source>MEN_CONV_TO_QUAD</source>
<translation>Convert to/from quadratic</translation>
<source>MEN_MODIFY</source>
<translation>Modification</translation>
</message>
- <message>
- <source>MEN_ADAPT</source>
- <translation>Adaptation</translation>
- </message>
<message>
<source>MEN_MEASURE</source>
<translation>Measurements</translation>
<source>SMESH_AVAILABLE</source>
<translation>Available</translation>
</message>
- <message>
- <source>SMESH_NOT_AVAILABLE</source>
- <translation>Not available</translation>
- </message>
<message>
<source>SMESH_AVAILABLE_ALGORITHMS</source>
<translation>Available algorithms</translation>
<source>SMESH_MULTICOLOR</source>
<translation>Multicolor</translation>
</message>
- <message>
- <source>ADAPT_PREF_TAB_GENERAL</source>
- <translation>Adaptation</translation>
- </message>
- <message>
- <source>ADAPT_PREF_NONE</source>
- <translation>None</translation>
- </message>
- <message>
- <source>ADAPT_PREF_MG_ADAPT</source>
- <translation>Adaptation with MG-Adapt</translation>
- </message>
- <message>
- <source>ADAPT_PREF_MG_ADAPT_FILE_MAILLAGE_OUT</source>
- <translation>Write the OUT mesh</translation>
- </message>
- <message>
- <source>ADAPT_PREF_MG_ADAPT_PUBLICATION_MAILLAGE_OUT</source>
- <translation>Publication of the OUT mesh</translation>
- </message>
- <message>
- <source>OPTION_VALUE_COLUMN</source>
- <translation>Option</translation>
- </message>
- <message>
- <source>OPTION_NAME_COLUMN</source>
- <translation>Value</translation>
- </message>
- <message>
- <source>compute_ridges</source>
- <translation>Compute ridges</translation>
- </message>
- <message>
- <source>max_memory</source>
- <translation>Maximum memory (Mb)</translation>
- </message>
- <message>
- <source>Adaption</source>
- <translation>adaptation</translation>
- </message>
- <message>
- <source>components</source>
- <translation>Components</translation>
- </message>
- <message>
- <source>ADAPT_PREF_MG_ADAPT_SIZE_MAP</source>
- <translation>Size map</translation>
- </message>
- <message>
- <source>ADAPT_PREF_MG_ADAPT_SIZE_MAP_LOCAL</source>
- <translation>Local</translation>
- </message>
- <message>
- <source>ADAPT_PREF_MG_ADAPT_SIZE_MAP_BACKGROUND</source>
- <translation>Background</translation>
- </message>
- <message>
- <source>ADAPT_PREF_MG_ADAPT_TIME_STEP_LAST</source>
- <translation>Last</translation>
- </message>
- <message>
- <source>ADAPT_PREF_MG_ADAPT_TIME_STEP</source>
- <translation>Choosen time step</translation>
- </message>
- <message>
- <source>ADAPT_PREF_MG_ADAPT_TIME_STEP_C</source>
- <translation>Value</translation>
- </message>
- <message>
- <source>MG_ADAPT_SELECT_FILE_0</source>
- <translation>MG-ADAPT select file</translation>
- </message>
- <message>
- <source>ADAPT_PREF_MG_ADAPT_ADVOP</source>
- <translation>Advanced Options</translation>
- </message>
<message>
<source>SMESH_VISU_PROBLEM</source>
<translation>Mesh visualization failed</translation>
<source>STB_CONSTRUCT_GROUP</source>
<translation>Construct Group</translation>
</message>
- <message>
- <source>STB_MG_ADAPT</source>
- <translation>Remesh with MG_Adapt</translation>
- </message>
<message>
<source>STB_CONV_TO_QUAD</source>
<translation>Convert to/from quadratic</translation>
<source>TB_CTRL3D</source>
<translation>Volume Controls Toolbar</translation>
</message>
- <message>
- <source>TB_ADAPTATION</source>
- <translation>Adaptation Toolbar</translation>
- </message>
<message>
<source>TB_MEASUREM</source>
<translation>Measurements Toolbar</translation>
<source>TOP_CONSTRUCT_GROUP</source>
<translation>Construct Group</translation>
</message>
- <message>
- <source>TOP_MG_ADAPT</source>
- <translation>Remesh with MG_Adapt</translation>
- </message>
<message>
<source>TOP_CONV_TO_QUAD</source>
<translation>Convert to/from quadratic</translation>
<message>
<source>FULL_RECOMPUTE_QUESTION</source>
<translation>
-The mesh has been edited since a last total re-compute
-that may prevent successful computation.
+The mesh has been edited since a last total re-compute
+that may prevent successful computation.
Do you wish to re-compute the mesh totally to discard the modifications?
</translation>
</message>
<message>
<source>GEOMETRY_OBJECT_IS_NOT_DEFINED_MESH</source>
<translation>Geometry object is not defined.
-Do you want to create an empty mesh
+Do you want to create an empty mesh
without algorithms and hypotheses? </translation>
</message>
<message>
<message>
<source>CONCURRENT_SUBMESH_APPEARS</source>
<translation>
-The assigned algorithm has the same priority as one assigned to an
+The assigned algorithm has the same priority as one assigned to an
adjacent sub-mesh, hence it's undefined which algorithm to use for
meshing boundary shared by two sub-meshes. Would you like to set
the order of sub-mesh computation? </translation>
<message>
<source>SUBSHAPES_NOT_FOUND_MSG</source>
<translation>
-Some sub-shapes not found in the new geometry. They are listed
+Some sub-shapes not found in the new geometry. They are listed
below along with dependent mesh objects that are marked with
red in the Object Browser.</translation>
</message>
<source>MEN_CONSTRUCT_GROUP</source>
<translation>Construire un groupe</translation>
</message>
- <message>
- <source>MEN_MG_ADAPT</source>
- <translation>Remaillage avec MG_Adapt</translation>
- </message>
- <message>
- <source>Args</source>
- <translation>Arguments</translation>
- </message>
- <message>
- <source>MeshOut</source>
- <translation>Maillage en sortie</translation>
- </message>
- <message>
- <source>MeshIn</source>
- <translation>Maillage en entrée</translation>
- </message>
- <message>
- <source>MEDFile</source>
- <translation>Fichier MED</translation>
- </message>
- <message>
- <source>Browser</source>
- <translation>Arbre d'études</translation>
- </message>
- <message>
- <source>Publish_MG_ADAPT</source>
- <translation>Publication</translation>
- </message>
- <message>
- <source>SIZE_MAP_FIELD</source>
- <translation>Champ de la carte de taille</translation>
- </message>
- <message>
- <source>MG_ADAPT_FIELD_NAME</source>
- <translation>Nom du champ</translation>
- </message>
- <message>
- <source>MG_ADAPT_MED_FILE_1</source>
- <translation>Ce fichier MED est illisible.</translation>
- </message>
- <message>
- <source>MG_ADAPT_MED_FILE_2</source>
- <translation>Ce fichier MED ne contient aucun maillage.</translation>
- </message>
- <message>
- <source>MG_ADAPT_MED_FILE_3</source>
- <translation>Ce fichier MED contient plus d'un maillage.</translation>
- </message>
- <message>
- <source>MG_ADAPT_MED_FILE_4</source>
- <translation>Impossible de lire le maillage de ce fichier MED.</translation>
- </message>
- <message>
- <source>MG_ADAPT_MED_FILE_5</source>
- <translation>Ce fichier MED ne contient aucun champ.</translation>
- </message>
- <message>
- <source>MG_ADAPT_ERROR</source>
- <translation>Erreur</translation>
- </message>
- <message>
- <source>MG_ADAPT_CH_ST</source>
- <translation>Pas de temps choisi</translation>
- </message>
- <message>
- <source>MG_ADAPT_RANK</source>
- <translation>Numéro d'ordre</translation>
- </message>
- <message>
- <source>MG_ADAPT_TSTP</source>
- <translation>Pas de temps </translation>
- </message>
- <message>
- <source>MG_ADAPT_NO_T_ST</source>
- <translation>Sans pas de temps</translation>
- </message>
- <message>
- <source>MG_ADAPT_L_ST</source>
- <translation>Dernier pas de temps</translation>
- </message>
- <message>
- <source>MeshName</source>
- <translation>Nom du maillage</translation>
- </message>
- <message>
- <source>LOCAL_MG_ADAPT</source>
- <translation>Locale</translation>
- </message>
- <message>
- <source>BACKGRND_MG_ADAPT</source>
- <translation>Arrière-plan</translation>
- </message>
- <message>
- <source>CNST_MG_ADAPT</source>
- <translation>Constante</translation>
- </message>
- <message>
- <source>MED_FILE_BCKG</source>
- <translation>Fichier MED de la carte en arrière-plan</translation>
- </message>
- <message>
- <source>VALUE_MG_ADAPT</source>
- <translation>Valeur</translation>
- </message>
- <message>
- <source>SIZE_MAP_DEF</source>
- <translation>Définition de la carte de taille</translation>
- </message>
- <message>
- <source>ADVOP</source>
- <translation>Options avancées</translation>
- </message>
- <message>
- <source>MG_ADAPT_DIAG_1</source>
- <translation>Adaptation réussie.</translation>
- </message>
- <message>
- <source>MG_ADAPT_DIAG_2</source>
- <translation>Echec de l'adaptation.</translation>
- </message>
<message>
<source>MEN_CONV_TO_QUAD</source>
<translation>Convertir vers/depuis quadratique</translation>
</message>
<message>
<source>MEN_EDIT</source>
- <translation>Editer</translation>
+ <translation>Edition</translation>
</message>
<message>
<source>MEN_EDIT_GROUP</source>
<source>MEN_MODIFY</source>
<translation>Modification</translation>
</message>
- <message>
- <source>MEN_ADAPT</source>
- <translation>Adaptation</translation>
- </message>
<message>
<source>MEN_MEASURE</source>
<translation>Outils de mesure</translation>
<source>SMESH_MULTICOLOR</source>
<translation>Multicouleur</translation>
</message>
- <message>
- <source>ADAPT_PREF_TAB_GENERAL</source>
- <translation>Adaptation</translation>
- </message>
- <message>
- <source>ADAPT_PREF_NONE</source>
- <translation>Sans</translation>
- </message>
- <message>
- <source>ADAPT_PREF_MG_ADAPT</source>
- <translation>Adaptation avec MG-Adapt</translation>
- </message>
- <message>
- <source>ADAPT_PREF_MG_ADAPT_FILE_MAILLAGE_OUT</source>
- <translation>Ecriture du maillage de sortie</translation>
- </message>
- <message>
- <source>ADAPT_PREF_MG_ADAPT_PUBLICATION_MAILLAGE_OUT</source>
- <translation>Publication du maillage de sortie</translation>
- </message>
- <message>
- <source>OPTION_VALUE_COLUMN</source>
- <translation>Option</translation>
- </message>
- <message>
- <source>OPTION_NAME_COLUMN</source>
- <translation>Valeur</translation>
- </message>
- <message>
- <source>compute_ridges</source>
- <translation>Calcul des crêtes</translation>
- </message>
- <message>
- <source>max_memory</source>
- <translation>Maximum mémoire (Mb)</translation>
- </message>
- <message>
- <source>Adaption</source>
- <translation>Adaptation</translation>
- </message>
- <message>
- <source>components</source>
- <translation>Composantes</translation>
- </message>
- <message>
- <source>ADAPT_PREF_MG_ADAPT_SIZE_MAP</source>
- <translation>Carte de tailles</translation>
- </message>
- <message>
- <source>ADAPT_PREF_MG_ADAPT_SIZE_MAP_LOCAL</source>
- <translation>Locale</translation>
- </message>
- <message>
- <source>ADAPT_PREF_MG_ADAPT_SIZE_MAP_BACKGROUND</source>
- <translation>Arrière-plan</translation>
- </message>
- <message>
- <source>ADAPT_PREF_MG_ADAPT_TIME_STEP_LAST</source>
- <translation>Dernier</translation>
- </message>
- <message>
- <source>ADAPT_PREF_MG_ADAPT_TIME_STEP</source>
- <translation>Choix du pas de temps</translation>
- </message>
- <message>
- <source>ADAPT_PREF_MG_ADAPT_TIME_STEP_C</source>
- <translation>Valeur</translation>
- </message>
- <message>
- <source>MG_ADAPT_SELECT_FILE_0</source>
- <translation>MG-ADAPT selection fichier MED</translation>
- </message>
- <message>
- <source>ADAPT_PREF_MG_ADAPT_ADVOP</source>
- <translation>Options avancées</translation>
- </message>
<message>
<source>SMESH_VISU_PROBLEM</source>
<translation>Impossible de visualiser le maillage, probablement à cause d'un manque de mémoire</translation>
<source>STB_CONSTRUCT_GROUP</source>
<translation>Construire un groupe</translation>
</message>
- <message>
- <source>STB_MG_ADAPT</source>
- <translation>Remaillage avec MG_Adapt</translation>
- </message>
<message>
<source>STB_CONV_TO_QUAD</source>
<translation>Convertir vers/depuis quadratique</translation>
<source>TB_CTRL3D</source>
<translation>Barre des contrôles des volumes</translation>
</message>
- <message>
- <source>TB_ADAPTATION</source>
- <translation>Barre de l'adaptation</translation>
- </message>
<message>
<source>TB_MEASUREM</source>
<translation>Barre des mesures</translation>
<source>TOP_CONSTRUCT_GROUP</source>
<translation>Construire un groupe</translation>
</message>
- <message>
- <source>TOP_MG_ADAPT</source>
- <translation>Remaillage avec MG_Adapt</translation>
- </message>
<message>
<source>TOP_CONV_TO_QUAD</source>
<translation>Convertir vers/de quadratique</translation>
${PROJECT_SOURCE_DIR}/src/SMESHUtils
${PROJECT_BINARY_DIR}
${PROJECT_BINARY_DIR}/idl
- ${MEDCOUPLING_INCLUDE_DIRS}
)
# additional preprocessor / compiler flags
SMESHDS
SMESHControls
MeshDriverMED
- ${MEDCoupling_medloader}
)
# --- headers ---
SMESH_MeshPartDS.hxx
SMESH.hxx
SMESH_Component_Generator.hxx
- MG_ADAPT_i.hxx
)
# --- sources ---
SMESH_Measurements_i.cxx
SMESH_PreMeshInfo.cxx
SMESH_Component_Generator.cxx
- MG_ADAPT_i.cxx
)
# --- rules ---
+++ /dev/null
-// Copyright (C) 2011-2020 CEA/DEN, EDF R&D
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-#include "MG_ADAPT_i.hxx"
-
-#include "string.h"
-#include "SMESH_Gen_i.hxx"
-#include <SMESH_Gen.hxx>
-#include <SALOMEconfig.h>
-#include CORBA_CLIENT_HEADER(SALOMEDS)
-
-
-//=============================================================================
-/*!
- * SMESH_Gen_i::CreateMG_ADAPT
- *
- * Create measurement instance
- */
-//=============================================================================
-
-
-using namespace SMESH;
-void MG_ADAPT_i::copyHypothesisDataToImpl(const SMESH::MgAdaptHypothesisData& from, ::MG_ADAPT::MgAdaptHypothesisData* to) const
-{
- to->myFileInDir = from.myFileInDir;
- to->myMeshFileIn = from.myMeshFileIn;
- to->myMeshFileBackground = from.myMeshFileBackground;
- to->myOutMeshName = from.myOutMeshName;
- to->myMeshFileOut = from.myMeshFileOut;
- to->myFileOutDir = from.myFileOutDir;
- to->myFileSizeMapDir = from.myFileSizeMapDir;
- to->myFieldName = from.myFieldName;
- to->fromMedFile = from.fromMedFile;
- to->myPublish = from.myPublish;
- to->myMeshOutMed = from.myMeshOutMed;
- to->myUseLocalMap = from.myUseLocalMap;
- to->myUseBackgroundMap = from.myUseBackgroundMap;
- to->myUseConstantValue = from.myUseConstantValue;
- to->myConstantValue = from.myConstantValue;
- to->myTimeStep = from.myTimeStep;
- to->myRank = from.myRank;
- to->myUseNoTimeStep = from.myUseNoTimeStep;
- to->myUseLastTimeStep = from.myUseLastTimeStep;
- to->myUseChosenTimeStep = from.myUseChosenTimeStep;
- to->myWorkingDir = from.myWorkingDir;
- to->myLogFile = from.myLogFile;
- to->myPrintLogInFile = from.myPrintLogInFile;
- to->myKeepFiles = from.myKeepFiles;
- to->myRemoveLogOnSuccess = from.myRemoveLogOnSuccess;
- to->myVerboseLevel = from.myVerboseLevel;
-}
-void MG_ADAPT_i::copyHypothesisDataFromImpl(const ::MG_ADAPT::MgAdaptHypothesisData* from, SMESH::MgAdaptHypothesisData* to) const
-{
- to->myFileInDir = CORBA::string_dup(from->myFileInDir.c_str());
- to->myMeshFileIn = CORBA::string_dup(from->myMeshFileIn.c_str());
- to->myMeshFileBackground = CORBA::string_dup(from->myMeshFileBackground.c_str());
- to->myOutMeshName = CORBA::string_dup(from->myOutMeshName.c_str());
- to->myMeshFileOut = CORBA::string_dup(from->myMeshFileOut.c_str());
- to->myFileOutDir = CORBA::string_dup(from->myFileOutDir.c_str());
- to->myFileSizeMapDir = CORBA::string_dup(from->myFileSizeMapDir.c_str());
- to->myFieldName = CORBA::string_dup(from->myFieldName.c_str());
- to->fromMedFile = from->fromMedFile;
- to->myPublish = from->myPublish;
- to->myMeshOutMed = from->myMeshOutMed;
- to->myUseLocalMap = from->myUseLocalMap;
- to->myUseBackgroundMap = from->myUseBackgroundMap;
- to->myUseConstantValue = from->myUseConstantValue;
- to->myConstantValue = from->myConstantValue;
- to->myTimeStep = from->myTimeStep;
- to->myRank = from->myRank;
- to->myUseNoTimeStep = from->myUseNoTimeStep;
- to->myUseLastTimeStep = from->myUseLastTimeStep;
- to->myUseChosenTimeStep = from->myUseChosenTimeStep;
- to->myWorkingDir = CORBA::string_dup(from->myWorkingDir.c_str());
- to->myLogFile = CORBA::string_dup(from->myLogFile.c_str());
- to->myPrintLogInFile = from->myPrintLogInFile;
- to->myKeepFiles = from->myKeepFiles;
- to->myRemoveLogOnSuccess = from->myRemoveLogOnSuccess;
- to->myVerboseLevel = from->myVerboseLevel;
-}
-SMESH::MG_ADAPT_ptr SMESH_Gen_i::CreateMG_ADAPT()
-{
- SMESH::MG_ADAPT_i* aMGadapt = new SMESH::MG_ADAPT_i();
- SMESH::MG_ADAPT_var anObj = aMGadapt->_this();
- return anObj._retn();
-}
-SMESH::MG_ADAPT_ptr SMESH_Gen_i::CreateAdaptationHypothesis()
-{
- SMESH::MG_ADAPT_i* aMGadapt = new SMESH::MG_ADAPT_i();
- SMESH::MG_ADAPT_var anObj = aMGadapt->_this();
- return anObj._retn();
-}
-SMESH::MG_ADAPT_OBJECT_ptr SMESH_Gen_i::Adaptation( const char* adaptationType)
-{
-
- if (!strcmp(adaptationType, "MG_Adapt"))
- {
- SMESH::MG_ADAPT_OBJECT_i* mg_adapt_object = new SMESH::MG_ADAPT_OBJECT_i();
- SMESH::MG_ADAPT_OBJECT_var anObj = mg_adapt_object->_this();
- return anObj._retn();
- }
-
-}
-//~SMESH::MG_ADAPT_ptr MG_ADAPT_i::CreateMG_ADAPT()
-//~{
-
- //~SMESH_Gen_i* smeshGen_i = SMESH_Gen_i::GetSMESHGen();
- //~SMESH::MG_ADAPT_i* aMGadapt = new SMESH::MG_ADAPT_i(smeshGen_i->GetPOA());
- //~SMESH::MG_ADAPT_var anObj = aMGadapt->_this();
- //~return anObj._retn();
-//~}
-//=============================================================================
-/*!
- * standard constructor
- */
-//=============================================================================
-MG_ADAPT_i::MG_ADAPT_i(): SALOME::GenericObj_i( SMESH_Gen_i::GetPOA() )
-{
- myMgAdapt = new ::MG_ADAPT::MgAdapt();
-}
-//~MG_ADAPT_i::MG_ADAPT_i(PortableServer::POA_var myPoa): SALOME::GenericObj_i( myPoa )
-//~{
- //~myMgAdapt = new ::MG_ADAPT::MgAdapt();
-//~}
-
-//=============================================================================
-/*!
- * standard constructor
- */
-//=============================================================================
-//~MG_ADAPT_i::MG_ADAPT_i( CORBA::ORB_ptr orb,
- //~ADAPT::ADAPT_Gen_var engine )
-//~{
-
- //~_gen_i = engine;
- //~_orb = orb;
- //~myMgAdapt = new MgAdapt();
-//~}
-
-//=============================================================================
-/*!
- * standard destructor
- */
-//=============================================================================
-MG_ADAPT_i::~MG_ADAPT_i()
-{
-}
-void MG_ADAPT_i::setData( SMESH::MgAdaptHypothesisData& data)
-{
- ::MG_ADAPT::MgAdaptHypothesisData* baseData = new ::MG_ADAPT::MgAdaptHypothesisData();
- copyHypothesisDataToImpl(data, baseData);
- myMgAdapt->setData(baseData);
- delete baseData;
-}
-void MG_ADAPT_i::setMedFileIn(const char* str)
-{
- myMgAdapt->setMedFileIn(str);
-}
-char* MG_ADAPT_i::getMedFileIn()
-{
- return CORBA::string_dup(myMgAdapt->getMedFileIn().c_str());
-}
-void MG_ADAPT_i::setMedFileOut(const char* str)
-{
- myMgAdapt->setMedFileOut(str);
-}
-char* MG_ADAPT_i::getMedFileOut()
-{
- return CORBA::string_dup(myMgAdapt->getMedFileOut().c_str());
-}
-void MG_ADAPT_i::setMeshName(const char* str)
-{
- myMgAdapt->setMeshName(str);
-}
-char* MG_ADAPT_i::getMeshName()
-{
- return CORBA::string_dup(myMgAdapt->getMeshName().c_str());
-}
-void MG_ADAPT_i::setMeshNameOut(const char* str)
-{
- myMgAdapt->setMeshNameOut(str);
-}
-char* MG_ADAPT_i::getMeshNameOut()
-{
- return CORBA::string_dup(myMgAdapt->getMeshNameOut().c_str());
-}
-void MG_ADAPT_i::setMeshOutMed(bool mybool)
-{
- myMgAdapt->setMeshOutMed(mybool);
-}
-bool MG_ADAPT_i::getMeshOutMed()
-{
- return myMgAdapt->getMeshOutMed();
-}
-void MG_ADAPT_i::setPublish(bool mybool)
-{
- myMgAdapt->setPublish(mybool);
-}
-bool MG_ADAPT_i::getPublish()
-{
- return myMgAdapt->getPublish();
-}
-void MG_ADAPT_i::setSizeMapFieldName(const char* str)
-{
- myMgAdapt->setFieldName(str);
-}
-char* MG_ADAPT_i::getSizeMapFieldName()
-{
- return CORBA::string_dup(myMgAdapt->getFieldName().c_str());
-}
-void MG_ADAPT_i::setTimeStep(CORBA::Long t)
-{
- myMgAdapt->setTimeStep(t);
-}
-CORBA::Long MG_ADAPT_i::getTimeStep()
-{
- return myMgAdapt->getTimeStep();
-}
-void MG_ADAPT_i::setTimeStepRank(CORBA::Long t, CORBA::Long r)
-{
- myMgAdapt->setChosenTimeStepRank();
- myMgAdapt->setRankTimeStep(t, r);
-}
-CORBA::Long MG_ADAPT_i::getRank()
-{
- return myMgAdapt->getRank();
-}
-void MG_ADAPT_i::setTimeStepRankLast()
-{
- myMgAdapt->setTimeStepRankLast();
-}
-void MG_ADAPT_i::setNoTimeStep()
-{
- myMgAdapt->setNoTimeStep();
-}
-void MG_ADAPT_i::setLogFile(const char* str)
-{
- myMgAdapt->setLogFile(str);
-}
-char* MG_ADAPT_i::getLogFile()
-{
- return CORBA::string_dup(myMgAdapt->getLogFile().c_str());
-}
-
-void MG_ADAPT_i::setVerbosityLevel(CORBA::Long v)
-{
- myMgAdapt->setVerbosityLevel(v);
-}
-CORBA::Long MG_ADAPT_i::getVerbosityLevel()
-{
- return myMgAdapt->getVerbosityLevel();
-}
-void MG_ADAPT_i::setRemoveOnSuccess(bool mybool)
-{
- myMgAdapt->setRemoveOnSuccess(mybool);
-}
-bool MG_ADAPT_i::getRemoveOnSuccess()
-{
- myMgAdapt->getRemoveOnSuccess();
-}
-SMESH::MgAdaptHypothesisData* MG_ADAPT_i::getData()
-{
- SMESH::MgAdaptHypothesisData* result = new SMESH::MgAdaptHypothesisData();
- ::MG_ADAPT::MgAdaptHypothesisData* from = myMgAdapt->getData();
- copyHypothesisDataFromImpl(from, result);
- return result;
-}
-void MG_ADAPT_i::setUseLocalMap(bool mybool)
-{
- myMgAdapt->setUseLocalMap(mybool);
-}
-bool MG_ADAPT_i::getUseLocalMap()
-{
- return myMgAdapt->getUseLocalMap();
-}
-void MG_ADAPT_i::setUseBackgroundMap(bool mybool)
-{
- myMgAdapt->setUseBackgroundMap(mybool);
-}
-bool MG_ADAPT_i::getUseBackgroundMap()
-{
- return myMgAdapt->getUseBackgroundMap();
-}
-void MG_ADAPT_i::setUseConstantValue(bool mybool)
-{
- myMgAdapt->setUseConstantValue(mybool);
-}
-bool MG_ADAPT_i::getUseConstantValue()
-{
- return myMgAdapt->getUseConstantValue();
-}
-void MG_ADAPT_i::setConstantSize(double value)
-{
- myMgAdapt->setConstantValue(value);
-}
-double MG_ADAPT_i::getConstantSize()
-{
- return myMgAdapt->getConstantValue();
-}
-void MG_ADAPT_i::setSizeMapFile(const char* str)
-{
- myMgAdapt->setSizeMapFile(str);
-}
-char* MG_ADAPT_i::getSizeMapFile()
-{
- return CORBA::string_dup(myMgAdapt->getSizeMapFile().c_str());
-}
-void MG_ADAPT_i::setFromMedFile(bool mybool)
-{
- myMgAdapt->setFromMedFile(mybool);
-}
-bool MG_ADAPT_i::isFromMedFile()
-{
- return myMgAdapt->isFromMedFile();
-}
-
-void MG_ADAPT_i::setKeepWorkingFiles(bool mybool)
-{
- myMgAdapt->setKeepWorkingFiles(mybool);
-}
-bool MG_ADAPT_i::getKeepWorkingFiles()
-{
- return myMgAdapt->getKeepWorkingFiles();
-}
-
-//~void MG_ADAPT_i::setPrCORBA::LongLogInFile(bool);
-//~bool MG_ADAPT_i::getPrCORBA::LongLogInFile();
-
-void MG_ADAPT_i::setSizeMapType(const char* type)
-{
- setUseLocalMap(false);
- setUseBackgroundMap(false);
- setUseConstantValue(false);
-
- if (!strcmp("Local", type))
- setUseLocalMap(true);
- else if (!strcmp("Background", type))
- setUseBackgroundMap(true);
- else
- setUseConstantValue(true);
-}
-void MG_ADAPT_i::setWorkingDir(const char* dir)
-{
- myMgAdapt->setWorkingDir(dir);
-}
-char* MG_ADAPT_i::getWorkingDir()
-{
- return CORBA::string_dup(myMgAdapt->getWorkingDir().c_str());
-}
-bool MG_ADAPT_i::setAll()
-{
- return myMgAdapt->setAll();
-}
-char* MG_ADAPT_i::getCommandToRun()
-{
- return CORBA::string_dup(myMgAdapt->getCommandToRun().c_str());
-}
-
-void MG_ADAPT_i::compute()
-{
- errStr = "";
- try
- {
- myMgAdapt->compute(errStr);
- }
- catch (const std::exception& e)
- {
- std::ostringstream oss; oss << "Exception thrown on MG_ADAPT_i::compute invocation with error message \"" << errStr
- << "\" with exception message \"" << e.what() << "\"";
- THROW_SALOME_CORBA_EXCEPTION(oss.str().c_str(),SALOME::INTERNAL_ERROR);
- }
- if(myMgAdapt->getPublish())
- {
- SMESH_Gen_i* smeshGen_i = SMESH_Gen_i::GetSMESHGen();
- SMESH::DriverMED_ReadStatus theStatus;
- smeshGen_i->CreateMeshesFromMED(myMgAdapt->getMedFileOut().c_str(), theStatus);
- }
-}
-char* MG_ADAPT_i::getErrMsg()
-{
- return CORBA::string_dup(errStr.c_str());
-}
-char* MG_ADAPT_i::getFileName()
-{
- return CORBA::string_dup(myMgAdapt->getFileName().c_str());
-}
-char* MG_ADAPT_i::getExeName()
-{
- return CORBA::string_dup(myMgAdapt->getExeName().c_str());
-}
-void MG_ADAPT_i::copyMgAdaptHypothesisData( const SMESH::MgAdaptHypothesisData& data)
-{
- ::MG_ADAPT::MgAdaptHypothesisData* baseData = new ::MG_ADAPT::MgAdaptHypothesisData();
- copyHypothesisDataToImpl(data, baseData);
- myMgAdapt->copyMgAdaptHypothesisData(baseData);
- delete baseData;
-}
-
-//~void MG_ADAPT_i::checkDirPath(char*& str)
-//~{
- //~myMgAdapt->checkDirPath(str);
-//~}
-
-bool MG_ADAPT_i::hasOptionDefined( const char* optionName )
-{
- return myMgAdapt->hasOptionDefined(optionName);
-}
-void MG_ADAPT_i::setOptionValue(const char* optionName,
- const char* optionValue) throw (std::invalid_argument)
-{
- myMgAdapt->setOptionValue(optionName, optionValue);
-}
-
-char* MG_ADAPT_i::getOptionValue(const char* optionName,
- bool& isDefault) throw (std::invalid_argument)
-{
- return CORBA::string_dup(myMgAdapt->getOptionValue(optionName, &isDefault).c_str());
-}
-str_array* MG_ADAPT_i::getCustomOptionValuesStrVec()
-{
- SMESH::str_array_var result = new SMESH::str_array();
- std::vector <std::string> vals = myMgAdapt->getCustomOptionValuesStrVec();
- result->length(vals.size());
- for (int i = 0; i<vals.size(); i++) result[i] = CORBA::string_dup(vals[i].c_str());
- return result._retn();
-}
-str_array* MG_ADAPT_i::getOptionValuesStrVec()
-{
-
- SMESH::str_array_var result = new SMESH::str_array();
- std::vector <std::string> vals = myMgAdapt->getOptionValuesStrVec();
- result->length(vals.size());
- for (int i = 0; i<vals.size(); i++) result[i] = CORBA::string_dup(vals[i].c_str());
- return result._retn();
-}
-
-void MG_ADAPT_i::setPrintLogInFile(bool mybool)
-{
- myMgAdapt->setPrintLogInFile(mybool);
-}
-bool MG_ADAPT_i::getPrintLogInFile()
-{
- return myMgAdapt->getPrintLogInFile();
-}
-//~TOptionValues MG_ADAPT_i::getOptionValues() const;
-//~const TOptionValues& MG_ADAPT_i::getCustomOptionValues() const ;
-
-MG_ADAPT_OBJECT_i::MG_ADAPT_OBJECT_i(): SALOME::GenericObj_i( SMESH_Gen_i::GetPOA() )
-{
- medFileIn="";
- medFileOut="";
- medFileBackground="";
- publish = false;
- //~myMesh = CORBA::nil;
-}
-
-void MG_ADAPT_OBJECT_i::setMeshIn(SMESH::SMESH_Mesh_ptr theMesh )
-{
- myMesh = SMESH::SMESH_Mesh::_duplicate(theMesh);
-}
-void MG_ADAPT_OBJECT_i::setMEDFileIn(const char* f)
-{
- medFileIn = f;
-}
-void MG_ADAPT_OBJECT_i::setMEDFileOut(const char* f)
-{
- medFileOut = f;
-}
-void MG_ADAPT_OBJECT_i::setMEDFileBackground(const char* f)
-{
- medFileBackground = f;
-}
-void MG_ADAPT_OBJECT_i::AddHypothesis(SMESH::MG_ADAPT_ptr mg)
-{
-
- mg->setMedFileIn(medFileIn.c_str());
- mg->setMedFileOut(medFileOut.c_str());
- mg->setSizeMapFile(medFileBackground.c_str());
- hypothesis = SMESH::MG_ADAPT::_duplicate(mg);
-}
-CORBA::Long MG_ADAPT_OBJECT_i::Compute(bool publish)
-{
- if(!checkMeshFileIn()){
- std::cerr<< "\n Error : Please check the MED file input or mesh input. \n";
- return -1;
- }
- hypothesis->setPublish(publish);
- hypothesis->compute();
- return 0;
-}
-
-bool MG_ADAPT_OBJECT_i::checkMeshFileIn()
-{
- bool ret = false; // 1 ok , 0 nook
- if(!::MG_ADAPT::MgAdapt::isFileExist(medFileIn))
- {
- if(!myMesh->_is_nil())
- {
- bool toOverwrite = true;
- bool toFindOutDim = true;
- medFileIn = hypothesis->getFileName();
- medFileIn+= ".med";
- myMesh->ExportMED(medFileIn.c_str(), false, -1, toOverwrite, toFindOutDim);
- hypothesis->setMedFileIn(medFileIn.c_str());
- ret = true;
- }
- }
- else
- ret = true;
-
- return ret;
-}
+++ /dev/null
-#ifndef MG_ADAPT_I_HXX
-#define MG_ADAPT_I_HXX
-
-#include "MG_ADAPT.hxx"
-#include "SMESH.hxx"
-#include <SALOMEconfig.h>
-//~#include CORBA_SERVER_HEADER(ADAPT_Gen)
-#include CORBA_SERVER_HEADER(MG_ADAPT)
-
-#include "SALOME_GenericObj_i.hh"
-#include "SALOME_Component_i.hxx"
-#include "SALOME_NamingService.hxx"
-#include "Utils_CorbaException.hxx"
-#include <vector>
-#include <algorithm>
-#include <iterator>
-#include <string>
-
-//~struct MgAdaptHypothesisData;
-//~static void copyHypothesisDataToImpl(SMESH::MgAdaptHypothesisData& from, MG_ADAPT::MgAdaptHypothesisData* to);
-//~static void copyHypothesisDataFromImpl(MG_ADAPT::MgAdaptHypothesisData* from, SMESH::MgAdaptHypothesisData& to);
-//~class MgAdapt;
-namespace SMESH
-{
-
-class SMESH_I_EXPORT MG_ADAPT_i :
- public virtual SALOME::GenericObj_i,
- public virtual POA_SMESH::MG_ADAPT
-{
-public:
- //~MG_ADAPT_i( CORBA::ORB_ptr orb, ADAPT::ADAPT_Gen_var gen_i );
- //~static SMESH::MG_ADAPT_ptr CreateMG_ADAPT();
- //~MG_ADAPT_i(PortableServer::POA_var poa);
- MG_ADAPT_i();
- virtual ~MG_ADAPT_i();
- //~void setData( SMESH::MgAdaptHypothesisData* data);
- void setData( SMESH::MgAdaptHypothesisData& data);
-
- void setMedFileIn(const char* str);
- char* getMedFileIn();
-
- void setMedFileOut(const char* str);
- char* getMedFileOut();
-
- void setMeshName(const char* str);
- char* getMeshName();
-
- void setMeshNameOut(const char* str);
- char* getMeshNameOut();
-
- void setMeshOutMed(bool mybool);
- bool getMeshOutMed();
-
- void setPublish(bool mybool);
- bool getPublish();
-
- void setSizeMapFieldName(const char* str);
- char* getSizeMapFieldName();
-
- void setTimeStep(CORBA::Long t);
- CORBA::Long getTimeStep() ;
-
- void setTimeStepRank(CORBA::Long t, CORBA::Long r );
- CORBA::Long getRank();
-
- void setTimeStepRankLast();
- void setNoTimeStep();
-
- void setLogFile(const char* str);
- char* getLogFile();
-
- void setVerbosityLevel(CORBA::Long v);
- CORBA::Long getVerbosityLevel();
-
- void setRemoveOnSuccess(bool mybool);
- bool getRemoveOnSuccess();
-
- SMESH::MgAdaptHypothesisData* getData() ;
- void setSizeMapType(const char* type);
- void setUseLocalMap(bool mybool);
- bool getUseLocalMap();
-
- void setUseBackgroundMap(bool mybool);
- bool getUseBackgroundMap();
-
- void setUseConstantValue(bool mybool);
- bool getUseConstantValue();
-
- void setConstantSize(double value);
- double getConstantSize();
-
- void setSizeMapFile(const char* str);
- char* getSizeMapFile();
-
- void setFromMedFile(bool mybool);
- bool isFromMedFile();
-
- void setKeepWorkingFiles(bool mybool);
- bool getKeepWorkingFiles();
-
- //~void setPrCORBA::LongLogInFile(bool);
- //~bool getPrCORBA::LongLogInFile();
-
- void setWorkingDir(const char* str);
- char* getWorkingDir() ;
-
- void setPrintLogInFile(bool mybool);
- bool getPrintLogInFile();
-
- bool setAll();
- char* getCommandToRun() ;
- void compute();
- char* getFileName();
- char* getExeName();
- void copyMgAdaptHypothesisData( const SMESH::MgAdaptHypothesisData& data ) ;
- //~void copyMgAdaptHypothesisData( const SMESH::MgAdaptHypothesisData& data ) {
- //~copyMgAdaptHypothesisData(&data);
- //~}
-
- //~void checkDirPath(char*& str);
-
- bool hasOptionDefined( const char* optionName ) ;
- void setOptionValue(const char* optionName,
- const char* optionValue) throw (std::invalid_argument);
- char* getOptionValue(const char* optionName,
- bool& isDefault) throw (std::invalid_argument);
- str_array* getCustomOptionValuesStrVec() ;
- str_array* getOptionValuesStrVec() ;
- void copyHypothesisDataFromImpl(const ::MG_ADAPT::MgAdaptHypothesisData* from, SMESH::MgAdaptHypothesisData* to) const;
- void copyHypothesisDataToImpl(const SMESH::MgAdaptHypothesisData& from, ::MG_ADAPT::MgAdaptHypothesisData* to) const;
- //~TOptionValues getOptionValues() const;
- //~const TOptionValues& getCustomOptionValues() const ;
- char* getErrMsg();
-private:
- ::MG_ADAPT::MgAdapt* myMgAdapt;
- std::string errStr;
- //~CORBA::ORB_ptr _orb;
- //~ADAPT::ADAPT_Gen_var _gen_i;
-
-};
-
-class SMESH_I_EXPORT MG_ADAPT_OBJECT_i:
- public virtual SALOME::GenericObj_i,
- public virtual POA_SMESH::MG_ADAPT_OBJECT {
-public :
- MG_ADAPT_OBJECT_i();
- void setMeshIn( SMESH::SMESH_Mesh_ptr theMesh );
- void setMEDFileIn(const char* f);
- void setMEDFileOut(const char* f);
- void setMEDFileBackground(const char* f);
- void AddHypothesis(SMESH::MG_ADAPT_ptr);
- CORBA::Long Compute(bool Publish);
-private:
-std::string medFileIn, medFileOut, medFileBackground;
-bool checkMeshFileIn();
-bool publish;
-SMESH::SMESH_Mesh_ptr myMesh;
-SMESH::MG_ADAPT_ptr hypothesis;
-};
-
-}
-#endif // MG_ADAPT_I_HXX
int CountInPyDump(const TCollection_AsciiString& text);
- SMESH::MG_ADAPT_ptr CreateMG_ADAPT();
- SMESH::MG_ADAPT_ptr CreateAdaptationHypothesis();
- SMESH::MG_ADAPT_OBJECT_ptr Adaptation( const char* adaptationType);
-
// *****************************************
// Internal methods
// *****************************************