Salome HOME
Merge branch 'master' into gni/evolution
[modules/smesh.git] / src / Tools / blocFissure / gmu / identifieElementsDebouchants.py
index 4eb25795acf34524a05082611a0f6d9ad0c87a43..b30dd00ca5533b6524e615258b3955aaffcf32b0 100644 (file)
@@ -1,4 +1,22 @@
 # -*- coding: utf-8 -*-
+# Copyright (C) 2014-2021  EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
 
 import logging
 import math
@@ -12,24 +30,22 @@ from .fissError import fissError
 
 from .produitMixte import produitMixte
 from .whichSide import whichSide
-  
-def identifieElementsDebouchants(ifil, facesDefaut, partitionPeauFissFond,
-                                edgesFondIn, edgesFondFiss, wireFondFiss,
-                                aretesVivesC, fillingFaceExterne,
-                                edgesPipeIn, verticesPipePeau, rayonPipe,
+
+def identifieElementsDebouchants(ifil, facesDefaut, partitionPeauFissFond, \
+                                edgesFondIn, edgesFondFiss, wireFondFiss, \
+                                aretesVivesC, fillingFaceExterne, \
+                                edgesPipeIn, verticesPipePeau, rayonPipe, \
                                 facesInside, facesOnside):
-  """
-  elements débouchants (intersection pipe et peau), indexés selon les edges du fond de fissure (edgesFondIn)
-  """
-  
+  """elements débouchants (intersection pipe et peau), indexés selon les edges du fond de fissure (edgesFondIn)"""
+
   logging.info('start')
-  verticesEdgesFondIn = [] # les points du fond de fissure au débouché du pipe sur la peau (indice de edgesFondIn)
-  pipexts = []             # les segments de pipe associés au points de fond de fissure débouchants (même indice)
-  cercles = []             # les cercles de generation des pipes débouchant (même indice)
-  facesFissExt = []        # les faces de la fissure externe associés au points de fond de fissure débouchants (même indice)
-  edgesFissExtPeau = []    # edges des faces de fissure externe sur la peau (même indice)
-  edgesFissExtPipe = []    # edges des faces de fissure externe sur le pipe (même indice)
+
+  verticesEdgesFondIn = list() # les points du fond de fissure au débouché du pipe sur la peau (indice de edgesFondIn)
+  pipexts = list()             # les segments de pipe associés au points de fond de fissure débouchants (même indice)
+  cercles = list()             # les cercles de generation des pipes débouchant (même indice)
+  facesFissExt = list()        # les faces de la fissure externe associés au points de fond de fissure débouchants (même indice)
+  edgesFissExtPeau = list()    # edges des faces de fissure externe sur la peau (même indice)
+  edgesFissExtPipe = list()    # edges des faces de fissure externe sur le pipe (même indice)
 
   #logging.debug("edgesFondIn %s", edgesFondIn)
   for iedf, edge in enumerate(edgesFondIn):
@@ -60,8 +76,8 @@ def identifieElementsDebouchants(ifil, facesDefaut, partitionPeauFissFond,
     #   La partition filling / pipe reconstruit échoue.
     #   - Si on partitionne le filling avec un simple pipe obtenu par extrusion droite du cercle,
     #     cela donne un point en trop sur le cercle.
-    #   - Si on prend une vraie surface plane (pas un filling), on peut faire la partition avec 
-    #     les pipes reconstruits              
+    #   - Si on prend une vraie surface plane (pas un filling), on peut faire la partition avec
+    #     les pipes reconstruits
     logging.debug("angle=%s", angle)
     #if abs(angle) > 1.e-7:
     sommetAxe = geompy.MakeTranslationVector(centre, norm)
@@ -84,15 +100,15 @@ def identifieElementsDebouchants(ifil, facesDefaut, partitionPeauFissFond,
     locPt1 = geompy.MakeVertexOnCurve(localEdgeInFondFiss, 1.0)
     sidePt0 = whichSide(faceTestPeau, locPt0)
     sidePt1 = whichSide(faceTestPeau, locPt1)
-    logging.debug("position centre cercle: %s, extremité edge u0: %s, u1: %s", sideCentre, sidePt0, sidePt1) 
+    logging.debug("position centre cercle: %s, extremité edge u0: %s, u1: %s", sideCentre, sidePt0, sidePt1)
     normFace = geompy.GetNormal(faceTestPeau, ptPeau)
     inclPipe = abs(geompy.GetAngleRadians(norm, normFace))
     lgp = max(rayonPipe/2., abs(3*rayonPipe*math.tan(inclPipe)))
     logging.debug("angle inclinaison Pipe en sortie: %s degres, lgp: %s", inclPipe*180/math.pi, lgp)
-    
+
     # --- position des points extremite du pipe sur l'edge debouchante
     #     il faut la distance curviligne ofp du point central par rapport à une extrémité de l'edge débouchante
-    locEdgePart = geompy.MakePartition([localEdgeInFondFiss],[centre], [], [], geompy.ShapeType["EDGE"], 0, [], 0)
+    locEdgePart = geompy.MakePartition([localEdgeInFondFiss],[centre], list(), list(), geompy.ShapeType["EDGE"], 0, list(), 0)
     edgesLoc = geompy.ExtractShapes(locEdgePart, geompy.ShapeType["EDGE"], False)
     edgesLocSorted =[(geompy.MinDistance(edge, locPt0), kk, edge) for kk, edge in enumerate(edgesLoc)]
     edgesLocSorted.sort()
@@ -109,7 +125,7 @@ def identifieElementsDebouchants(ifil, facesDefaut, partitionPeauFissFond,
     geomPublishInFather(initLog.debug, wireFondFiss, p1, "p1_%d"%iedf)
     geomPublishInFather(initLog.debug, wireFondFiss, p2, "p2_%d"%iedf)
 
-    edgePart = geompy.MakePartition([localEdgeInFondFiss], [p1,p2], [], [], geompy.ShapeType["EDGE"], 0, [], 0)
+    edgePart = geompy.MakePartition([localEdgeInFondFiss], [p1,p2], list(), list(), geompy.ShapeType["EDGE"], 0, list(), 0)
     edps = geompy.ExtractShapes(edgePart, geompy.ShapeType["EDGE"], True)
     for edp in edps:
       if geompy.MinDistance(centre, edp) < 1.e-3:
@@ -120,9 +136,9 @@ def identifieElementsDebouchants(ifil, facesDefaut, partitionPeauFissFond,
 
     for ifa, face in enumerate(facesInside):
       logging.debug("recherche edges communes entre une face inside et (faces onside, edges pipe et fond débouchante)")
-      edgesPeauFis = []
-      edgesPipeFis = []
-      edgesPipeFnd = []
+      edgesPeauFis = list()
+      edgesPipeFis = list()
+      edgesPipeFnd = list()
       try:
         edgesPeauFis = geompy.GetSharedShapesMulti([geompy.MakeCompound(facesOnside), face], geompy.ShapeType["EDGE"])
         logging.debug("    faces onside %s",edgesPeauFis)
@@ -156,4 +172,4 @@ def identifieElementsDebouchants(ifil, facesDefaut, partitionPeauFissFond,
             if dist < 1.e-3:
               break
 
-  return (verticesEdgesFondIn, pipexts, cercles, facesFissExt, edgesFissExtPeau, edgesFissExtPipe)
\ No newline at end of file
+  return (verticesEdgesFondIn, pipexts, cercles, facesFissExt, edgesFissExtPeau, edgesFissExtPipe)