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