1 # -*- coding: utf-8 -*-
4 from geomsmesh import smesh
7 from listOfExtraFunctions import lookForCorner
8 from fusionMaillageAttributionDefaut import fusionMaillageDefaut
10 # -----------------------------------------------------------------------------
11 # --- peau interne du defaut dans le maillage sain
13 def peauInterne(fichierMaillage, shapeDefaut, nomZones):
15 Retrouve les groupes de défaut dans le maillage sain modifié par CreateHoleSkin (CreeZoneDefautMaillage)
16 On récupère le volume et la peau de la zone de défaut, les éventuelles faces et arêtes internes de cette zone.
19 ([maillageSain], status) = smesh.CreateMeshesFromMED(fichierMaillage)
21 groups = maillageSain.GetGroups()
24 logging.debug("groupe %s",grp.GetName())
25 if grp.GetName() == nomZones + "_vol":
28 zoneDefaut_skin = None
30 if grp.GetName() == nomZones + "_skin":
33 zoneDefaut_internalFaces = None
35 if grp.GetName() == nomZones + "_internalFaces":
36 zoneDefaut_internalFaces = grp
38 zoneDefaut_internalEdges = None
40 if grp.GetName() == nomZones + "_internalEdges":
41 zoneDefaut_internalEdges = grp
44 nbAdded, maillageSain, DefautBoundary = maillageSain.MakeBoundaryElements( SMESH.BND_2DFROM3D, 'DefBound', '', 0, [ zoneDefaut ])
45 internal = maillageSain.GetMesh().CutListOfGroups( [ DefautBoundary ], [ zoneDefaut_skin ], 'internal' )
46 internalBoundary = smesh.CopyMesh( internal, 'internalBoundary', 0, 0)
48 maillageDefautCible = smesh.CopyMesh(zoneDefaut_skin, 'maillageCible', 0, 0)
49 listOfCorner = lookForCorner(maillageDefautCible)
50 logging.debug("listOfCorner = %s", listOfCorner)
51 if len(listOfCorner) > 0:
52 logging.info("présence de coins à la surface externe de la zone à reconstruire")
53 zoneDefaut_skin, internalBoundary = fusionMaillageDefaut(maillageSain, maillageDefautCible, internalBoundary, zoneDefaut_skin, shapeDefaut, listOfCorner)
55 return maillageSain, internalBoundary, zoneDefaut, zoneDefaut_skin, zoneDefaut_internalFaces, zoneDefaut_internalEdges