X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FTools%2FblocFissure%2Fgmu%2FregroupeSainEtDefaut.py;h=6efee872125d35bcdee47eb4fcfcdcb154ca9fd4;hp=6238a409668cbd9fccae27956e70f45b5d473e55;hb=499f29d24922cec66e41b41a0039a954993bc6df;hpb=d5029840731bccaa1718e65f0abf3b19198c7293 diff --git a/src/Tools/blocFissure/gmu/regroupeSainEtDefaut.py b/src/Tools/blocFissure/gmu/regroupeSainEtDefaut.py index 6238a4096..6efee8721 100644 --- a/src/Tools/blocFissure/gmu/regroupeSainEtDefaut.py +++ b/src/Tools/blocFissure/gmu/regroupeSainEtDefaut.py @@ -1,42 +1,62 @@ # -*- coding: utf-8 -*- +# Copyright (C) 2014-2022 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 +# +"""Maillage sain sans la zone de defaut""" import logging -from .geomsmesh import smesh + import SMESH -from .geomsmesh import geompy -# ----------------------------------------------------------------------------- -# --- maillage complet et fissure +from .geomsmesh import geompy +from .geomsmesh import smesh def RegroupeSainEtDefaut(maillageSain, blocComplet, extrusionFaceFissure, faceGeomFissure, nomVolume, normal = None): - """ - Maillage sain sans la zone de defaut - TODO: a completer - """ + """Maillage sain sans la zone de defaut""" logging.info('Concatenation') maillageComplet = smesh.Concatenate([maillageSain.GetMesh(), blocComplet.GetMesh()], 1, 1, 1e-05,False) groups = maillageComplet.GetGroups() - grps = [ grp for grp in groups if grp.GetName() == 'FACE1'] - faceFissure = grps[0] - grps = [ grp for grp in groups if grp.GetName() == 'nfondfis'] - noeudsFondFissure = grps[0] - grps = [ grp for grp in groups if grp.GetName() == 'fisInPi'] - fisInPi = grps[0] - grps = [ grp for grp in groups if grp.GetName() == 'fisOutPi'] - fisOutPi = grps[0] + for grp in groups: + grp_nom = grp.GetName() + if ( grp_nom == "FACE1" ): + faceFissure = grp + elif ( grp_nom == "nfondfis" ): + noeudsFondFissure = grp + elif ( grp_nom == "fisInPi" ): + fisInPi = grp + elif ( grp_nom == "fisOutPi" ): + fisOutPi = grp # --- TODO: fiabiliser l'orientation dans le cas general if normal is None: normal = smesh.MakeDirStruct( 0, 0, 1 ) + texte = 'après normal = {}'.format(normal) + logging.debug(texte) maillageComplet.Reorient2D( fisInPi, normal, [0,0,0]) + logging.debug('après Reorient2D In') maillageComplet.Reorient2D( fisOutPi, normal, [0,0,0]) - - shapes = [] + + shapes = list() if extrusionFaceFissure is not None: subIds = geompy.SubShapeAllIDs(extrusionFaceFissure, geompy.ShapeType["SOLID"]) - if len(subIds) > 1: + if ( len(subIds) > 1 ): shapes = geompy.ExtractShapes(extrusionFaceFissure, geompy.ShapeType["SOLID"], False) else: shapes = [extrusionFaceFissure] @@ -46,40 +66,47 @@ def RegroupeSainEtDefaut(maillageSain, blocComplet, extrusionFaceFissure, faceGe # shapes = geompy.ExtractShapes(faceGeomFissure, geompy.ShapeType["FACE"], False) # else: # shapes = [faceGeomFissure] - - grpEdges = [] - grpFaces = [] - grpVolumes = [] - if len(shapes) == 0: + + grpEdges = list() + grpFaces = list() + grpVolumes = list() + if not shapes: shapes = [None] # calcul uniquement avec les normales des faces mailles de la fissure for i, aShape in enumerate(shapes): - logging.info('Detection elements affectes par le dedoublement de la face %d'%i) + texte = "Detection elements affectes par le dedoublement de la face n° {}".format(i) + logging.debug(texte) affectedGroups = maillageComplet.AffectedElemGroupsInRegion([faceFissure], [noeudsFondFissure], aShape) - grps = [ grp for grp in affectedGroups if grp.GetName() == 'affectedEdges'] - affectedEdges = grps[0] + for grp in affectedGroups: + grp_nom = grp.GetName() + if ( grp_nom == "affectedEdges" ): + affectedEdges = grp + elif ( grp_nom == "affectedFaces" ): + affectedFaces = grp + elif ( grp_nom == "affectedVolumes" ): + affectedVolumes = grp + #grps = [ grp for grp in affectedGroups if grp.GetName() == 'affectedEdges'] + #affectedEdges = grps[0] affectedEdges.SetName('affEd%d'%i) grpEdges.append(affectedEdges) - grps = [ grp for grp in affectedGroups if grp.GetName() == 'affectedFaces'] - affectedFaces = grps[0] + #grps = [ grp for grp in affectedGroups if grp.GetName() == 'affectedFaces'] + #affectedFaces = grps[0] affectedFaces.SetName('affFa%d'%i) grpFaces.append(affectedFaces) - grps = [ grp for grp in affectedGroups if grp.GetName() == 'affectedVolumes'] - affectedVolumes = grps[0] + #grps = [ grp for grp in affectedGroups if grp.GetName() == 'affectedVolumes'] + #affectedVolumes = grps[0] affectedVolumes.SetName('affVo%d'%i) grpVolumes.append(affectedVolumes) - logging.info("union des groupes d'edges") affectedEdges = maillageComplet.UnionListOfGroups(grpEdges, 'affEdges') - logging.info("union des groupes de faces") affectedFaces = maillageComplet.UnionListOfGroups(grpFaces, 'affFaces') - logging.info("union des groupes de volumes") affectedVolumes = maillageComplet.UnionListOfGroups(grpVolumes, 'affVols') for grp in affectedGroups: - logging.debug("nom groupe %s",grp.GetName()) - [ FACE2, FACE2_nodes ] = maillageComplet.DoubleNodeElemGroups([faceFissure], [noeudsFondFissure], affectedGroups, True, True) + texte = "Traitement du groupe '{}'".format(grp.GetName()) + logging.debug(texte) + [ FACE2, _ ] = maillageComplet.DoubleNodeElemGroups([faceFissure], [noeudsFondFissure], affectedGroups, True, True) FACE2.SetName( 'FACE2' ) + # Groupe de toutes les mailles volumiques GroupVol = maillageComplet.CreateEmptyGroup( SMESH.VOLUME, nomVolume ) - nbAdd = GroupVol.AddFrom( maillageComplet.GetMesh() ) + _ = GroupVol.AddFrom( maillageComplet.GetMesh() ) return maillageComplet -