Salome HOME
merge master
[modules/smesh.git] / src / Tools / blocFissure / gmu / restreintFaceFissure.py
1 # -*- coding: utf-8 -*-
2
3 import logging
4 from geomsmesh import geompy
5 from geomsmesh import geomPublish
6 from geomsmesh import geomPublishInFather
7 import initLog
8 from sortFaces import sortFaces
9
10 def restreintFaceFissure(shapeDefaut, facesDefaut, pointInterne):
11   """
12   restriction de la face de fissure au domaine solide
13   partition face fissure étendue par fillings
14   """
15   logging.info('start')
16   partShapeDefaut = geompy.MakePartition([shapeDefaut], facesDefaut, [], [], geompy.ShapeType["FACE"], 0, [], 0)
17   geomPublish(initLog.debug, partShapeDefaut, 'partShapeDefaut')
18   facesPartShapeDefaut = geompy.ExtractShapes(partShapeDefaut, geompy.ShapeType["FACE"], False)
19   if pointInterne is not None:
20     distfaces = [(geompy.MinDistance(face,pointInterne), i, face) for i, face in enumerate(facesPartShapeDefaut)]
21     distfaces.sort()
22     logging.debug("selection de la face la plus proche du point interne, distance=%s",distfaces[0][0])
23     facesPortFissure = distfaces[0][2]
24   else:
25     facesPartShapeDefautSorted, minSurf, maxSurf = sortFaces(facesPartShapeDefaut) # la face de fissure dans le volume doit être la plus grande
26     logging.debug("surfaces faces fissure étendue, min %s, max %s", minSurf, maxSurf)
27     facesPortFissure = facesPartShapeDefautSorted[-1]
28   
29   geomPublish(initLog.debug, facesPortFissure, "facesPortFissure")
30   return facesPortFissure