Salome HOME
Merge branch 'master' into pra/blocFissure
[modules/smesh.git] / src / Tools / blocFissure / gmu / construitPartitionsPeauFissure.py
1 # -*- coding: utf-8 -*-
2
3 import logging
4 from geomsmesh import geompy
5 from checkDecoupePartition import checkDecoupePartition
6
7   # -----------------------------------------------------------------------------
8   # --- peau et face de fissure
9   #
10   # --- partition peau défaut - face de fissure prolongée - wire de fond de fissure prolongée
11   #     il peut y avoir plusieurs faces externes, dont certaines sont découpées par la fissure
12   #     liste de faces externes : facesDefaut
13   #     liste de partitions face externe - fissure : partitionPeauFissFond (None quand pas d'intersection)
14
15 def construitPartitionsPeauFissure(facesDefaut, fissPipe):
16   """
17   partition peau défaut - face de fissure prolongée - wire de fond de fissure prolongée.
18   Il peut y avoir plusieurs faces externes, dont certaines sont découpées par la fissure.
19   @param facesDefaut liste de faces externes
20   @param fissPipe    partition face de fissure etendue par pipe prolongé
21   @return partitionsPeauFissFond : liste de partitions face externe - fissure (None quand pas d'intersection)
22   """
23   
24   logging.info('start')
25   partitionsPeauFissFond = []
26   ipart = 0
27   for filling in facesDefaut: 
28     part = geompy.MakePartition([fissPipe, filling], [], [], [], geompy.ShapeType["FACE"], 0, [], 0)
29     isPart = checkDecoupePartition([fissPipe, filling], part)
30     if isPart: # on recrée la partition avec toutes les faces filling en outil pour avoir une face de fissure correcte
31       otherFD = [fd for fd in facesDefaut if fd != filling]
32       if len(otherFD) > 0:
33         fissPipePart = geompy.MakePartition([fissPipe], otherFD, [], [], geompy.ShapeType["FACE"], 0, [], 0)
34       else:
35         fissPipePart = fissPipe
36       part = geompy.MakePartition([fissPipePart, filling], [], [], [], geompy.ShapeType["FACE"], 0, [], 0)
37       partitionsPeauFissFond.append(part)
38       geompy.addToStudy( part, 'partitionPeauFissFond%d'%ipart )
39     else:
40       partitionsPeauFissFond.append(None)
41     ipart = ipart +1
42
43   return partitionsPeauFissFond