Salome HOME
Merge branch 'V8_3_BR' into ngr/python3_dev
[modules/smesh.git] / src / Tools / blocFissure / gmu / identifieEdgesPeau.py
index ff138f3292374a2ac1ab026b8d7a98f4636a8cbe..53b2cc5b91ff500a33a55fe899665d85b9e46c11 100644 (file)
@@ -2,8 +2,12 @@
 
 import logging
 
 
 import logging
 
-from geomsmesh import geompy
-from substractSubShapes import substractSubShapes
+from .geomsmesh import geompy
+from .geomsmesh import geomPublish
+from .geomsmesh import geomPublishInFather
+from . import initLog
+
+from .substractSubShapes import substractSubShapes
 
 def identifieEdgesPeau(edgesFissExtPipe,verticesPipePeau, facePeau, facesPeauSorted,
                        edgesPeauFondIn, fillingFaceExterne, aretesVivesC, aretesVivesCoupees):
 
 def identifieEdgesPeau(edgesFissExtPipe,verticesPipePeau, facePeau, facesPeauSorted,
                        edgesPeauFondIn, fillingFaceExterne, aretesVivesC, aretesVivesCoupees):
@@ -11,16 +15,16 @@ def identifieEdgesPeau(edgesFissExtPipe,verticesPipePeau, facePeau, facesPeauSor
   identification précise des edges et disques des faces de peau selon index extremité fissure
   """
   logging.info('start')
   identification précise des edges et disques des faces de peau selon index extremité fissure
   """
   logging.info('start')
-  
+
   facesPipePeau = [None for i in range(len(edgesFissExtPipe))]
   endsEdgeFond = [None for i in range(len(edgesFissExtPipe))]
   edgeRadFacePipePeau = [None for i in range(len(edgesFissExtPipe))]
   facesPipePeau = [None for i in range(len(edgesFissExtPipe))]
   endsEdgeFond = [None for i in range(len(edgesFissExtPipe))]
   edgeRadFacePipePeau = [None for i in range(len(edgesFissExtPipe))]
-  
+
   edgesListees = []
   edgesCircPeau = []
   verticesCircPeau = []
   if len(verticesPipePeau) > 0: # --- au moins une extrémité du pipe sur cette face de peau
   edgesListees = []
   edgesCircPeau = []
   verticesCircPeau = []
   if len(verticesPipePeau) > 0: # --- au moins une extrémité du pipe sur cette face de peau
-    
+
     for face in facesPeauSorted[:-1]: # la ou les faces débouchantes, pas la grande face de peau
       logging.debug("examen face debouchante circulaire")
       for i,efep in enumerate(edgesFissExtPipe):
     for face in facesPeauSorted[:-1]: # la ou les faces débouchantes, pas la grande face de peau
       logging.debug("examen face debouchante circulaire")
       for i,efep in enumerate(edgesFissExtPipe):
@@ -36,37 +40,37 @@ def identifieEdgesPeau(edgesFissExtPipe,verticesPipePeau, facePeau, facesPeauSor
           nameEdge = "edgeRadFacePipePeau%d"%i
           facesPipePeau[i] = face
           endsEdgeFond[i] = sharedVertices[0]
           nameEdge = "edgeRadFacePipePeau%d"%i
           facesPipePeau[i] = face
           endsEdgeFond[i] = sharedVertices[0]
-          geompy.addToStudy(face, nameFace)
-          geompy.addToStudy(sharedVertices[0], nameVert)
+          geomPublish(initLog.debug, face, nameFace)
+          geomPublish(initLog.debug, sharedVertices[0], nameVert)
           edgesFace = geompy.ExtractShapes(face, geompy.ShapeType["EDGE"], True)
           for edge in edgesFace:
             if geompy.MinDistance(edge, sharedVertices[0]) < 1e-3:
               edgeRadFacePipePeau[i] = edge
           edgesFace = geompy.ExtractShapes(face, geompy.ShapeType["EDGE"], True)
           for edge in edgesFace:
             if geompy.MinDistance(edge, sharedVertices[0]) < 1e-3:
               edgeRadFacePipePeau[i] = edge
-              geompy.addToStudy(edge, nameEdge)
+              geomPublish(initLog.debug, edge, nameEdge)
               break
             pass
           pass
         pass
       pass
               break
             pass
           pass
         pass
       pass
-    
+
     # --- edges circulaires de la face de peau et points de jonction de la face externe de fissure
     logging.debug("facesPipePeau: %s", facesPipePeau)
     edgesCircPeau = [None for i in range(len(facesPipePeau))]
     # --- edges circulaires de la face de peau et points de jonction de la face externe de fissure
     logging.debug("facesPipePeau: %s", facesPipePeau)
     edgesCircPeau = [None for i in range(len(facesPipePeau))]
-    verticesCircPeau = [None for i in range(len(facesPipePeau))]        
+    verticesCircPeau = [None for i in range(len(facesPipePeau))]
     for i,fcirc in enumerate(facesPipePeau):
       edges = geompy.GetSharedShapesMulti([facePeau, fcirc], geompy.ShapeType["EDGE"])
       grpEdgesCirc = geompy.CreateGroup(facePeau, geompy.ShapeType["EDGE"])
       geompy.UnionList(grpEdgesCirc, edges)
       edgesCircPeau[i] = grpEdgesCirc
       name = "edgeCirc%d"%i
     for i,fcirc in enumerate(facesPipePeau):
       edges = geompy.GetSharedShapesMulti([facePeau, fcirc], geompy.ShapeType["EDGE"])
       grpEdgesCirc = geompy.CreateGroup(facePeau, geompy.ShapeType["EDGE"])
       geompy.UnionList(grpEdgesCirc, edges)
       edgesCircPeau[i] = grpEdgesCirc
       name = "edgeCirc%d"%i
-      geompy.addToStudyInFather(facePeau, grpEdgesCirc, name)
+      geomPublishInFather(initLog.debug, facePeau, grpEdgesCirc, name)
       edgesListees = edgesListees + edges
       vertices = geompy.GetSharedShapesMulti([facePeau, fcirc], geompy.ShapeType["VERTEX"])
       grpVertCircPeau = geompy.CreateGroup(facePeau, geompy.ShapeType["VERTEX"])
       geompy.UnionList(grpVertCircPeau, vertices)
       verticesCircPeau[i] = grpVertCircPeau
       name = "pointEdgeCirc%d"%i
       edgesListees = edgesListees + edges
       vertices = geompy.GetSharedShapesMulti([facePeau, fcirc], geompy.ShapeType["VERTEX"])
       grpVertCircPeau = geompy.CreateGroup(facePeau, geompy.ShapeType["VERTEX"])
       geompy.UnionList(grpVertCircPeau, vertices)
       verticesCircPeau[i] = grpVertCircPeau
       name = "pointEdgeCirc%d"%i
-      geompy.addToStudyInFather(facePeau, grpVertCircPeau, name)
+      geomPublishInFather(initLog.debug, facePeau, grpVertCircPeau, name)
       pass
     pass # --- au moins une extrémité du pipe sur cette face de peau
 
       pass
     pass # --- au moins une extrémité du pipe sur cette face de peau
 
@@ -77,7 +81,7 @@ def identifieEdgesPeau(edgesFissExtPipe,verticesPipePeau, facePeau, facesPeauSor
   for i, edge in enumerate(edgesFilling):
     edgepeau = geompy.GetInPlace(facePeau, edge)
     name = "edgepeau%d"%i
   for i, edge in enumerate(edgesFilling):
     edgepeau = geompy.GetInPlace(facePeau, edge)
     name = "edgepeau%d"%i
-    geompy.addToStudyInFather(facePeau,edgepeau, name)
+    geomPublishInFather(initLog.debug, facePeau,edgepeau, name)
     logging.debug("edgepeau %s", geompy.ShapeInfo(edgepeau))
     if geompy.ShapeInfo(edgepeau)['EDGE'] > 1:
       logging.debug("  EDGES multiples")
     logging.debug("edgepeau %s", geompy.ShapeInfo(edgepeau))
     if geompy.ShapeInfo(edgepeau)['EDGE'] > 1:
       logging.debug("  EDGES multiples")
@@ -92,9 +96,28 @@ def identifieEdgesPeau(edgesFissExtPipe,verticesPipePeau, facePeau, facesPeauSor
   geompy.UnionList(groupEdgesBordPeau, edgesBords)
   bordsVifs = None
   if aretesVivesC is not None:
   geompy.UnionList(groupEdgesBordPeau, edgesBords)
   bordsVifs = None
   if aretesVivesC is not None:
+    logging.debug("identification des bords vifs par GetInPlace")
     bordsVifs = geompy.GetInPlace(facePeau, aretesVivesC)
     bordsVifs = geompy.GetInPlace(facePeau, aretesVivesC)
+    if bordsVifs is None:
+      logging.debug("pas d'identification des bords vifs par GetInPlace: test par distance")
+      edvifs = []
+      arvives = geompy.ExtractShapes(aretesVivesC, geompy.ShapeType["EDGE"], False)
+      edgs = geompy.ExtractShapes(facePeau, geompy.ShapeType["EDGE"], False)
+      for ed in edgs:
+        vxs = geompy.ExtractShapes(ed, geompy.ShapeType["VERTEX"], False)
+        for ar in arvives:
+          d = geompy.MinDistance(vxs[0], ar)
+          d += geompy.MinDistance(vxs[1], ar)
+          logging.debug("test distance bord face peau - arete vive: %s",d)
+          if d < 0.001:
+            edvifs.append(ed)
+            break
+      if len(edvifs) >0:
+        bordsVifs = geompy.CreateGroup(facePeau,geompy.ShapeType["EDGE"])
+        for ed in edvifs:
+          geompy.AddObject(bordsVifs, geompy.GetSubShapeID(facePeau, ed))
   if bordsVifs is not None:
   if bordsVifs is not None:
-    geompy.addToStudyInFather(facePeau, bordsVifs, "bordsVifs")
+    geomPublishInFather(initLog.debug, facePeau, bordsVifs, "bordsVifs")
     groupEdgesBordPeau = geompy.CutGroups(groupEdgesBordPeau, bordsVifs)
     grptmp = None
     if len(aretesVivesCoupees) > 0:
     groupEdgesBordPeau = geompy.CutGroups(groupEdgesBordPeau, bordsVifs)
     grptmp = None
     if len(aretesVivesCoupees) > 0:
@@ -108,10 +131,10 @@ def identifieEdgesPeau(edgesFissExtPipe,verticesPipePeau, facePeau, facesPeauSor
       edv = geompy.ExtractShapes(grpnew, geompy.ShapeType["EDGE"], False)
       aretesVivesCoupees += edv
   logging.debug("aretesVivesCoupees %s",aretesVivesCoupees)
       edv = geompy.ExtractShapes(grpnew, geompy.ShapeType["EDGE"], False)
       aretesVivesCoupees += edv
   logging.debug("aretesVivesCoupees %s",aretesVivesCoupees)
-  geompy.addToStudyInFather(facePeau, groupEdgesBordPeau , "EdgesBords")
-    
+  geomPublishInFather(initLog.debug, facePeau, groupEdgesBordPeau , "EdgesBords")
+
   # ---  edges de la face de peau partagées avec la face de fissure
   # ---  edges de la face de peau partagées avec la face de fissure
-  
+
   edgesPeau = geompy.ExtractShapes(facePeau, geompy.ShapeType["EDGE"], False)
   edges = substractSubShapes(facePeau, edgesPeau, edgesListees)
   edgesFissurePeau = []
   edgesPeau = geompy.ExtractShapes(facePeau, geompy.ShapeType["EDGE"], False)
   edges = substractSubShapes(facePeau, edgesPeau, edgesListees)
   edgesFissurePeau = []
@@ -122,7 +145,7 @@ def identifieEdgesPeau(edgesFissExtPipe,verticesPipePeau, facePeau, facesPeauSor
         if (geompy.MinDistance(grpVert, edge) < 1.e-3) and (edge not in edgesFissurePeau):
           edgesFissurePeau[i] = edge
           name = "edgeFissurePeau%d"%i
         if (geompy.MinDistance(grpVert, edge) < 1.e-3) and (edge not in edgesFissurePeau):
           edgesFissurePeau[i] = edge
           name = "edgeFissurePeau%d"%i
-          geompy.addToStudyInFather(facePeau,  edge, name)
+          geomPublishInFather(initLog.debug, facePeau,  edge, name)
     for edge in edges: # on ajoute après les edges manquantes
       if edge not in edgesFissurePeau:
         edgesFissurePeau.append(edge)
     for edge in edges: # on ajoute après les edges manquantes
       if edge not in edgesFissurePeau:
         edgesFissurePeau.append(edge)
@@ -130,8 +153,8 @@ def identifieEdgesPeau(edgesFissExtPipe,verticesPipePeau, facePeau, facesPeauSor
     for i, edge in enumerate(edges):
       edgesFissurePeau.append(edge)
       name = "edgeFissurePeau%d"%i
     for i, edge in enumerate(edges):
       edgesFissurePeau.append(edge)
       name = "edgeFissurePeau%d"%i
-      geompy.addToStudyInFather(facePeau,  edge, name)
-      
+      geomPublishInFather(initLog.debug, facePeau,  edge, name)
+
   return (endsEdgeFond, facesPipePeau, edgeRadFacePipePeau,
           edgesCircPeau, verticesCircPeau, groupEdgesBordPeau,
   return (endsEdgeFond, facesPipePeau, edgeRadFacePipePeau,
           edgesCircPeau, verticesCircPeau, groupEdgesBordPeau,
-          bordsVifs, edgesFissurePeau)
+          bordsVifs, edgesFissurePeau, aretesVivesCoupees)