# -*- coding: utf-8 -*-
-# Copyright (C) 2014-2021 EDF R&D
+# Copyright (C) 2014-2023 EDF
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+"""edges de bord, faces défaut à respecter"""
import logging
+import SMESH
+
from .geomsmesh import geompy
from .geomsmesh import smesh
-import SMESH
+from .geomsmesh import geomPublish
+from . import initLog
from .putName import putName
-
-def mailleAretesEtJonction(internalBoundary, aretesVivesCoupees, lgAretesVives):
- """
- edges de bord, faces défaut à respecter
- """
+
+def mailleAretesEtJonction (internalBoundary, aretesVivesCoupees, lgAretesVives, \
+ nro_cas=None):
+ """edges de bord, faces défaut à respecter"""
logging.info('start')
+ logging.info("Pour le cas n°%s", nro_cas)
- aFilterManager = smesh.CreateFilterManager()
- nbAdded, internalBoundary, _NoneGroup = internalBoundary.MakeBoundaryElements( SMESH.BND_1DFROM2D, '', '', 0, [ ])
- criteres = []
+ _ = smesh.CreateFilterManager()
+ _, internalBoundary, _NoneGroup = internalBoundary.MakeBoundaryElements( SMESH.BND_1DFROM2D, '', '', 0, [ ])
+ criteres = list()
unCritere = smesh.GetCriterion(SMESH.EDGE,SMESH.FT_FreeBorders,SMESH.FT_Undefined,0)
criteres.append(unCritere)
filtre = smesh.GetFilterFromCriteria(criteres)
bordsLibres = internalBoundary.MakeGroupByFilter( 'bords', filtre )
- smesh.SetName(bordsLibres, 'bordsLibres')
+ putName(bordsLibres, 'bordsLibres', i_pref=nro_cas)
- # --- pour aider l'algo hexa-tetra à ne pas mettre de pyramides à l'exterieur des volumes repliés sur eux-mêmes
+ # --- pour aider l'algo hexa-tetra à ne pas mettre de pyramides à l'extérieur des volumes repliés sur eux-mêmes
# on désigne les faces de peau en quadrangles par le groupe "skinFaces"
skinFaces = internalBoundary.CreateEmptyGroup( SMESH.FACE, 'skinFaces' )
- nbAdd = skinFaces.AddFrom( internalBoundary.GetMesh() )
+ _ = skinFaces.AddFrom( internalBoundary.GetMesh() )
# --- maillage des éventuelles arêtes vives entre faces reconstruites
-
+
grpAretesVives = None
- if len(aretesVivesCoupees) > 0:
+ if aretesVivesCoupees:
+
aretesVivesC = geompy.MakeCompound(aretesVivesCoupees)
+ geomPublish(initLog.always, aretesVivesC, "aretesVives", nro_cas)
meshAretesVives = smesh.Mesh(aretesVivesC)
algo1d = meshAretesVives.Segment()
+ putName(algo1d.GetSubMesh(), "aretesVives", i_pref=nro_cas)
hypo1d = algo1d.LocalLength(lgAretesVives,[],1e-07)
- putName(algo1d.GetSubMesh(), "aretesVives")
- putName(algo1d, "algo1d_aretesVives")
- putName(hypo1d, "hypo1d_aretesVives")
- isDone = meshAretesVives.Compute()
- logging.info("aretesVives fini")
+ putName(hypo1d, "aretesVives={}".format(lgAretesVives), i_pref=nro_cas)
+
+ is_done = meshAretesVives.Compute()
+ text = "meshAretesVives.Compute"
+ if is_done:
+ logging.info(text+" OK")
+ else:
+ text = "Erreur au calcul du maillage.\n" + text
+ logging.info(text)
+ raise Exception(text)
+
grpAretesVives = meshAretesVives.CreateEmptyGroup( SMESH.EDGE, 'grpAretesVives' )
- nbAdd = grpAretesVives.AddFrom( meshAretesVives.GetMesh() )
+ _ = grpAretesVives.AddFrom( meshAretesVives.GetMesh() )
- return (internalBoundary, bordsLibres, grpAretesVives)
\ No newline at end of file
+ return (internalBoundary, bordsLibres, grpAretesVives)