Salome HOME
1cbf8cea407a2f5b0538c9117648f728c16752be
[modules/smesh.git] / src / Tools / blocFissure / gmu / facesFissure.py
1 # -*- coding: utf-8 -*-
2
3 import logging
4 from geomsmesh import geompy
5
6 # -----------------------------------------------------------------------------
7 # --- faces fissure dans et hors tore, et edges face hors tore
8
9 def facesFissure(blocp, faceFissure, extrusionDefaut, genint):
10   """
11   extraction des faces de fissure dans et hors tore, des edges le long du tore et en paroi
12   @param faceFissure : la face de fissure avec la partie dans le tore elliptique et la partie externe
13   @return (facefissintore, facefissoutore, edgeint, edgeext)
14   """
15   logging.info('start')
16
17   [f0,f1] = geompy.ExtractShapes(faceFissure, geompy.ShapeType["FACE"], True)
18   ed0 = geompy.ExtractShapes(f0, geompy.ShapeType["EDGE"], True)
19   ed1 = geompy.ExtractShapes(f1, geompy.ShapeType["EDGE"], True)
20   if len(ed0) > len(ed1):
21     facefissintore = f0
22     facefissoutore = f1
23   else:
24     facefissintore = f1
25     facefissoutore = f0
26
27   geompy.addToStudyInFather(faceFissure, facefissintore,'facefissintore')
28   geompy.addToStudyInFather(faceFissure, facefissoutore,'facefissoutore')
29
30   edgeint = geompy.GetShapesOnShape(extrusionDefaut, facefissoutore, geompy.ShapeType["EDGE"], GEOM.ST_IN)
31   edgeext = geompy.GetShapesOnShape(extrusionDefaut, facefissoutore, geompy.ShapeType["EDGE"], GEOM.ST_ON)
32
33   for i in range(len(edgeint)):
34     name = "edgeint_%d"%i
35     geompy.addToStudyInFather(facefissoutore, edgeint[i],name)
36   for i in range(len(edgeext)):
37     name = "edgeext_%d"%i
38     geompy.addToStudyInFather(facefissoutore, edgeext[i],name)
39
40   reverext = []
41   if len(edgeext) > 1:
42     vertices = geompy.ExtractShapes(genint, geompy.ShapeType["VERTEX"], False)
43     for i in range(len(edgeext)):
44       vertedge = geompy.ExtractShapes(edgeext[i], geompy.ShapeType["VERTEX"], False)
45       if ((geompy.GetSubShapeID(blocp, vertedge[0]) == geompy.GetSubShapeID(blocp, vertices[0])) or
46           (geompy.GetSubShapeID(blocp, vertedge[0]) == geompy.GetSubShapeID(blocp, vertices[1]))):
47         reverext.append(0)
48       else:
49         reverext.append(1)
50
51   return facefissintore, facefissoutore, edgeint, edgeext, reverext