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