X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FTools%2FblocFissure%2Fgmu%2FidentifieElementsDebouchants.py;h=486c550dd8d558db128685010fa8a3e4ddcdf760;hp=fb03f94b713a0137f659681dd06c8ac2268778c1;hb=81adb7985f3c35fa2a7778eb4d2346832536ddc9;hpb=a17b36970bc61da1d664453c615754997c925b18 diff --git a/src/Tools/blocFissure/gmu/identifieElementsDebouchants.py b/src/Tools/blocFissure/gmu/identifieElementsDebouchants.py index fb03f94b7..486c550dd 100644 --- a/src/Tools/blocFissure/gmu/identifieElementsDebouchants.py +++ b/src/Tools/blocFissure/gmu/identifieElementsDebouchants.py @@ -1,35 +1,51 @@ # -*- coding: utf-8 -*- +# Copyright (C) 2014-2020 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 -from geomsmesh import geompy -from geomsmesh import geomPublish -from geomsmesh import geomPublishInFather -import initLog +from .geomsmesh import geompy +from .geomsmesh import geomPublish +from .geomsmesh import geomPublishInFather +from . import initLog import traceback -from fissError import fissError +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, +from .produitMixte import produitMixte +from .whichSide import whichSide + +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)