4. Fichiers corrigés#

Catalogue de commandes :

from ..Commons import *
from ..Language.DataStructure import *
from ..Language.Syntax import *

CONV_MAIL_MED = MACRO(
    nom="CONV_MAIL_MED",
    op=OPS("code_aster.MacroCommands.conv_mail_med_ops.conv_mail_med_ops"),
    sd_prod=table_sdaster,
    reentrant="n",
    fr=tr("Convertit un maillage ASTER, GMSH ou GIBI au format MED."),
    UNITE_IN=SIMP(statut="o", typ="I"),
    FORMAT_IN=SIMP(statut="f", typ="TXM", defaut="ASTER", into=("ASTER", "GIBI", "GMSH")),
    UNITE_OUT=SIMP(statut="f", typ="I", defaut=80),
    INFO=SIMP(statut="f", typ="I", into=(1, 2), defaut=1),
)

Corps de la macro-commande code_aster/MacroCommands/conv_mail_med_ops.py :

from ..Cata.Syntax import _F
from ..CodeCommands import CREA_TABLE, IMPR_RESU, LIRE_MAILLAGE
from ..Messages import UTMESS


def conv_mail_med_ops(self, UNITE_IN, FORMAT_IN, UNITE_OUT, **args):
    """Convert a mesh from ASTER, GMSH ou GIBI format to MED format and
    return some mesh properties.

    Arguments:
        **args (dict): User's keywords.

    Returns:
        Table: Object containing some characteristics of the mesh.
    """
    args = _F(args)
    info = args.get("INFO", 1)
    # INFO is mandatory so:
    #   info = args["INFO"]
    # or adding INFO in arguments also works

    # print the information message
    UTMESS("I", "MESH_1", valk=FORMAT_IN, vali=(UNITE_IN, UNITE_OUT))

    # read the input mesh
    mesh = LIRE_MAILLAGE(FORMAT=FORMAT_IN, UNITE=UNITE_IN, INFO=info)
    # write the mesh into a MED file
    IMPR_RESU(FORMAT="MED", UNITE=UNITE_OUT, RESU=_F(MAILLAGE=mesh))

    # extract some mesh characteristics
    nbnodes = mesh.getNumberOfNodes()
    nbcells = mesh.getNumberOfCells()
    # fill the output table
    tab = CREA_TABLE(
        LISTE=(
            _F(PARA=("NB_NOEUDS",), LISTE_I=(nbnodes,)),
            _F(PARA=("NB_MAILLES",), LISTE_I=(nbcells,)),
        )
    )
    return tab