Salome HOME
decoupage insereFissureGenerale, renommée construitFissureGenerale, premiere phase...
[modules/smesh.git] / src / Tools / blocFissure / gmu / identifieElementsFissure.py
1 # -*- coding: utf-8 -*-
2
3 import logging
4
5 from geomsmesh import geompy
6 from extractionOrientee import extractionOrientee
7 from extractionOrienteeMulti import extractionOrienteeMulti
8  
9 def identifieElementsFissure(ifil, facesDefaut, partitionPeauFissFond,
10                              edgesPipeFiss, edgesFondFiss, aretesVivesC,
11                              fillingFaceExterne, centreFondFiss):
12   """
13   # -----------------------------------------------------------------------
14   # --- identification edges fond de fissure, edges pipe sur la face de fissure,
15   #     edges prolongées
16   #     edges internes communes pipe et fissure, points communs edges fissure peau et edges circulaires
17   """
18
19   logging.info('start')
20
21   edgesPipeC = geompy.GetInPlace(partitionPeauFissFond, geompy.MakeCompound(edgesPipeFiss))
22   geompy.addToStudyInFather(partitionPeauFissFond, edgesPipeC, "edgesPipeFiss")
23   edgesFondC = geompy.GetInPlace(partitionPeauFissFond, geompy.MakeCompound(edgesFondFiss))
24   geompy.addToStudyInFather(partitionPeauFissFond, edgesFondC, "edgesFondFiss")
25   
26   if aretesVivesC is None:
27     [edgesInside, edgesOutside, edgesOnside] = extractionOrientee(fillingFaceExterne, partitionPeauFissFond, centreFondFiss, "EDGE", 1.e-3)
28     [facesInside, facesOutside, facesOnside] = extractionOrientee(fillingFaceExterne, partitionPeauFissFond, centreFondFiss, "FACE", 1.e-3)
29   else:
30     [edgesInside, edgesOutside, edgesOnside] = extractionOrienteeMulti(facesDefaut, ifil, partitionPeauFissFond, centreFondFiss, "EDGE", 1.e-3)
31     [facesInside, facesOutside, facesOnside] = extractionOrienteeMulti(facesDefaut, ifil, partitionPeauFissFond, centreFondFiss, "FACE", 1.e-3)
32     
33   edgesPipeIn = geompy.GetSharedShapesMulti([edgesPipeC, geompy.MakeCompound(edgesInside)], geompy.ShapeType["EDGE"])
34   verticesPipePeau = []
35
36   for i, edge in enumerate(edgesPipeIn):
37     try:
38       vertices = geompy.GetSharedShapesMulti([edge, geompy.MakeCompound(facesOnside)], geompy.ShapeType["VERTEX"])
39       verticesPipePeau.append(vertices[0])
40       name = "edgePipeIn%d"%i
41       geompy.addToStudyInFather(partitionPeauFissFond, edge, name)
42       name = "verticePipePeau%d"%i
43       geompy.addToStudyInFather(partitionPeauFissFond, vertices[0], name)
44       logging.debug("edgePipeIn%s coupe les faces OnSide", i)
45     except:
46       logging.debug("edgePipeIn%s ne coupe pas les faces OnSide", i)
47
48   edgesFondIn =[]
49   if len(verticesPipePeau) > 0: # au moins une extrémité du pipe sur cette face de peau  
50     #tmp = geompy.GetSharedShapesMulti([edgesFondC, geompy.MakeCompound(edgesOutside)], geompy.ShapeType["EDGE"])
51     #edgesFondOut = [ ed for ed in tmp if geompy.MinDistance(ed, geompy.MakeCompound(facesOnside)) < 1.e-3] 
52     tmp = geompy.GetSharedShapesMulti([edgesFondC, geompy.MakeCompound(edgesInside)], geompy.ShapeType["EDGE"])
53     edgesFondIn = [ ed for ed in tmp if geompy.MinDistance(ed, geompy.MakeCompound(facesOnside)) < 1.e-3]
54
55   return (edgesPipeIn, verticesPipePeau, edgesFondIn, facesInside, facesOnside)