1 # -*- coding: utf-8 -*-
4 from geomsmesh import geompy
5 from geomsmesh import geomPublish
6 from geomsmesh import geomPublishInFather
8 from sortFaces import sortFaces
10 def restreintFaceFissure(shapeDefaut, facesDefaut, pointInterne):
12 restriction de la face de fissure au domaine solide
13 partition face fissure étendue par fillings
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)]
22 logging.debug("selection de la face la plus proche du point interne, distance=%s",distfaces[0][0])
23 facesPortFissure = distfaces[0][2]
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]
29 geomPublish(initLog.debug, facesPortFissure, "facesPortFissure")
30 return facesPortFissure