From: vsr Date: Mon, 22 Mar 2021 07:14:46 +0000 (+0300) Subject: Revert wrongly integrated merge X-Git-Tag: V9_7_0a1~17 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=13e344b8720248d920a39505004bb9a889a0b2d7;p=modules%2Fsmesh.git Revert wrongly integrated merge This reverts commit a463e4643121ceea8a13c2fad631e0ef0ac8a824, reversing changes made to 1c356932084f5e9c4eb445becf40da1485a326a4. --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 242782dc4..feff178cd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -65,7 +65,7 @@ SET(BUILD_SHARED_LIBS TRUE) # ============ 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) @@ -146,7 +146,7 @@ IF(SALOME_BUILD_GUI) 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: @@ -195,15 +195,6 @@ IF(NOT WITH_SHAPER_STUDY AND SALOME_BUILD_TESTS) 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 ## @@ -211,7 +202,7 @@ ENDIF(EXISTS ${MEDCOUPLING_ROOT_DIR}) # 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) @@ -237,7 +228,7 @@ IF(WIN32) 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) @@ -256,32 +247,32 @@ SET(SALOME_INSTALL_BINS "${SALOME_INSTALL_BINS}" CACHE PATH "Install path: SALOM 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) @@ -289,23 +280,13 @@ MARK_AS_ADVANCED(SALOME_INSTALL_PYTHON SALOME_INSTALL_PYTHON_SHARED) 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) @@ -332,7 +313,7 @@ INCLUDE(CMakePackageConfigHelpers) # 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 @@ -342,7 +323,7 @@ SET(_${PROJECT_NAME}_exposed_targets IF(SALOME_SMESH_ENABLE_MEFISTO) LIST(APPEND _${PROJECT_NAME}_exposed_targets - MEFISTO2D) + MEFISTO2D) ENDIF(SALOME_SMESH_ENABLE_MEFISTO) IF(SALOME_BUILD_GUI) @@ -352,7 +333,7 @@ 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) @@ -369,7 +350,7 @@ SET(GEOM_ROOT_DIR "${GEOM_ROOT_DIR}") 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 SalomeConfig.cmake: @@ -392,5 +373,5 @@ INSTALL(FILES 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) diff --git a/doc/salome/examples/CMakeLists.txt b/doc/salome/examples/CMakeLists.txt index 78060692c..52f2cf71f 100644 --- a/doc/salome/examples/CMakeLists.txt +++ b/doc/salome/examples/CMakeLists.txt @@ -47,4 +47,3 @@ INSTALL(FILES CTestTestfileInstall.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}) diff --git a/doc/salome/examples/MGAdaptTests_without_session.py b/doc/salome/examples/MGAdaptTests_without_session.py deleted file mode 100755 index 4855345c1..000000000 --- a/doc/salome/examples/MGAdaptTests_without_session.py +++ /dev/null @@ -1,472 +0,0 @@ -#!/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) diff --git a/doc/salome/examples/MGAdapt_med_files/test_01.med b/doc/salome/examples/MGAdapt_med_files/test_01.med deleted file mode 100644 index 71664bb31..000000000 Binary files a/doc/salome/examples/MGAdapt_med_files/test_01.med and /dev/null differ diff --git a/doc/salome/examples/MGAdapt_med_files/test_02.med b/doc/salome/examples/MGAdapt_med_files/test_02.med deleted file mode 100644 index 1b22c43d8..000000000 Binary files a/doc/salome/examples/MGAdapt_med_files/test_02.med and /dev/null differ diff --git a/doc/salome/examples/MGAdapt_med_files/test_02_bg.med b/doc/salome/examples/MGAdapt_med_files/test_02_bg.med deleted file mode 100644 index 15f1b868b..000000000 Binary files a/doc/salome/examples/MGAdapt_med_files/test_02_bg.med and /dev/null differ diff --git a/doc/salome/examples/MGAdapt_med_files/test_04.med b/doc/salome/examples/MGAdapt_med_files/test_04.med deleted file mode 100644 index 81c116fa5..000000000 Binary files a/doc/salome/examples/MGAdapt_med_files/test_04.med and /dev/null differ diff --git a/doc/salome/examples/MGAdapt_med_files/test_06.med b/doc/salome/examples/MGAdapt_med_files/test_06.med deleted file mode 100644 index 4c5f24df4..000000000 Binary files a/doc/salome/examples/MGAdapt_med_files/test_06.med and /dev/null differ diff --git a/doc/salome/examples/MGAdapt_med_files/test_07.med b/doc/salome/examples/MGAdapt_med_files/test_07.med deleted file mode 100644 index e100452ba..000000000 Binary files a/doc/salome/examples/MGAdapt_med_files/test_07.med and /dev/null differ diff --git a/doc/salome/examples/MGAdapt_med_files/test_08.med b/doc/salome/examples/MGAdapt_med_files/test_08.med deleted file mode 100644 index e23077e8e..000000000 Binary files a/doc/salome/examples/MGAdapt_med_files/test_08.med and /dev/null differ diff --git a/doc/salome/examples/MGAdapt_med_files/test_08_bg.med b/doc/salome/examples/MGAdapt_med_files/test_08_bg.med deleted file mode 100644 index c28c32dab..000000000 Binary files a/doc/salome/examples/MGAdapt_med_files/test_08_bg.med and /dev/null differ diff --git a/doc/salome/examples/MGAdapt_med_files/test_10.med b/doc/salome/examples/MGAdapt_med_files/test_10.med deleted file mode 100644 index 221291f4e..000000000 Binary files a/doc/salome/examples/MGAdapt_med_files/test_10.med and /dev/null differ diff --git a/doc/salome/examples/MGAdapt_med_files/test_11.med b/doc/salome/examples/MGAdapt_med_files/test_11.med deleted file mode 100644 index 7d8b6cff4..000000000 Binary files a/doc/salome/examples/MGAdapt_med_files/test_11.med and /dev/null differ diff --git a/doc/salome/examples/MGAdapt_med_files/test_13.med b/doc/salome/examples/MGAdapt_med_files/test_13.med deleted file mode 100644 index 32a8af19f..000000000 Binary files a/doc/salome/examples/MGAdapt_med_files/test_13.med and /dev/null differ diff --git a/doc/salome/examples/tests.set b/doc/salome/examples/tests.set index 02ffd1e76..89f21a798 100644 --- a/doc/salome/examples/tests.set +++ b/doc/salome/examples/tests.set @@ -45,7 +45,6 @@ SET(BAD_TESTS radial_prism_3d_algo.py test_smeshplugin_mg_tetra_parallele.py test_smeshplugins.py - MGAdaptTests_without_session.py ) SET(GOOD_TESTS diff --git a/doc/salome/gui/SMESH/images/adaptation_01.png b/doc/salome/gui/SMESH/images/adaptation_01.png deleted file mode 100644 index 67cb8b64e..000000000 Binary files a/doc/salome/gui/SMESH/images/adaptation_01.png and /dev/null differ diff --git a/doc/salome/gui/SMESH/images/adaptation_02.png b/doc/salome/gui/SMESH/images/adaptation_02.png deleted file mode 100644 index 1f3f9edcc..000000000 Binary files a/doc/salome/gui/SMESH/images/adaptation_02.png and /dev/null differ diff --git a/doc/salome/gui/SMESH/input/adaptation.rst b/doc/salome/gui/SMESH/input/adaptation.rst deleted file mode 100644 index 624851d75..000000000 --- a/doc/salome/gui/SMESH/input/adaptation.rst +++ /dev/null @@ -1,38 +0,0 @@ -.. _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`. diff --git a/doc/salome/gui/SMESH/input/index.rst b/doc/salome/gui/SMESH/input/index.rst index fcd97b7b8..c6a2ade37 100644 --- a/doc/salome/gui/SMESH/input/index.rst +++ b/doc/salome/gui/SMESH/input/index.rst @@ -14,16 +14,15 @@ Introduction to Mesh module * :ref:`creating meshes ` 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 `, especially :ref:`extrusion ` and :ref:`revolution `; - * by generation of the 3D mesh from the 2D mesh not based on the geometry (:ref:`imported ` for example); - + * by generation of the 3D mesh from the 2D mesh not based on the geometry (:ref:`imported ` for example); + * :ref:`importing and exporting meshes ` in various formats; -* :ref:`modifying meshes ` with a vast array of dedicated operations; +* :ref:`modifying meshes ` with a vast array of dedicated operations; * :ref:`creating groups ` of mesh elements; * filtering mesh entities (nodes or elements) using :ref:`Filters ` functionality for :ref:`creating groups ` and applying :ref:`mesh modifications `; * :ref:`viewing meshes ` in the VTK viewer and :ref:`getting info ` on mesh and its sub-objects; -* :ref:`remeshing meshes `; * applying to meshes :ref:`Quality Controls `, allowing to highlight important elements; * taking various :ref:`measurements ` of the mesh objects. @@ -36,7 +35,7 @@ It is possible to use the variables predefined in :ref:`Salome notebook ` (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. @@ -95,7 +95,6 @@ the following links: tui_transforming_meshes tui_viewing_meshes tui_quality_controls - tui_adaptation tui_measurements tui_work_on_objects_from_gui tui_notebook_smesh diff --git a/doc/salome/gui/SMESH/input/tui_adaptation.rst b/doc/salome/gui/SMESH/input/tui_adaptation.rst deleted file mode 100644 index 7db15c66a..000000000 --- a/doc/salome/gui/SMESH/input/tui_adaptation.rst +++ /dev/null @@ -1,18 +0,0 @@ -.. _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`. diff --git a/idl/CMakeLists.txt b/idl/CMakeLists.txt index 6387eb741..7ab17aef9 100644 --- a/idl/CMakeLists.txt +++ b/idl/CMakeLists.txt @@ -36,7 +36,6 @@ SET(SalomeIDLSMESH_IDLSOURCES SMESH_Pattern.idl SMESH_MeshEditor.idl SMESH_Measurements.idl - MG_ADAPT.idl ) SET(_idl_include_dirs diff --git a/idl/MG_ADAPT.idl b/idl/MG_ADAPT.idl deleted file mode 100644 index 7608ab67a..000000000 --- a/idl/MG_ADAPT.idl +++ /dev/null @@ -1,152 +0,0 @@ -// 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 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 diff --git a/idl/SMESH_Gen.idl b/idl/SMESH_Gen.idl index 52295a43b..a7e4c5094 100644 --- a/idl/SMESH_Gen.idl +++ b/idl/SMESH_Gen.idl @@ -43,8 +43,6 @@ module SMESH interface FilterManager; interface SMESH_Pattern; interface Measurements; - interface MG_ADAPT; - interface MG_ADAPT_OBJECT; /*! * Tags definition @@ -138,6 +136,7 @@ module SMESH SMESH_Pattern GetPattern(); Measurements CreateMeasurements(); + /*! Set the current mode */ @@ -585,10 +584,7 @@ module SMESH in GEOM::GEOM_Object theGeom, in double theTolerance ); - - MG_ADAPT CreateMG_ADAPT(); - MG_ADAPT_OBJECT Adaptation(in string adaptType); - MG_ADAPT CreateAdaptationHypothesis(); + }; }; diff --git a/resources/CMakeLists.txt b/resources/CMakeLists.txt index 3d9bae667..05688ce81 100644 --- a/resources/CMakeLists.txt +++ b/resources/CMakeLists.txt @@ -22,7 +22,6 @@ SET(SMESH_RESOURCES_FILES ModuleMesh.png - adapt_mg_adapt.png advanced_mesh_info.png bare_border_face.png bare_border_volume.png diff --git a/resources/SalomeApp.xml.in b/resources/SalomeApp.xml.in index c11851f4f..c69c4b578 100644 --- a/resources/SalomeApp.xml.in +++ b/resources/SalomeApp.xml.in @@ -98,11 +98,6 @@ - - - - -
@@ -111,9 +106,6 @@ - - - diff --git a/resources/adapt_mg_adapt.png b/resources/adapt_mg_adapt.png deleted file mode 100755 index f2c1a93eb..000000000 Binary files a/resources/adapt_mg_adapt.png and /dev/null differ diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 69ec0d051..6e74f5b56 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -51,7 +51,7 @@ ENDIF(SALOME_SMESH_ENABLE_MEFISTO) # CGNS ## IF(SALOME_SMESH_USE_CGNS) - SET(SUBDIRS_CGNS + SET(SUBDIRS_CGNS DriverCGNS ) ENDIF(SALOME_SMESH_USE_CGNS) @@ -60,9 +60,9 @@ 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 diff --git a/src/SMESH/CMakeLists.txt b/src/SMESH/CMakeLists.txt index 55b8da584..129ec5c41 100644 --- a/src/SMESH/CMakeLists.txt +++ b/src/SMESH/CMakeLists.txt @@ -38,7 +38,6 @@ INCLUDE_DIRECTORIES( ${PROJECT_SOURCE_DIR}/src/SMDS ${PROJECT_SOURCE_DIR}/src/SMESHDS ${PROJECT_SOURCE_DIR}/src/SMESHUtils - ${MEDCOUPLING_INCLUDE_DIRS} ) # additional preprocessor / compiler flags @@ -68,7 +67,6 @@ SET(_link_LIBRARIES MeshDriverUNV MeshDriverGMF ${DriverCGNS_LIB} - ${MEDCoupling_medloader} ) # --- headers --- @@ -88,7 +86,6 @@ SET(SMESHimpl_HEADERS SMESH_MesherHelper.hxx SMESH_ProxyMesh.hxx SMESH_SMESH.hxx - MG_ADAPT.hxx ) # --- sources --- @@ -107,7 +104,6 @@ SET(SMESHimpl_SOURCES SMESH_HypoFilter.cxx SMESH_ProxyMesh.cxx SMESH_MesherHelper.cxx - MG_ADAPT.cxx ) # --- rules --- diff --git a/src/SMESH/MG_ADAPT.cxx b/src/SMESH/MG_ADAPT.cxx deleted file mode 100644 index f0accd50d..000000000 --- a/src/SMESH/MG_ADAPT.cxx +++ /dev/null @@ -1,1575 +0,0 @@ -// 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 -#include -#include "Utils_CorbaException.hxx" - -#include -#include -#include -#include -#include -#include -#include - -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 MgAdapt::getOptionValuesStrVec() const -{ - std::vector 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 MgAdapt::getCustomOptionValuesStrVec() const -{ - std::vector 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 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 pipe(popen(cmd, "r"), pclose ); - if(!pipe) - { - throw std::runtime_error("popen() failed!"); - } - while(fgets(buffer.data(), buffer.size(), pipe.get()) !=nullptr ) - { - logStream<::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 -#elif !defined(__APPLE__) -#include -#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 MgAdapt::getListFieldsNames(std::string fileIn) -{ - MEDCoupling::MCAuto mfd = MEDCoupling::MEDFileData::New(fileIn); - std::vector 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 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 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 listFieldsNames = getListFieldsNames(fileIn); - std::size_t jaux(listFieldsNames.size()); - for(std::size_t j=0;j mfd = MEDCoupling::MEDFileData::New(fileIn); - MEDCoupling::MCAuto fts( mfd->getFields()->getFieldWithName(fieldName) ); - std::vector timevalue; - std::vector< std::pair > timesteprank = fts->getTimeSteps(timevalue); - std::size_t jaux(timesteprank.size()); - for(std::size_t j=0;j fieldFileNames; - MEDCoupling::MeshFormatWriter writer; - MEDCoupling::MCAuto 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 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 fts( mfd->getFields()->getFieldWithName(fieldName) ); - MEDCoupling::MCAuto f = fts->getTimeStep(timeStep, rank); - MEDCoupling::MCAuto tmFts = MEDCoupling::MEDFileFieldMultiTS::New(); - tmFts->pushBackTimeStep(f); - - fields->pushField(tmFts); - - writer.setFieldFileNames( fieldFileNames); - } - else - { - MEDCoupling::MCAuto mesh = fileMesh->getMeshAtLevel(1); // nodes mesh - MEDCoupling::MCAuto 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 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 > grpFams = fileMesh->getGroupInfo(); - std::map >::iterator g2ff = grpFams.begin(); - - for ( ; g2ff != grpFams.end(); ++g2ff ) - { - std::string groupName = g2ff->first; - std::vector 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 grpFams = fileMesh->getFamilyInfo(); - std::map::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::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< > info; - std::vector ::const_iterator grpFams = groupVec.begin(); - - for (; grpFams!=groupVec.end(); ++grpFams) - { - info.insert(std::pair > (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& fieldFileNames, const std::string& meshFormatsizeMapFile) const -{ - MEDCoupling::MCAuto tmpMfd = MEDCoupling::MEDFileData::New(sizeMapFile); - MEDCoupling::MEDFileFields* tmpFields = tmpMfd->getFields(); - MEDCoupling::MCAuto fts( tmpFields->getFieldWithName(fieldName) ); - MEDCoupling::MCAuto fts1 = MEDCoupling::DynamicCastSafe(fts); - MEDCoupling::MCAuto f = fts1->getTimeStep(timeStep, rank); - MEDCoupling::MCAuto tmFts = MEDCoupling::MEDFileFieldMultiTS::New(); - tmFts->pushBackTimeStep(f); - - MEDCoupling::MCAuto 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); - } -} diff --git a/src/SMESH/MG_ADAPT.hxx b/src/SMESH/MG_ADAPT.hxx deleted file mode 100644 index ba128314b..000000000 --- a/src/SMESH/MG_ADAPT.hxx +++ /dev/null @@ -1,340 +0,0 @@ -// 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 -# include -#include -#include -#include -#include - -#include "MCAuto.hxx" -#include "MCType.hxx" -#include "MEDFileMesh.hxx" - -#include -// SMESH includes - -//~#include -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 - ToComment( const T &anything ) { - _s << anything ; - this->std::string::operator=( _s.str() ); - } - - template - 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 getCustomOptionValuesStrVec() const; - std::vector 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 _famListId; - std::vector _famNames; - group(std::string name, std::vector famListId, std::vector famNames):_name(name) - { - std::vector::iterator it = famListId.begin(); - for (; it!=famListId.end(); ++it) - _famListId.push_back(*it); - - std::vector::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 _myErrorMessages; - Status _myStatus; - std::string meshFormatOutputMesh; - std::vector< std::string> solFormatOutput; - std::vector groupVec; - std::vector 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& 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 getListFieldsNames(std::string fileIn) ; - void checkDimensionOptionAdaptation() ; - void checkFieldName(std::string fileIn) ; - void checkTimeStepRank(std::string fileIn) ; - -}; - -} - -#endif // MG_ADAPT_HXX diff --git a/src/SMESHGUI/CMakeLists.txt b/src/SMESHGUI/CMakeLists.txt index 4f50dbc8e..af116da9f 100644 --- a/src/SMESHGUI/CMakeLists.txt +++ b/src/SMESHGUI/CMakeLists.txt @@ -45,7 +45,6 @@ INCLUDE_DIRECTORIES( ${PROJECT_SOURCE_DIR}/src/SMESH_I ${PROJECT_BINARY_DIR} ${PROJECT_BINARY_DIR}/idl - ${MEDCOUPLING_INCLUDE_DIRS} ) # additional preprocessor / compiler flags @@ -76,7 +75,6 @@ SET(_link_LIBRARIES SMESHControls SMESHObject SMESHEngine - ${MEDCoupling_medloader} ) # --- headers --- @@ -149,9 +147,6 @@ SET(_moc_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 @@ -174,7 +169,6 @@ SET(_other_HEADERS SMESHGUI_FileValidator.h SMESHGUI_SelectionProxy.h SMESH_SMESHGUI.hxx - #~MG_ADAPT.hxx # to replace in ../ADAPT/ ) # header files / to install @@ -268,10 +262,6 @@ SET(_other_SOURCES 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 @@ -285,7 +275,7 @@ SET(_ts_RESOURCES SMESH_msg_en.ts SMESH_msg_fr.ts SMESH_msg_ja.ts -) +) # --- rules --- diff --git a/src/SMESHGUI/MG_ADAPTGUI.cxx b/src/SMESHGUI/MG_ADAPTGUI.cxx deleted file mode 100644 index b8ee3c879..000000000 --- a/src/SMESHGUI/MG_ADAPTGUI.cxx +++ /dev/null @@ -1,1365 +0,0 @@ -// 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 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -// SALOME KERNEL includes -#include -#include -#include -#include -#include "SalomeApp_Tools.h" -#include -#include -#include - -#include - -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 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::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 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::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( meshInGroup->button( theMode ) ); - QRadioButton* bButton = qobject_cast( 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 * 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::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 (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::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 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 mfd = MEDCoupling::MEDFileData::New(aFile.toStdString()); - meshdim = mfd->getMeshes()->getMeshAtPos(0)->getMeshDimension() ; -// std::cout << "meshdim:" << meshdim << std::endl; - - break ; - } - - return nomMaillage; -} - -// ======================================================================= -std::map GetListeChamps(QString aFile, bool errorMessage) -// ======================================================================= -{ -// Il faut voir si plusieurs maillages - - std::map ListeChamp ; - - while ( true ) - { - MEDCoupling::MCAuto mfd = MEDCoupling::MEDFileData::New(aFile.toStdString()); - std::vector 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 (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); -} diff --git a/src/SMESHGUI/MG_ADAPTGUI.hxx b/src/SMESHGUI/MG_ADAPTGUI.hxx deleted file mode 100644 index 5121d1102..000000000 --- a/src/SMESHGUI/MG_ADAPTGUI.hxx +++ /dev/null @@ -1,329 +0,0 @@ -// 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 -// -// SMESH SMESHGUI : GUI for the adaptation in the SMESH component -// File : MG_ADAPTGUI.hxx -// -#ifndef MG_ADAPTGUI_HXX -#define MG_ADAPTGUI_HXX - -#include -// SMESH includes - -// Qt includes -#include -#include -#include - -#include "LightApp_DataOwner.h" -#include "SalomeApp_Application.h" -#include -#include -#include "SalomeApp_Module.h" -#include "SalomeApp_Study.h" -#include -#include - - -// model - - -//~#include "MG_ADAPT.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 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; - -// IDL includes -#include - -class SVTK_ViewWindow; -class SVTK_Selector; -class SMESHGUI_MgAdaptDlg; -class SMESHGUI_MgAdaptArguments; -class SMESHGUI_SpinBox; -class MgAdaptAdvWidgetTreeWidget; -class MgAdaptAdvWidget; -//~class MgAdapt; -class QHeaderView; -class QFileDialog; - - -std::map GetListeChamps(QString aFile, bool errorMessage = true); -QString lireNomMaillage(QString aFile, med_int& meshDim); - -std::string remove_extension(const std::string& filename); - -enum ADAPTATION_MODE{ - SURFACE, - VOLUME, - BOTH -}; -//================================================================================= -// class : SMESHGUI_MgAdaptDlg -// purpose : -//================================================================================= -class SMESHGUI_MgAdaptDlg : public QDialog -{ - Q_OBJECT; -public: - //! Property type - enum Mode { Arguments, AdvancedOptions}; - SMESHGUI_MgAdaptDlg( SalomeApp_Module*, SMESH::MG_ADAPT_ptr, QWidget* parent= 0,bool isCreation = true ); - ~SMESHGUI_MgAdaptDlg(); - - void buildDlg(); - void reject(); - bool checkParams(QString& msg) ; - //~void setModel(MgAdapt*); - SMESH::MG_ADAPT_ptr getModel() const; - -public slots: - -protected slots: - virtual bool PushOnApply(); - -private slots: - virtual void PushOnHelp(); - virtual void PushOnOK(); - -protected : - - SMESHGUI_MgAdaptArguments* myArgs; - MgAdaptAdvWidget* myAdvOpt; - bool readParamsFromHypo( ) const ; - bool readParamsFromWidgets( ) ; - bool storeParamsToHypo( const SMESH::MgAdaptHypothesisData & ) const; - -private: - - SalomeApp_Module* mySMESHGUI; /* Current SMESHGUI object */ - QTabWidget* myTabWidget; - - - SMESH::MgAdaptHypothesisData* myData; - SMESH::MG_ADAPT_ptr model; - -}; - -class SMESHGUI_MgAdaptArguments : public QWidget -{ - Q_OBJECT; -public: - //! Property type - enum Mode { Mesh, Browser}; - enum SIZEMAP { Local, Background, Constant}; - SMESHGUI_MgAdaptArguments( QWidget* parent); - ~SMESHGUI_MgAdaptArguments(); - void setMode( const Mode, const SIZEMAP ); - - QString* myFileInDir; - QString* myFileOutDir; - QString* myFileSizeMapDir; - QGroupBox* aMeshIn ; - QRadioButton* aMedfile; - QRadioButton* aBrowser ; - QLineEdit* aBrowserObject; - QPushButton* selectMedFilebutton ; - QSpacerItem* hspacer; - QLineEdit* selectMedFileLineEdit ; - QButtonGroup* meshInGroup ; - QGridLayout* meshIn ; - - QGroupBox* aMeshOut ; - QLabel* meshName; - QLineEdit* meshNameLineEdit; - QSpacerItem* secondHspacer; - QCheckBox* medFileCheckBox; - QPushButton* selectOutMedFilebutton; - QLineEdit* selectOutMedFileLineEdit; - QSpacerItem* thirdHspacer; - QCheckBox* publishOut; - QGridLayout* meshOut ; - - QGroupBox* sizeMapDefinition ; - QRadioButton* localButton; - QRadioButton* backgroundButton ; - QRadioButton* constantButton ; - QLabel* medFileBackground; - QPushButton* selectMedFileBackgroundbutton; - QLineEdit* selectMedFileBackgroundLineEdit; - QLabel* valueLabel; - QDoubleSpinBox* dvalue; - QButtonGroup* sizeMapDefGroup ; - QGridLayout* sizeMapDefGroupLayout; - - - QGroupBox* sizeMapField; - QLabel* fieldName; - QComboBox* fieldNameCmb; - QRadioButton* noTimeStep; - QRadioButton* lastTimeStep ; - QRadioButton* chosenTimeStep; - QLabel* timeStepLabel; - QSpinBox* timeStep; - QLabel* rankLabel; - QSpinBox* rankSpinBox; - QButtonGroup* timeStepGroup; - QGridLayout* sizeMapFieldGroupLayout; - -signals: - void updateSelection(); - void toExportMED(const char *); - void meshDimSignal(ADAPTATION_MODE aMode); -public slots: - -protected slots: - -private slots: - void modeChanged( int); - void sizeMapDefChanged(int); - void timeStepGroupChanged(int timeStepType, bool disableOther = false, int vmax = 0); - void onSelectMedFilebuttonClicked(); - void clear(); - void onMedFileCheckBox(int); - void onPublishOut(int); - void onSelectOutMedFilebutton(); - void onSelectMedFileBackgroundbutton(); - void onLocalSelected(QString); - void onNoTimeStep(bool disableOther = false); - void onLastTimeStep(bool disableOther = false); - void onChosenTimeStep(bool disableOther = false, int vmax = 0); - void visibleTimeStepRankLabel(bool visible); - void valueAdaptation (); - -private: - - QString getMedFileName(bool avertir); - LightApp_SelectionMgr* selMgr ; - med_int meshDim; - med_int meshDimBG; - std::map myFieldList; - -}; -enum { - OPTION_ID_COLUMN = 0, - OPTION_TYPE_COLUMN, - OPTION_NAME_COLUMN = 0, - OPTION_VALUE_COLUMN, - NB_COLUMNS, -}; - -////////////////////////////////////////// -// MgAdaptAdvWidget -////////////////////////////////////////// -class MgAdaptAdvWidget : public QWidget -{ - Q_OBJECT - -public: - MgAdaptAdvWidget( QWidget* = 0, std::vector * = nullptr, Qt::WindowFlags = 0 ); - ~MgAdaptAdvWidget(); - std::vector < std::string > * myOptions; - QGridLayout *gridLayout_4; - MgAdaptAdvWidgetTreeWidget *myOptionTable; - QPushButton *addBtn; - QSpacerItem *horizontalSpacer; - QGroupBox *logGroupBox; - QGridLayout *gridLayout_2; - QGridLayout *gridLayout; - QLabel *workingDirectoryLabel; - QLineEdit *workingDirectoryLineEdit; - QPushButton *workingDirectoryPushButton; - QLabel *verboseLevelLabel; - QSpinBox *verboseLevelSpin; - QHBoxLayout *horizontalLayout; - QCheckBox *logInFileCheck; - QCheckBox *removeLogOnSuccessCheck; - QCheckBox *keepWorkingFilesCheck; - - void AddOption( const char* name_value_type, bool isCustom = false ); - void GetOptionAndValue( QTreeWidgetItem * tblRow, QString& option, QString& value, bool& dflt ); - void setupWidget(); - -public slots: - void onAddOption(); - void itemChanged(QTreeWidgetItem * tblRow, int column); - void onMeshDimChanged(ADAPTATION_MODE aMode); -private slots: - void _onWorkingDirectoryPushButton(); -private: - void setOptionValue(QString& option, QString& value); - std::map optionTreeWidgetItem; - - QTreeWidgetItem* getNewQTreeWidgetItem(QTreeWidget* table, const char* option, QString& name, bool isCustom); - -}; - -enum { EDITABLE_ROLE = Qt::UserRole + 1, PARAM_NAME, - NAME_COL = 0, VALUE_COL - }; - -class ItemDelegate: public QItemDelegate -{ -public: - - ItemDelegate(QObject* parent=0): QItemDelegate(parent) {} - QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem &o, const QModelIndex &index) const; -}; - -class MgAdaptAdvWidgetTreeWidget : public QTreeWidget -{ - Q_OBJECT -public: - MgAdaptAdvWidgetTreeWidget( QWidget* ); - -protected: - QModelIndex moveCursor( CursorAction, Qt::KeyboardModifiers ); - void keyPressEvent( QKeyEvent* ); -}; - -#endif // MG_ADAPTGUI_HXX diff --git a/src/SMESHGUI/SMESHGUI.cxx b/src/SMESHGUI/SMESHGUI.cxx index 762c7cb34..e96570c1f 100644 --- a/src/SMESHGUI/SMESHGUI.cxx +++ b/src/SMESHGUI/SMESHGUI.cxx @@ -30,7 +30,6 @@ // SMESH includes #include "SMESHGUI.h" -#include "SMESHGUI_AdaptDlg.h" #include "SMESHGUI_Add0DElemsOnAllNodesDlg.h" #include "SMESHGUI_AddMeshElementDlg.h" #include "SMESHGUI_AddQuadraticElementDlg.h" @@ -1972,12 +1971,12 @@ void SMESHGUI::OnEditDelete() 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() ); @@ -3043,13 +3042,6 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) } 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 @@ -4287,10 +4279,6 @@ void SMESHGUI::initialize( CAM_Application* app ) 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" ); @@ -4332,7 +4320,6 @@ void SMESHGUI::initialize( CAM_Application* app ) 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 ); @@ -4505,10 +4492,6 @@ void SMESHGUI::initialize( CAM_Application* app ) 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 ); @@ -4523,7 +4506,22 @@ void SMESHGUI::initialize( CAM_Application* app ) 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 ); @@ -4535,30 +4533,25 @@ void SMESHGUI::initialize( CAM_Application* app ) 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 ); @@ -4575,7 +4568,6 @@ void SMESHGUI::initialize( CAM_Application* app ) 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 ); @@ -4583,7 +4575,6 @@ void SMESHGUI::initialize( CAM_Application* app ) 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 ); @@ -4599,7 +4590,6 @@ void SMESHGUI::initialize( CAM_Application* app ) 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 ); @@ -4613,17 +4603,14 @@ void SMESHGUI::initialize( CAM_Application* app ) 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 ); @@ -4634,7 +4621,6 @@ void SMESHGUI::initialize( CAM_Application* app ) 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 ); @@ -4652,15 +4638,8 @@ void SMESHGUI::initialize( CAM_Application* app ) 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(); @@ -4736,11 +4715,9 @@ void SMESHGUI::initialize( CAM_Application* app ) 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 ); @@ -5162,7 +5139,7 @@ bool SMESHGUI::activateModule( SUIT_Study* study ) lab = lab + tr("INFO_COMPUTE") + "
"; 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(); @@ -5170,26 +5147,26 @@ bool SMESHGUI::activateModule( SUIT_Study* study ) 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") + "
"; 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 @@ -5397,7 +5374,7 @@ void SMESHGUI::createPreferences() 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") ); @@ -5774,29 +5751,6 @@ void SMESHGUI::createPreferences() 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 ) @@ -6010,10 +5964,6 @@ LightApp_Operation* SMESHGUI::createOperation( const int id ) const case SMESHOp::OpElem0DOnElemNodes: // Create 0D elements on all nodes op = new SMESHGUI_Add0DElemsOnAllNodesOp(); break; - // Adaptation - begin - case SMESHOp::OpMGAdapt: - break; - // Adaptation - end default: break; } diff --git a/src/SMESHGUI/SMESHGUI_AdaptDlg.cxx b/src/SMESHGUI/SMESHGUI_AdaptDlg.cxx deleted file mode 100644 index a37c196d3..000000000 --- a/src/SMESHGUI/SMESHGUI_AdaptDlg.cxx +++ /dev/null @@ -1,162 +0,0 @@ -// 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 -#include -#include -#include -#include - -// SALOME KERNEL includes -#include "utilities.h" -#include - -//================================================================================= -// 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 ( 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; -} - - - diff --git a/src/SMESHGUI/SMESHGUI_AdaptDlg.h b/src/SMESHGUI/SMESHGUI_AdaptDlg.h deleted file mode 100644 index 1231b067e..000000000 --- a/src/SMESHGUI/SMESHGUI_AdaptDlg.h +++ /dev/null @@ -1,77 +0,0 @@ -// 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 - -// IDL includes -#include -#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 diff --git a/src/SMESHGUI/SMESHGUI_MG_ADAPTDRIVER.cxx b/src/SMESHGUI/SMESHGUI_MG_ADAPTDRIVER.cxx deleted file mode 100644 index d3bed87fd..000000000 --- a/src/SMESHGUI/SMESHGUI_MG_ADAPTDRIVER.cxx +++ /dev/null @@ -1,758 +0,0 @@ -// 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 -#include "SMESHGUI_IdValidator.h" -#include "SMESHGUI_Utils.h" -#include "SMESHGUI_MeshEditPreview.h" -#include "SMESHGUI_VTKUtils.h" -#include -#include -#include -#include -#include -#include "SMESHGUI_SpinBox.h" - -#include -#include -#include -#include -#include -#include -#include "SMESHGUI_MeshUtils.h" - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -// SALOME KERNEL includes -#include -#include -#include -#include -#include "SalomeApp_Tools.h" -#include -#include -#include - -#include - -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( 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( 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_Session::session()->resourceMgr() ); -} - -LightApp_SelectionMgr* SMESHGUI_MG_ADAPTDRIVER::selectionMgr() -{ - SalomeApp_Application* anApp = dynamic_cast( SUIT_Session::session()->activeApplication() ); - if( anApp ) - return dynamic_cast( 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( 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 : " <getPublish()) this->createMeshInObjectBrowser(); -// std::cout << "SMESHGUI_MG_ADAPTDRIVER::PushOnApply ok 2 : " <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<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( 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 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; -} diff --git a/src/SMESHGUI/SMESHGUI_MG_ADAPTDRIVER.h b/src/SMESHGUI/SMESHGUI_MG_ADAPTDRIVER.h deleted file mode 100644 index 20e09dd95..000000000 --- a/src/SMESHGUI/SMESHGUI_MG_ADAPTDRIVER.h +++ /dev/null @@ -1,210 +0,0 @@ -// 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 -// SMESH includes -#include "SMESH_SMESHGUI.hxx" - -// Qt includes -#include -#include -#include - -#include - -#include "LightApp_DataOwner.h" -#include "SalomeApp_Application.h" -#include -#include -#include "SalomeApp_Module.h" -#include "SalomeApp_Study.h" -#include -#include -// 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 -#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 diff --git a/src/SMESHGUI/SMESHGUI_Operations.h b/src/SMESHGUI/SMESHGUI_Operations.h index d63c592c0..2782458aa 100644 --- a/src/SMESHGUI/SMESHGUI_Operations.h +++ b/src/SMESHGUI/SMESHGUI_Operations.h @@ -186,8 +186,6 @@ namespace SMESHOp { 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 diff --git a/src/SMESHGUI/SMESH_images.ts b/src/SMESHGUI/SMESH_images.ts index 317a769cb..932d60f07 100644 --- a/src/SMESHGUI/SMESH_images.ts +++ b/src/SMESHGUI/SMESH_images.ts @@ -83,10 +83,6 @@ ICON_CREATE_GEO_GROUP mesh_groups_from_gemetry.png - - ICON_MG_ADAPT - adapt_mg_adapt.png - ICON_CONV_TO_QUAD mesh_conv_to_quad.png @@ -658,7 +654,7 @@ ICON_MEASURE_AREA mesh_measure_area.png - + ICON_MEASURE_VOLUME mesh_measure_volume.png diff --git a/src/SMESHGUI/SMESH_msg_en.ts b/src/SMESHGUI/SMESH_msg_en.ts index 32fb70b88..cdbcfc114 100644 --- a/src/SMESHGUI/SMESH_msg_en.ts +++ b/src/SMESHGUI/SMESH_msg_en.ts @@ -340,126 +340,6 @@ MEN_CONSTRUCT_GROUP Construct Group - - MEN_MG_ADAPT - Remesh with MG_Adapt - - - Args - Arguments - - - MeshOut - Mesh Out - - - MeshIn - Mesh In - - - MEDFile - MED file - - - Browser - Browser - - - Publish_MG_ADAPT - Publish - - - SIZE_MAP_FIELD - Size map field - - - MG_ADAPT_FIELD_NAME - Field Name - - - MG_ADAPT_MED_FILE_1 - This MED file cannot be read. - - - MG_ADAPT_MED_FILE_2 - No mesh in this MED file. - - - MG_ADAPT_MED_FILE_3 - More than one mesh in this MED file. - - - MG_ADAPT_MED_FILE_4 - The mesh in this MED file cannot be read. - - - MG_ADAPT_MED_FILE_5 - No field in this MED file. - - - MG_ADAPT_ERROR - Error - - - MG_ADAPT_CH_ST - Chosen time step - - - MG_ADAPT_RANK - Rank - - - MG_ADAPT_TSTP - Time step - - - MG_ADAPT_NO_T_ST - No time step - - - MG_ADAPT_L_ST - Last time step - - - MeshName - Mesh name - - - LOCAL_MG_ADAPT - Local - - - BACKGRND_MG_ADAPT - Background - - - CNST_MG_ADAPT - Constant - - - MED_FILE_BCKG - MED file background size map - - - VALUE_MG_ADAPT - Value - - - SIZE_MAP_DEF - Size map definition - - - ADVOP - Advanced Options - - - MG_ADAPT_DIAG_1 - Adaptation succeeded. - - - MG_ADAPT_DIAG_2 - Adaptation failed. - MEN_CONV_TO_QUAD Convert to/from quadratic @@ -908,10 +788,6 @@ MEN_MODIFY Modification - - MEN_ADAPT - Adaptation - MEN_MEASURE Measurements @@ -1626,10 +1502,6 @@ Please enter correct values and try again SMESH_AVAILABLE Available - - SMESH_NOT_AVAILABLE - Not available - SMESH_AVAILABLE_ALGORITHMS Available algorithms @@ -3025,82 +2897,6 @@ Check algorithm documentation for supported geometry SMESH_MULTICOLOR Multicolor - - ADAPT_PREF_TAB_GENERAL - Adaptation - - - ADAPT_PREF_NONE - None - - - ADAPT_PREF_MG_ADAPT - Adaptation with MG-Adapt - - - ADAPT_PREF_MG_ADAPT_FILE_MAILLAGE_OUT - Write the OUT mesh - - - ADAPT_PREF_MG_ADAPT_PUBLICATION_MAILLAGE_OUT - Publication of the OUT mesh - - - OPTION_VALUE_COLUMN - Option - - - OPTION_NAME_COLUMN - Value - - - compute_ridges - Compute ridges - - - max_memory - Maximum memory (Mb) - - - Adaption - adaptation - - - components - Components - - - ADAPT_PREF_MG_ADAPT_SIZE_MAP - Size map - - - ADAPT_PREF_MG_ADAPT_SIZE_MAP_LOCAL - Local - - - ADAPT_PREF_MG_ADAPT_SIZE_MAP_BACKGROUND - Background - - - ADAPT_PREF_MG_ADAPT_TIME_STEP_LAST - Last - - - ADAPT_PREF_MG_ADAPT_TIME_STEP - Choosen time step - - - ADAPT_PREF_MG_ADAPT_TIME_STEP_C - Value - - - MG_ADAPT_SELECT_FILE_0 - MG-ADAPT select file - - - ADAPT_PREF_MG_ADAPT_ADVOP - Advanced Options - SMESH_VISU_PROBLEM Mesh visualization failed @@ -3316,10 +3112,6 @@ Use Display Entity menu command to show them. STB_CONSTRUCT_GROUP Construct Group - - STB_MG_ADAPT - Remesh with MG_Adapt - STB_CONV_TO_QUAD Convert to/from quadratic @@ -3916,10 +3708,6 @@ Use Display Entity menu command to show them. TB_CTRL3D Volume Controls Toolbar - - TB_ADAPTATION - Adaptation Toolbar - TB_MEASUREM Measurements Toolbar @@ -4024,10 +3812,6 @@ Use Display Entity menu command to show them. TOP_CONSTRUCT_GROUP Construct Group - - TOP_MG_ADAPT - Remesh with MG_Adapt - TOP_CONV_TO_QUAD Convert to/from quadratic @@ -4659,8 +4443,8 @@ Use Display Entity menu command to show them. FULL_RECOMPUTE_QUESTION -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? @@ -6853,7 +6637,7 @@ Please specify them and try again GEOMETRY_OBJECT_IS_NOT_DEFINED_MESH 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? @@ -6928,7 +6712,7 @@ select mesh or sub-mesh and try again CONCURRENT_SUBMESH_APPEARS -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? @@ -8538,7 +8322,7 @@ as they are of improper type: SUBSHAPES_NOT_FOUND_MSG -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. diff --git a/src/SMESHGUI/SMESH_msg_fr.ts b/src/SMESHGUI/SMESH_msg_fr.ts index b69f4650a..318c62947 100644 --- a/src/SMESHGUI/SMESH_msg_fr.ts +++ b/src/SMESHGUI/SMESH_msg_fr.ts @@ -340,126 +340,6 @@ MEN_CONSTRUCT_GROUP Construire un groupe - - MEN_MG_ADAPT - Remaillage avec MG_Adapt - - - Args - Arguments - - - MeshOut - Maillage en sortie - - - MeshIn - Maillage en entrée - - - MEDFile - Fichier MED - - - Browser - Arbre d'études - - - Publish_MG_ADAPT - Publication - - - SIZE_MAP_FIELD - Champ de la carte de taille - - - MG_ADAPT_FIELD_NAME - Nom du champ - - - MG_ADAPT_MED_FILE_1 - Ce fichier MED est illisible. - - - MG_ADAPT_MED_FILE_2 - Ce fichier MED ne contient aucun maillage. - - - MG_ADAPT_MED_FILE_3 - Ce fichier MED contient plus d'un maillage. - - - MG_ADAPT_MED_FILE_4 - Impossible de lire le maillage de ce fichier MED. - - - MG_ADAPT_MED_FILE_5 - Ce fichier MED ne contient aucun champ. - - - MG_ADAPT_ERROR - Erreur - - - MG_ADAPT_CH_ST - Pas de temps choisi - - - MG_ADAPT_RANK - Numéro d'ordre - - - MG_ADAPT_TSTP - Pas de temps - - - MG_ADAPT_NO_T_ST - Sans pas de temps - - - MG_ADAPT_L_ST - Dernier pas de temps - - - MeshName - Nom du maillage - - - LOCAL_MG_ADAPT - Locale - - - BACKGRND_MG_ADAPT - Arrière-plan - - - CNST_MG_ADAPT - Constante - - - MED_FILE_BCKG - Fichier MED de la carte en arrière-plan - - - VALUE_MG_ADAPT - Valeur - - - SIZE_MAP_DEF - Définition de la carte de taille - - - ADVOP - Options avancées - - - MG_ADAPT_DIAG_1 - Adaptation réussie. - - - MG_ADAPT_DIAG_2 - Echec de l'adaptation. - MEN_CONV_TO_QUAD Convertir vers/depuis quadratique @@ -602,7 +482,7 @@ MEN_EDIT - Editer + Edition MEN_EDIT_GROUP @@ -908,10 +788,6 @@ MEN_MODIFY Modification - - MEN_ADAPT - Adaptation - MEN_MEASURE Outils de mesure @@ -3019,82 +2895,6 @@ Référez-vous à la documentation sur l'algorithme et la géométrie supportée SMESH_MULTICOLOR Multicouleur - - ADAPT_PREF_TAB_GENERAL - Adaptation - - - ADAPT_PREF_NONE - Sans - - - ADAPT_PREF_MG_ADAPT - Adaptation avec MG-Adapt - - - ADAPT_PREF_MG_ADAPT_FILE_MAILLAGE_OUT - Ecriture du maillage de sortie - - - ADAPT_PREF_MG_ADAPT_PUBLICATION_MAILLAGE_OUT - Publication du maillage de sortie - - - OPTION_VALUE_COLUMN - Option - - - OPTION_NAME_COLUMN - Valeur - - - compute_ridges - Calcul des crêtes - - - max_memory - Maximum mémoire (Mb) - - - Adaption - Adaptation - - - components - Composantes - - - ADAPT_PREF_MG_ADAPT_SIZE_MAP - Carte de tailles - - - ADAPT_PREF_MG_ADAPT_SIZE_MAP_LOCAL - Locale - - - ADAPT_PREF_MG_ADAPT_SIZE_MAP_BACKGROUND - Arrière-plan - - - ADAPT_PREF_MG_ADAPT_TIME_STEP_LAST - Dernier - - - ADAPT_PREF_MG_ADAPT_TIME_STEP - Choix du pas de temps - - - ADAPT_PREF_MG_ADAPT_TIME_STEP_C - Valeur - - - MG_ADAPT_SELECT_FILE_0 - MG-ADAPT selection fichier MED - - - ADAPT_PREF_MG_ADAPT_ADVOP - Options avancées - SMESH_VISU_PROBLEM Impossible de visualiser le maillage, probablement à cause d'un manque de mémoire @@ -3311,10 +3111,6 @@ Utilisez le menu "Visualiser une entité" pour les afficher. STB_CONSTRUCT_GROUP Construire un groupe - - STB_MG_ADAPT - Remaillage avec MG_Adapt - STB_CONV_TO_QUAD Convertir vers/depuis quadratique @@ -3911,10 +3707,6 @@ Utilisez le menu "Visualiser une entité" pour les afficher. TB_CTRL3D Barre des contrôles des volumes - - TB_ADAPTATION - Barre de l'adaptation - TB_MEASUREM Barre des mesures @@ -4019,10 +3811,6 @@ Utilisez le menu "Visualiser une entité" pour les afficher. TOP_CONSTRUCT_GROUP Construire un groupe - - TOP_MG_ADAPT - Remaillage avec MG_Adapt - TOP_CONV_TO_QUAD Convertir vers/de quadratique diff --git a/src/SMESH_I/CMakeLists.txt b/src/SMESH_I/CMakeLists.txt index b9df761dd..9079fbf5a 100644 --- a/src/SMESH_I/CMakeLists.txt +++ b/src/SMESH_I/CMakeLists.txt @@ -40,7 +40,6 @@ INCLUDE_DIRECTORIES( ${PROJECT_SOURCE_DIR}/src/SMESHUtils ${PROJECT_BINARY_DIR} ${PROJECT_BINARY_DIR}/idl - ${MEDCOUPLING_INCLUDE_DIRS} ) # additional preprocessor / compiler flags @@ -85,7 +84,6 @@ SET(_link_LIBRARIES SMESHDS SMESHControls MeshDriverMED - ${MEDCoupling_medloader} ) # --- headers --- @@ -115,7 +113,6 @@ SET(SMESHEngine_HEADERS SMESH_MeshPartDS.hxx SMESH.hxx SMESH_Component_Generator.hxx - MG_ADAPT_i.hxx ) # --- sources --- @@ -144,7 +141,6 @@ SET(SMESHEngine_SOURCES SMESH_Measurements_i.cxx SMESH_PreMeshInfo.cxx SMESH_Component_Generator.cxx - MG_ADAPT_i.cxx ) # --- rules --- diff --git a/src/SMESH_I/MG_ADAPT_i.cxx b/src/SMESH_I/MG_ADAPT_i.cxx deleted file mode 100644 index 188a35236..000000000 --- a/src/SMESH_I/MG_ADAPT_i.cxx +++ /dev/null @@ -1,528 +0,0 @@ -// 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 -#include -#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 vals = myMgAdapt->getCustomOptionValuesStrVec(); - result->length(vals.size()); - for (int i = 0; i vals = myMgAdapt->getOptionValuesStrVec(); - result->length(vals.size()); - for (int i = 0; isetPrintLogInFile(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; -} diff --git a/src/SMESH_I/MG_ADAPT_i.hxx b/src/SMESH_I/MG_ADAPT_i.hxx deleted file mode 100644 index edc398d07..000000000 --- a/src/SMESH_I/MG_ADAPT_i.hxx +++ /dev/null @@ -1,162 +0,0 @@ -#ifndef MG_ADAPT_I_HXX -#define MG_ADAPT_I_HXX - -#include "MG_ADAPT.hxx" -#include "SMESH.hxx" -#include -//~#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 -#include -#include -#include - -//~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 diff --git a/src/SMESH_I/SMESH_Gen_i.hxx b/src/SMESH_I/SMESH_Gen_i.hxx index d5c6be399..5a5ba6fad 100644 --- a/src/SMESH_I/SMESH_Gen_i.hxx +++ b/src/SMESH_I/SMESH_Gen_i.hxx @@ -477,10 +477,6 @@ public: 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 // *****************************************