From 953204ba5556e1a46843c58c5900dbbbe85d9726 Mon Sep 17 00:00:00 2001 From: GERALD NICOLAS Date: Fri, 16 Apr 2021 19:17:25 +0200 Subject: [PATCH] pilotage de sfaces de peua --- .../blocFissure/gmu/identifieEdgesPeau.py | 5 +-- .../blocFissure/gmu/identifieEdgesPeau_a.py | 19 +++++----- .../blocFissure/gmu/identifieEdgesPeau_b.py | 2 +- .../blocFissure/gmu/identifieEdgesPeau_c.py | 35 +++++++++++++------ src/Tools/blocFissure/gmu/mailleFacesPeau.py | 35 +++++++++++-------- 5 files changed, 60 insertions(+), 36 deletions(-) diff --git a/src/Tools/blocFissure/gmu/identifieEdgesPeau.py b/src/Tools/blocFissure/gmu/identifieEdgesPeau.py index ca1972af5..c4cbe095c 100644 --- a/src/Tools/blocFissure/gmu/identifieEdgesPeau.py +++ b/src/Tools/blocFissure/gmu/identifieEdgesPeau.py @@ -30,13 +30,15 @@ def identifieEdgesPeau(edgesFissExtPipe, verticesPipePeau, facePeau, facesPeauSo nro_cas=None): """Identification précise des edges et disques des faces de peau selon index extremité fissure""" logging.info('start') + logging.info('Nombre de sommets : len(verticesPipePeau) = %d', len(verticesPipePeau)) facesPipePeau = [None for _ in range(len(edgesFissExtPipe))] endsEdgeFond = [None for _ in range(len(edgesFissExtPipe))] edgeRadFacePipePeau = [None for _ in range(len(edgesFissExtPipe))] edgesListees = list() - if len(verticesPipePeau) > 0: # --- au moins une extrémité du pipe sur cette face de peau + # --- au moins une extrémité du pipe sur cette face de peau + if verticesPipePeau: edgesCircPeau, verticesCircPeau = identifieEdgesPeau_a(edgesFissExtPipe, facePeau, facesPeauSorted, edgesPeauFondIn, \ endsEdgeFond, facesPipePeau, edgeRadFacePipePeau, edgesListees, \ @@ -53,7 +55,6 @@ def identifieEdgesPeau(edgesFissExtPipe, verticesPipePeau, facePeau, facesPeauSo nro_cas) # --- edges de la face de peau partagées avec la face de fissure - edgesFissurePeau = identifieEdgesPeau_c(verticesPipePeau, facePeau, edgesListees, verticesCircPeau) return (endsEdgeFond, facesPipePeau, edgeRadFacePipePeau, diff --git a/src/Tools/blocFissure/gmu/identifieEdgesPeau_a.py b/src/Tools/blocFissure/gmu/identifieEdgesPeau_a.py index 1f10ceb5e..b13a9ec49 100644 --- a/src/Tools/blocFissure/gmu/identifieEdgesPeau_a.py +++ b/src/Tools/blocFissure/gmu/identifieEdgesPeau_a.py @@ -44,9 +44,9 @@ def identifieEdgesPeau_a(edgesFissExtPipe, facePeau, facesPeauSorted, edgesPeauF j_aux_0 = j_aux break sharedVertices = geompy.GetSharedShapesMulti([face, edgesPeauFondIn[j_aux_0]], geompy.ShapeType["VERTEX"]) - nameFace = "facePipePeau{}".format(i_aux) - nameVert = "endEdgeFond{}".format(i_aux) - nameEdge = "edgeRadFacePipePeau{}".format(i_aux) + nameFace = "facePipePeau_{}".format(i_aux) + nameVert = "endEdgeFond_{}".format(i_aux) + nameEdge = "edgeRadFacePipePeau_{}".format(i_aux) facesPipePeau[i_aux] = face endsEdgeFond[i_aux] = sharedVertices[0] geomPublish(initLog.debug, face, nameFace, nro_cas) @@ -58,23 +58,26 @@ def identifieEdgesPeau_a(edgesFissExtPipe, facePeau, facesPeauSorted, edgesPeauF geomPublish(initLog.debug, edge, nameEdge, nro_cas) break - # --- edges circulaires de la face de peau et points de jonction de la face externe de fissure - logging.debug("facesPipePeau: %s", facesPipePeau) + # --- edges elliptiques de la face de peau et points de jonction de la face externe de fissure + logging.info("Traitement des arêtes de '%s'", facePeau.GetName()) edgesCircPeau = [None for _ in range(len(facesPipePeau))] verticesCircPeau = [None for _ in range(len(facesPipePeau))] for i_aux,fcirc in enumerate(facesPipePeau): + logging.info(". Partage avec la face '%s'", fcirc.GetName()) edges = geompy.GetSharedShapesMulti([facePeau, fcirc], geompy.ShapeType["EDGE"]) grpEdgesCirc = geompy.CreateGroup(facePeau, geompy.ShapeType["EDGE"]) geompy.UnionList(grpEdgesCirc, edges) edgesCircPeau[i_aux] = grpEdgesCirc - name = "edgeCirc{}".format(i_aux) + name = "edgeCirc_{}".format(i_aux) geomPublishInFather(initLog.always, 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_aux] = grpVertCircPeau - name = "pointEdgeCirc{}".format(i_aux) - geomPublishInFather(initLog.debug, facePeau, grpVertCircPeau, name) + name = "pointEdgeCirc_{}".format(i_aux) + geomPublishInFather(initLog.info, facePeau, grpVertCircPeau, name) + + logging.info('==> Nombre de sommets : len(verticesCircPeau) = %d', len(verticesCircPeau)) return edgesCircPeau, verticesCircPeau diff --git a/src/Tools/blocFissure/gmu/identifieEdgesPeau_b.py b/src/Tools/blocFissure/gmu/identifieEdgesPeau_b.py index df79b8b1e..3044d61de 100644 --- a/src/Tools/blocFissure/gmu/identifieEdgesPeau_b.py +++ b/src/Tools/blocFissure/gmu/identifieEdgesPeau_b.py @@ -36,7 +36,7 @@ def identifieEdgesPeau_b(facePeau, edgesListees, \ edgesBords = list() for i_aux, edge in enumerate(edgesFilling): edgepeau = geompy.GetInPlace(facePeau, edge) - name = "edgepeau{}".format(i_aux) + name = "edgepeau_{}".format(i_aux) geomPublishInFather(initLog.debug, facePeau,edgepeau, name) logging.debug("edgepeau %s", geompy.ShapeInfo(edgepeau)) if geompy.ShapeInfo(edgepeau)['EDGE'] > 1: diff --git a/src/Tools/blocFissure/gmu/identifieEdgesPeau_c.py b/src/Tools/blocFissure/gmu/identifieEdgesPeau_c.py index ffcdd0c32..afe027f1f 100644 --- a/src/Tools/blocFissure/gmu/identifieEdgesPeau_c.py +++ b/src/Tools/blocFissure/gmu/identifieEdgesPeau_c.py @@ -31,27 +31,42 @@ from .substractSubShapes import substractSubShapes def identifieEdgesPeau_c(verticesPipePeau, facePeau, edgesListees, verticesCircPeau): """edges de la face de peau partagées avec la face de fissure""" logging.info('start') + logging.info("Traitement des arêtes de '%s'", facePeau.GetName()) + logging.info('Nombre de sommets : len(verticesPipePeau) = %d', len(verticesPipePeau)) + #logging.info('verticesPipePeau = %s', verticesPipePeau) + logging.info('Nombre de sommets : len(verticesCircPeau) = %d', len(verticesCircPeau)) + #logging.info('verticesCircPeau = %s', verticesCircPeau) edgesPeau = geompy.ExtractShapes(facePeau, geompy.ShapeType["EDGE"], False) - edges = substractSubShapes(facePeau, edgesPeau, edgesListees) - edgesFissurePeau = list() + logging.info('Nombre total d arêtes de la peau : len(edgesPeau) = %d', len(edgesPeau)) - if len(verticesPipePeau) > 0: # --- au moins une extrémité du pipe sur cette face de peau - edgesFissurePeau = [None for _ in range(len(verticesCircPeau))] # edges associés aux extrémités du pipe, en premier + edges = substractSubShapes(facePeau, edgesPeau, edgesListees) + + edgesFissurePeau = list() +# --- au moins une extrémité du pipe sur cette face de peau + if verticesPipePeau: + # En premier, les edges associés aux extrémités du pipe + edgesFissurePeau = [None for _ in range(len(verticesCircPeau))] for edge in edges: - for i_aux, grpVert in enumerate(verticesCircPeau): - if (geompy.MinDistance(grpVert, edge) < 1.e-3) and (edge not in edgesFissurePeau): + for i_aux, vertex in enumerate(verticesCircPeau): + logging.info(".. distance %s", geompy.MinDistance(vertex, edge)) + if ( ( geompy.MinDistance(vertex, edge) < 1.e-3 ) and ( edge not in edgesFissurePeau ) ): edgesFissurePeau[i_aux] = edge - name = "edgeFissurePeau{}".format(i_aux) - geomPublishInFather(initLog.debug, facePeau, edge, name) - for edge in edges: # on ajoute après les edges manquantes + name = "edgeFissurePeau_{}".format(i_aux) + logging.info("... entrée de %s à la place %d", edge, i_aux) + geomPublishInFather(initLog.debug, facePeau, edge, name) + # Ensuite, on ajoute les edges manquantes + for edge in edges: if edge not in edgesFissurePeau: + logging.info("... ajout") edgesFissurePeau.append(edge) else: for i_aux, edge in enumerate(edges): edgesFissurePeau.append(edge) name = "edgeFissurePeau{}".format(i_aux) - geomPublishInFather(initLog.debug, facePeau, edge, name) + geomPublishInFather(initLog.debug, facePeau, edge, name) + + logging.info('==> Nombre d arêtes : len(edgesFissurePeau) = %d', len(edgesFissurePeau)) return edgesFissurePeau diff --git a/src/Tools/blocFissure/gmu/mailleFacesPeau.py b/src/Tools/blocFissure/gmu/mailleFacesPeau.py index e83e79f40..9e56f5815 100644 --- a/src/Tools/blocFissure/gmu/mailleFacesPeau.py +++ b/src/Tools/blocFissure/gmu/mailleFacesPeau.py @@ -95,7 +95,8 @@ def mailleFacesPeau(partitionsPeauFissFond, idFillingFromBout, facesDefaut, \ geompy.UnionList(groupEdgesBordPeau, edgesFilling) geomPublishInFather(initLog.always, filling, groupEdgesBordPeau, "EdgesBords", nro_cas) - logging.info("UseExisting1DElements depuis '%s'", groupEdgesBordPeau.GetName()) + logging.info("UseExisting1DElements sur la géométrie '%s' avec les mailles de '%s'", \ + groupEdgesBordPeau.GetName(), bordsLibres.GetName()) algo1d = meshFacePeau.UseExisting1DElements(geom=groupEdgesBordPeau) putName(algo1d.GetSubMesh(), "bordsLibres", ifil, nro_cas) hypo1d = algo1d.SourceEdges([ bordsLibres ],0,0) @@ -110,40 +111,44 @@ def mailleFacesPeau(partitionsPeauFissFond, idFillingFromBout, facesDefaut, \ bordsVifs = gpedgeVifs[ifil] # pour chaque face de peau : groupe subshape des edges aux bords correspondant à des arêtes vives edgesFissurePeau = edFissPeau[ifil] # pour chaque face de peau : [subshape edge en peau des faces de fissure externes] - logging.info("UseExisting1DElements depuis groupEdgesBordPeau = '%s'", groupEdgesBordPeau.GetName()) + logging.info("UseExisting1DElements sur la géométrie '%s' avec les mailles de '%s'", \ + groupEdgesBordPeau.GetName(), bordsLibres.GetName()) algo1d = meshFacePeau.UseExisting1DElements(geom=groupEdgesBordPeau) putName(algo1d.GetSubMesh(), "bordsLibres", ifil, nro_cas) hypo1d = algo1d.SourceEdges([ bordsLibres ],0,0) - putName(hypo1d, "SourceEdges_{}".format(bordsLibres.GetName()), ifil, nro_cas) + putName(hypo1d, "SourceEdges_{}".format(bordsLibres.GetName()), i_pref=nro_cas) objet = geompy.MakeCompound(edgesFissurePeau) geomPublishInFather(initLog.always, facePeau, objet, "edgesFissurePeau") - logging.info("UseExisting1DElements depuis objet = '%s'", objet.GetName()) + logging.info("UseExisting1DElements sur la géométrie '%s' avec les mailles de '%s'", \ + objet.GetName(), grpEdgesPeauFissureExterne.GetName()) algo1d = meshFacePeau.UseExisting1DElements(geom=objet) - putName(algo1d.GetSubMesh(), "edgePeauFiss", ifil, nro_cas) + putName(algo1d.GetSubMesh(), objet.GetName(), i_pref=nro_cas) hypo1d = algo1d.SourceEdges([ grpEdgesPeauFissureExterne ],0,0) - putName(hypo1d, "SourceEdges_{}".format(grpEdgesPeauFissureExterne.GetName()), ifil, nro_cas) + putName(hypo1d, "SourceEdges_{}".format(grpEdgesPeauFissureExterne.GetName()), i_pref=nro_cas) if bordsVifs is not None: - logging.info("UseExisting1DElements depuis bordsVifs = '%s'", bordsVifs.GetName()) + logging.info("UseExisting1DElements sur la géométrie '%s' avec les mailles de '%s'", \ + bordsVifs.GetName(), grpAretesVives.GetName()) algo1d = meshFacePeau.UseExisting1DElements(geom=bordsVifs) putName(algo1d.GetSubMesh(), "bordsVifs", ifil, nro_cas) hypo1d = algo1d.SourceEdges([ grpAretesVives ],0,0) - putName(hypo1d, "SourceEdges_{}".format(grpAretesVives.GetName()), ifil, nro_cas) + putName(hypo1d, "SourceEdges_{}".format(grpAretesVives.GetName()), i_pref=nro_cas) for i_aux, edgeCirc in enumerate(edgesCircPeau): texte = "i_aux = {}".format(i_aux) logging.info(texte) if edgeCirc is not None: - logging.info("UseExisting1DElements depuis edgeCirc = '%s'", edgeCirc.GetName()) - algo1d = meshFacePeau.UseExisting1DElements(geom=edgeCirc) # addToStudy() failed ? - name = "cercle{}".format(i_aux) - putName(algo1d.GetSubMesh(), name, ifil, nro_cas) if boutFromIfil[ifil] is None: - hypo1d = algo1d.SourceEdges([ edgesCircPipeGroup[i_aux] ],0,0) + groupe = edgesCircPipeGroup[i_aux] else: - hypo1d = algo1d.SourceEdges([ edgesCircPipeGroup[boutFromIfil[ifil]] ],0,0) - putName(hypo1d, "SourceEdges_" + name, ifil, nro_cas) + groupe = edgesCircPipeGroup[boutFromIfil[ifil]] + logging.info("UseExisting1DElements sur la géométrie '%s' avec les mailles de '%s'", \ + edgeCirc.GetName(), groupe.GetName()) + algo1d = meshFacePeau.UseExisting1DElements(geom=edgeCirc) # addToStudy() failed ? + putName(algo1d.GetSubMesh(), groupe.GetName(), i_pref=nro_cas) + hypo1d = algo1d.SourceEdges([ groupe ],0,0) + putName(hypo1d, "SourceEdges_{}".format(groupe.GetName()), i_pref=nro_cas) is_done = meshFacePeau.Compute() text = "meshFacePeau {} .Compute".format(ifil)