X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FTools%2FblocFissure%2Fgmu%2FcreePointsPipePeau.py;h=5d967dffbb715cc085eb1013e49f9fbb1a377d61;hp=5bf5e91fc0531664e1bbde521bd7b9b3e1e1f2c8;hb=2cf6435f1492b63b9adf4e8256d88968638ed9bf;hpb=5260bd00bd51567f6137d5ea7ae0564464c4290a diff --git a/src/Tools/blocFissure/gmu/creePointsPipePeau.py b/src/Tools/blocFissure/gmu/creePointsPipePeau.py index 5bf5e91fc..5d967dffb 100644 --- a/src/Tools/blocFissure/gmu/creePointsPipePeau.py +++ b/src/Tools/blocFissure/gmu/creePointsPipePeau.py @@ -1,72 +1,95 @@ # -*- 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 +# +"""création des points du maillage du pipe sur la face de peau""" import logging +from . import initLog from .geomsmesh import geompy from .geomsmesh import geomPublish from .geomsmesh import geomPublishInFather -from . import initLog from .projettePointSurCourbe import projettePointSurCourbe def creePointsPipePeau(listEdges, idFacesDebouchantes, idFillingFromBout, ptEdgeFond, ptFisExtPi, edCircPeau, gptsdisks, idisklim, nbsegRad): - """ - création des points du maillage du pipe sur la face de peau - """ + """création des points du maillage du pipe sur la face de peau""" logging.info('start') - - for i, edges in enumerate(listEdges): - idf = idFacesDebouchantes[i] # indice de face débouchante (facesPipePeau) + + for n_edges, edges in enumerate(listEdges): + + idf = idFacesDebouchantes[n_edges] # indice de face débouchante (facesPipePeau) + logging.info("idf: %d", idf) if idf >= 0: - gptdsk = [] + gptdsk = list() if idf > 0: # idf vaut 0 ou 1 idf = -1 # si idf vaut 1, on prend le dernier élément de la liste (1 ou 2 extrémités débouchent sur la face) - centre = ptEdgeFond[idFillingFromBout[i]][idf] - name = "centre%d"%idf + centre = ptEdgeFond[idFillingFromBout[n_edges]][idf] + name = "centre_{}".format(idf) geomPublish(initLog.debug, centre, name) - vertPipePeau = ptFisExtPi[idFillingFromBout[i]][idf] + vertPipePeau = ptFisExtPi[idFillingFromBout[n_edges]][idf] geomPublishInFather(initLog.debug, centre, vertPipePeau, "vertPipePeau") - grpsEdgesCirc = edCircPeau[idFillingFromBout[i]] # liste de groupes - edgesCirc = [] + grpsEdgesCirc = edCircPeau[idFillingFromBout[n_edges]] # liste de groupes + + edgesCirc = list() for grpEdgesCirc in grpsEdgesCirc: edgesCirc += geompy.ExtractShapes(grpEdgesCirc, geompy.ShapeType["EDGE"], False) - for k, edge in enumerate(edges): + logging.info("edgesCirc: %s", edgesCirc) + + for i_aux, edge in enumerate(edges): extrems = geompy.ExtractShapes(edge, geompy.ShapeType["VERTEX"], True) if geompy.MinDistance(centre, extrems[0]) < geompy.MinDistance(centre, extrems[1]): bout = extrems[1] else: bout = extrems[0] # ajustement du point extrémité (bout) sur l'edge circulaire en face de peau - logging.debug("edgesCirc: %s", edgesCirc) distEdgeCirc = [(geompy.MinDistance(bout, edgeCirc), k2, edgeCirc) for k2, edgeCirc in enumerate(edgesCirc)] distEdgeCirc.sort() logging.debug("distEdgeCirc: %s", distEdgeCirc) - u = projettePointSurCourbe(bout, distEdgeCirc[0][2]) - if (abs(u) < 0.02) or (abs(1-u) < 0.02): # les points très proches d'une extrémité doivent y être mis précisément. + dist = projettePointSurCourbe(bout, distEdgeCirc[0][2]) + # les points très proches d'une extrémité doivent y être mis précisément. + if (abs(dist) < 0.02) or (abs(1.-dist) < 0.02): extrCircs = geompy.ExtractShapes(distEdgeCirc[0][2], geompy.ShapeType["VERTEX"], True) if geompy.MinDistance(bout, extrCircs[0]) < geompy.MinDistance(bout, extrCircs[1]): bout = extrCircs[0] else: bout = extrCircs[1] else: - bout = geompy.MakeVertexOnCurve(distEdgeCirc[0][2], u) - name ="bout%d"%k + bout = geompy.MakeVertexOnCurve(distEdgeCirc[0][2], dist) + name = "bout_{}".format(i_aux) geomPublishInFather(initLog.debug, centre, bout, name) # enregistrement des points dans la structure - points = [] - for j in range(nbsegRad +1): - u = j/float(nbsegRad) - points.append(geompy.MakeVertexOnCurve(edge, u)) + points = list() + for n_seg in range(nbsegRad +1): + points.append(geompy.MakeVertexOnCurve(edge, float(n_seg)/float(nbsegRad))) if geompy.MinDistance(bout, points[0]) < geompy.MinDistance(centre, points[0]): points.reverse() points[0] = centre points[-1] = bout gptdsk.append(points) - if i == 0: + + # Enregistrement des extrémités + if n_edges == 0: gptsdisks[idisklim[0] -1] = gptdsk idisklim[0] = idisklim[0] -1 else: gptsdisks[idisklim[1] +1] = gptdsk idisklim[1] = idisklim[1] +1 - - return (gptsdisks, idisklim) \ No newline at end of file + + return gptsdisks