Tri dans le repérage des arêtes de peau

This commit is contained in:
Gérald NICOLAS 2021-04-19 15:53:53 +02:00
parent 89b205395d
commit e2f6c81304
9 changed files with 80 additions and 77 deletions

View File

@ -132,8 +132,8 @@ def construitFissureGenerale(shapesFissure, shapeFissureParams, \
# --- inventaire des faces de peau coupées par la fissure # --- inventaire des faces de peau coupées par la fissure
ptEdgeFond, fsFissuExt, edFisExtPe, edFisExtPi, \ ptEdgeFond, fsFissuExt, edFisExtPe, edFisExtPi, facesPeaux, edCircPeau, \
facesPeaux, edCircPeau, ptCircPeau, gpedgeBord, gpedgeVifs, edFissPeau, ptFisExtPi, \ gpedgeBord, gpedgeVifs, edFissPeau, ptFisExtPi, \
edgeRadFacePipePeau, facesPipePeau = \ edgeRadFacePipePeau, facesPipePeau = \
construitFissureGenerale_b( partitionsPeauFissFond, \ construitFissureGenerale_b( partitionsPeauFissFond, \
edgesPipeFiss, edgesFondFiss, wireFondFiss, aretesVivesC, \ edgesPipeFiss, edgesFondFiss, wireFondFiss, aretesVivesC, \
@ -201,7 +201,7 @@ def construitFissureGenerale(shapesFissure, shapeFissureParams, \
# --- maillage faces de peau # --- maillage faces de peau
meshesFacesPeau = mailleFacesPeau(partitionsPeauFissFond, idFillingFromBout, facesDefaut, \ meshesFacesPeau = mailleFacesPeau(partitionsPeauFissFond, idFillingFromBout, facesDefaut, \
facesPeaux, edCircPeau, ptCircPeau, gpedgeBord, gpedgeVifs, edFissPeau, \ facesPeaux, edCircPeau, gpedgeBord, gpedgeVifs, edFissPeau, \
bordsLibres, grpEdgesPeauFissureExterne, grpAretesVives, \ bordsLibres, grpEdgesPeauFissureExterne, grpAretesVives, \
edgesCircPipeGroup, dmoyen, rayonPipe, nbsegRad, \ edgesCircPipeGroup, dmoyen, rayonPipe, nbsegRad, \
mailleur, nro_cas) mailleur, nro_cas)

View File

@ -50,7 +50,6 @@ pour chaque face de peau : 0, 1 ou 2 faces débouchante du fond de fissure
edFisExtPi = [ list() for _ in range(nbFacesFilling)] # pour chaque face [edge commun au pipe des faces de fissure externes] edFisExtPi = [ list() for _ in range(nbFacesFilling)] # pour chaque face [edge commun au pipe des faces de fissure externes]
facesPeaux = [None for _ in range(nbFacesFilling)] # pour chaque face : la face de peau finale a mailler (percée des faces débouchantes) facesPeaux = [None for _ in range(nbFacesFilling)] # pour chaque face : la face de peau finale a mailler (percée des faces débouchantes)
edCircPeau = [ list() for _ in range(nbFacesFilling)] # pour chaque face de peau : [subshape edge circulaire aux débouchés du pipe] edCircPeau = [ list() for _ in range(nbFacesFilling)] # pour chaque face de peau : [subshape edge circulaire aux débouchés du pipe]
ptCircPeau = [ list() for _ in range(nbFacesFilling)] # pour chaque face de peau : [subshape point sur edge circulaire aux débouchés du pipe]
gpedgeBord = [None for _ in range(nbFacesFilling)] # pour chaque face de peau : groupe subshape des edges aux bords liés à la partie saine gpedgeBord = [None for _ in range(nbFacesFilling)] # pour chaque face de peau : groupe subshape des edges aux bords liés à la partie saine
gpedgeVifs = [None for _ in range(nbFacesFilling)] # pour chaque face de peau : groupes subshape des edges aux arêtes vives entre fillings gpedgeVifs = [None for _ in range(nbFacesFilling)] # pour chaque face de peau : groupes subshape des edges aux arêtes vives entre fillings
edFissPeau = [ list() for _ in range(nbFacesFilling)] # pour chaque face de peau : [subshape edge en peau des faces de fissure externes] edFissPeau = [ list() for _ in range(nbFacesFilling)] # pour chaque face de peau : [subshape edge en peau des faces de fissure externes]
@ -70,7 +69,6 @@ pour chaque face de peau : 0, 1 ou 2 faces débouchante du fond de fissure
edFisExtPi[ifil] = dataPPFF['edgesFissExtPipe'] edFisExtPi[ifil] = dataPPFF['edgesFissExtPipe']
facesPeaux[ifil] = dataPPFF['facePeau'] facesPeaux[ifil] = dataPPFF['facePeau']
edCircPeau[ifil] = dataPPFF['edgesCircPeau'] edCircPeau[ifil] = dataPPFF['edgesCircPeau']
ptCircPeau[ifil] = dataPPFF['verticesCircPeau']
gpedgeBord[ifil] = dataPPFF['groupEdgesBordPeau'] gpedgeBord[ifil] = dataPPFF['groupEdgesBordPeau']
gpedgeVifs[ifil] = dataPPFF['bordsVifs'] gpedgeVifs[ifil] = dataPPFF['bordsVifs']
edFissPeau[ifil] = dataPPFF['edgesFissurePeau'] edFissPeau[ifil] = dataPPFF['edgesFissurePeau']
@ -87,5 +85,5 @@ pour chaque face de peau : 0, 1 ou 2 faces débouchante du fond de fissure
geomPublish(initLog.debug, avc, name, nro_cas) geomPublish(initLog.debug, avc, name, nro_cas)
return ptEdgeFond, fsFissuExt, edFisExtPe, edFisExtPi, facesPeaux, edCircPeau, \ return ptEdgeFond, fsFissuExt, edFisExtPe, edFisExtPi, facesPeaux, edCircPeau, \
ptCircPeau, gpedgeBord, gpedgeVifs, edFissPeau, ptFisExtPi, \ gpedgeBord, gpedgeVifs, edFissPeau, ptFisExtPi, \
edgeRadFacePipePeau, facesPipePeau edgeRadFacePipePeau, facesPipePeau

View File

@ -57,6 +57,6 @@ def identifieEdgesPeau(edgesFissExtPipe, verticesPipePeau, facePeau, facesPeauSo
# --- 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
edgesFissurePeau = identifieEdgesPeau_c(verticesPipePeau, facePeau, edgesListees, verticesCircPeau) edgesFissurePeau = identifieEdgesPeau_c(verticesPipePeau, facePeau, edgesListees, verticesCircPeau)
return (endsEdgeFond, facesPipePeau, edgeRadFacePipePeau, return (endsEdgeFond, facesPipePeau, edgeRadFacePipePeau, \
edgesCircPeau, verticesCircPeau, groupEdgesBordPeau, edgesCircPeau, groupEdgesBordPeau, \
bordsVifs, edgesFissurePeau, aretesVivesCoupees) bordsVifs, edgesFissurePeau, aretesVivesCoupees)

View File

@ -32,6 +32,7 @@ def identifieEdgesPeau_a(edgesFissExtPipe, facePeau, facesPeauSorted, edgesPeauF
nro_cas=None): nro_cas=None):
"""Identification précise des edges et disques des faces de peau selon index extremité fissure""" """Identification précise des edges et disques des faces de peau selon index extremité fissure"""
logging.info('start') logging.info('start')
logging.info("Traitement des arêtes de '%s'", facePeau.GetName())
for face in facesPeauSorted[:-1]: # la ou les faces débouchantes, pas la grande 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") logging.debug("examen face debouchante circulaire")
@ -46,7 +47,6 @@ def identifieEdgesPeau_a(edgesFissExtPipe, facePeau, facesPeauSorted, edgesPeauF
sharedVertices = geompy.GetSharedShapesMulti([face, edgesPeauFondIn[j_aux_0]], geompy.ShapeType["VERTEX"]) sharedVertices = geompy.GetSharedShapesMulti([face, edgesPeauFondIn[j_aux_0]], geompy.ShapeType["VERTEX"])
nameFace = "facePipePeau_{}".format(i_aux) nameFace = "facePipePeau_{}".format(i_aux)
nameVert = "endEdgeFond_{}".format(i_aux) nameVert = "endEdgeFond_{}".format(i_aux)
nameEdge = "edgeRadFacePipePeau_{}".format(i_aux)
facesPipePeau[i_aux] = face facesPipePeau[i_aux] = face
endsEdgeFond[i_aux] = sharedVertices[0] endsEdgeFond[i_aux] = sharedVertices[0]
geomPublish(initLog.debug, face, nameFace, nro_cas) geomPublish(initLog.debug, face, nameFace, nro_cas)
@ -55,29 +55,30 @@ def identifieEdgesPeau_a(edgesFissExtPipe, facePeau, facesPeauSorted, edgesPeauF
for edge in edgesFace: for edge in edgesFace:
if geompy.MinDistance(edge, sharedVertices[0]) < 1e-3: if geompy.MinDistance(edge, sharedVertices[0]) < 1e-3:
edgeRadFacePipePeau[i_aux] = edge edgeRadFacePipePeau[i_aux] = edge
nameEdge = "edgeRadFacePipePeau_{}".format(i_aux)
geomPublish(initLog.debug, edge, nameEdge, nro_cas) geomPublish(initLog.debug, edge, nameEdge, nro_cas)
break break
# --- edges elliptiques de la face de peau et points de jonction de la face externe de fissure # --- 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()) logging.info('Nombre de faces : len(facesPipePeau) = %d', len(facesPipePeau))
edgesCircPeau = [None for _ in range(len(facesPipePeau))] edgesCircPeau = list()
verticesCircPeau = [None for _ in range(len(facesPipePeau))] verticesCircPeau = list()
for i_aux,fcirc in enumerate(facesPipePeau): for i_aux,fcirc in enumerate(facesPipePeau):
logging.info(". Partage avec la face '%s'", fcirc.GetName()) # Arêtes
edges = geompy.GetSharedShapesMulti([facePeau, fcirc], geompy.ShapeType["EDGE"]) edges = geompy.GetSharedShapesMulti([facePeau, fcirc], geompy.ShapeType["EDGE"])
grpEdgesCirc = geompy.CreateGroup(facePeau, geompy.ShapeType["EDGE"]) groupe = geompy.CreateGroup(facePeau, geompy.ShapeType["EDGE"])
geompy.UnionList(grpEdgesCirc, edges) geompy.UnionList(groupe, edges)
edgesCircPeau[i_aux] = grpEdgesCirc geomPublishInFather(initLog.always, facePeau, groupe, "edgeCirc_{}".format(i_aux))
name = "edgeCirc_{}".format(i_aux) edgesCircPeau.append(groupe)
geomPublishInFather(initLog.always, facePeau, grpEdgesCirc, name)
edgesListees = edgesListees + edges edgesListees = edgesListees + edges
# Sommets
vertices = geompy.GetSharedShapesMulti([facePeau, fcirc], geompy.ShapeType["VERTEX"]) vertices = geompy.GetSharedShapesMulti([facePeau, fcirc], geompy.ShapeType["VERTEX"])
grpVertCircPeau = geompy.CreateGroup(facePeau, geompy.ShapeType["VERTEX"]) groupe = geompy.CreateGroup(facePeau, geompy.ShapeType["VERTEX"])
geompy.UnionList(grpVertCircPeau, vertices) geompy.UnionList(groupe, vertices)
verticesCircPeau[i_aux] = grpVertCircPeau geomPublishInFather(initLog.info, facePeau, groupe, "point(s)EdgeCirc_{}".format(i_aux))
name = "pointEdgeCirc_{}".format(i_aux) verticesCircPeau.append(groupe)
geomPublishInFather(initLog.info, facePeau, grpVertCircPeau, name)
logging.info('==> Nombre de sommets : len(verticesCircPeau) = %d', len(verticesCircPeau)) logging.info("==> Nombre de groupes d'arêtes : len(edgesCircPeau) = %d", len(edgesCircPeau))
logging.info("==> Nombre de groupes de sommets : len(verticesCircPeau) = %d", len(verticesCircPeau))
return edgesCircPeau, verticesCircPeau return edgesCircPeau, verticesCircPeau

View File

@ -32,7 +32,9 @@ def identifieEdgesPeau_b(facePeau, edgesListees, \
"""edges de bord de la face de peau""" """edges de bord de la face de peau"""
logging.info('start') logging.info('start')
# Liste des arêtes de bord
edgesFilling = geompy.ExtractShapes(fillingFaceExterne, geompy.ShapeType["EDGE"], False) edgesFilling = geompy.ExtractShapes(fillingFaceExterne, geompy.ShapeType["EDGE"], False)
logging.info('Détermination des arêtes de bord à partir des %d arêtes de fillingFaceExterne', len(edgesFilling))
edgesBords = list() edgesBords = list()
for i_aux, edge in enumerate(edgesFilling): for i_aux, edge in enumerate(edgesFilling):
edgepeau = geompy.GetInPlace(facePeau, edge) edgepeau = geompy.GetInPlace(facePeau, edge)
@ -42,18 +44,19 @@ def identifieEdgesPeau_b(facePeau, edgesListees, \
if geompy.ShapeInfo(edgepeau)['EDGE'] > 1: if geompy.ShapeInfo(edgepeau)['EDGE'] > 1:
logging.debug(" EDGES multiples") logging.debug(" EDGES multiples")
l_edges = geompy.ExtractShapes(edgepeau, geompy.ShapeType["EDGE"], False) l_edges = geompy.ExtractShapes(edgepeau, geompy.ShapeType["EDGE"], False)
edgesBords += l_edges edgesBords.extend(l_edges)
edgesListees += l_edges edgesListees.extend(l_edges)
else: else:
logging.debug(" EDGE") logging.debug(" EDGE")
edgesBords.append(edgepeau) edgesBords.append(edgepeau)
edgesListees.append(edgepeau) edgesListees.append(edgepeau)
logging.info('==> Nombre d arêtes de bord : len(edgesBords) = %d', len(edgesBords))
groupEdgesBordPeau = geompy.CreateGroup(facePeau, geompy.ShapeType["EDGE"]) groupEdgesBordPeau = geompy.CreateGroup(facePeau, geompy.ShapeType["EDGE"])
geompy.UnionList(groupEdgesBordPeau, edgesBords) geompy.UnionList(groupEdgesBordPeau, edgesBords)
bordsVifs = None bordsVifs = None
if aretesVivesC is not None: if aretesVivesC is not None:
logging.debug("identification des bords vifs par GetInPlace") logging.info("identification des bords vifs par GetInPlace")
bordsVifs = geompy.GetInPlace(facePeau, aretesVivesC) bordsVifs = geompy.GetInPlace(facePeau, aretesVivesC)
if bordsVifs is None: if bordsVifs is None:
logging.debug("pas d'identification des bords vifs par GetInPlace: test par distance") logging.debug("pas d'identification des bords vifs par GetInPlace: test par distance")
@ -69,7 +72,8 @@ def identifieEdgesPeau_b(facePeau, edgesListees, \
if ( dist < 0.001 ): if ( dist < 0.001 ):
edvifs.append(edge) edvifs.append(edge)
break break
if len(edvifs) >0: if edvifs:
logging.info('==> Nombre d arêtes de bord vif : len(edvifs) = %d', len(edvifs))
bordsVifs = geompy.CreateGroup(facePeau,geompy.ShapeType["EDGE"]) bordsVifs = geompy.CreateGroup(facePeau,geompy.ShapeType["EDGE"])
for edge in edvifs: for edge in edvifs:
geompy.AddObject(bordsVifs, geompy.GetSubShapeID(facePeau, edge)) geompy.AddObject(bordsVifs, geompy.GetSubShapeID(facePeau, edge))

View File

@ -33,38 +33,39 @@ def identifieEdgesPeau_c(verticesPipePeau, facePeau, edgesListees, verticesCircP
logging.info('start') logging.info('start')
logging.info("Traitement des arêtes de '%s'", facePeau.GetName()) logging.info("Traitement des arêtes de '%s'", facePeau.GetName())
logging.info('Nombre de sommets : len(verticesPipePeau) = %d', len(verticesPipePeau)) 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) edgesPeau = geompy.ExtractShapes(facePeau, geompy.ShapeType["EDGE"], False)
logging.info('Nombre total d arêtes de la peau : len(edgesPeau) = %d', len(edgesPeau)) logging.info('Nombre total d arêtes de la peau : len(edgesPeau) = %d', len(edgesPeau))
edges = substractSubShapes(facePeau, edgesPeau, edgesListees) edges = substractSubShapes(facePeau, edgesPeau, edgesListees)
edgesFissurePeau = list() l_edge_cercle = list()
# --- au moins une extrémité du pipe sur cette face de peau # --- au moins une extrémité du pipe sur cette face de peau : arêtes sui les prenent toutes
if verticesPipePeau: if verticesPipePeau:
# En premier, les edges associés aux extrémités du pipe i_aux = -1
edgesFissurePeau = [None for _ in range(len(verticesCircPeau))]
for edge in edges: for edge in edges:
for i_aux, vertex in enumerate(verticesCircPeau): for groupe in verticesCircPeau:
logging.info(".. distance %s", geompy.MinDistance(vertex, edge)) cercle = True
if ( ( geompy.MinDistance(vertex, edge) < 1.e-3 ) and ( edge not in edgesFissurePeau ) ): for id_vertex in geompy.GetObjectIDs(groupe):
edgesFissurePeau[i_aux] = edge vertex = geompy.GetSubShape(facePeau, [id_vertex])
name = "edgeFissurePeau_{}".format(i_aux) distance = geompy.MinDistance(vertex, edge)
logging.info("... entrée de %s à la place %d", edge, i_aux) logging.info(".. distance %s", distance)
geomPublishInFather(initLog.debug, facePeau, edge, name) if ( distance > 1.e-3 ):
# Ensuite, on ajoute les edges manquantes cercle = False
for edge in edges: break
if edge not in edgesFissurePeau: if cercle:
logging.info("... ajout") logging.info("... entrée de %s dans l_edge_cercle", edge)
edgesFissurePeau.append(edge) l_edge_cercle.append(edge)
i_aux += 1
name = "edgeFissurePeauCercle_{}".format(i_aux)
geomPublishInFather(initLog.info, facePeau, edge, name)
else: # --- Les arêtes n'appartenant pas aux cercles
edgesFissurePeau = list()
for i_aux, edge in enumerate(edges): for i_aux, edge in enumerate(edges):
if edge not in l_edge_cercle:
edgesFissurePeau.append(edge) edgesFissurePeau.append(edge)
name = "edgeFissurePeau{}".format(i_aux) 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)) logging.info('==> Nombre d arêtes : len(edgesFissurePeau) = %d', len(edgesFissurePeau))

View File

@ -27,10 +27,9 @@ from .trouveEdgesFissPeau import trouveEdgesFissPeau
from .identifieFacesPeau import identifieFacesPeau from .identifieFacesPeau import identifieFacesPeau
from .identifieEdgesPeau import identifieEdgesPeau from .identifieEdgesPeau import identifieEdgesPeau
def identifieElementsGeometriquesPeau(ifil, partitionPeauFissFond, edgesPipeFiss, \ def identifieElementsGeometriquesPeau(ifil, partitionPeauFissFond, \
edgesFondFiss, wireFondFiss, aretesVivesC, \ edgesPipeFiss, edgesFondFiss, wireFondFiss, aretesVivesC, \
facesDefaut, centreFondFiss, rayonPipe, \ facesDefaut, centreFondFiss, rayonPipe, aretesVivesCoupees, \
aretesVivesCoupees, \
nro_cas=None): nro_cas=None):
"""Identification des éléments géométriques de la face de peau""" """Identification des éléments géométriques de la face de peau"""
logging.info('start') logging.info('start')
@ -69,7 +68,8 @@ def identifieElementsGeometriquesPeau(ifil, partitionPeauFissFond, edgesPipeFiss
# --- identification précise des edges et disques des faces de peau selon index extremité fissure # --- identification précise des edges et disques des faces de peau selon index extremité fissure
(endsEdgeFond, facesPipePeau, edgeRadFacePipePeau, edgesCircPeau, verticesCircPeau, groupEdgesBordPeau, \ (endsEdgeFond, facesPipePeau, edgeRadFacePipePeau, \
edgesCircPeau, groupEdgesBordPeau, \
bordsVifs, edgesFissurePeau, aretesVivesCoupees) = \ bordsVifs, edgesFissurePeau, aretesVivesCoupees) = \
identifieEdgesPeau(edgesFissExtPipe, verticesPipePeau, facePeau, facesPeauSorted, \ identifieEdgesPeau(edgesFissExtPipe, verticesPipePeau, facePeau, facesPeauSorted, \
edgesPeauFondIn, fillingFaceExterne, aretesVivesC, aretesVivesCoupees, \ edgesPeauFondIn, fillingFaceExterne, aretesVivesC, aretesVivesCoupees, \
@ -83,7 +83,6 @@ def identifieElementsGeometriquesPeau(ifil, partitionPeauFissFond, edgesPipeFiss
edgesFissExtPipe = edgesFissExtPipe, # pour chaque face [edge commun au pipe des faces de fissure externes] edgesFissExtPipe = edgesFissExtPipe, # pour chaque face [edge commun au pipe des faces de fissure externes]
facePeau = facePeau, # pour chaque face : la face de peau finale a mailler (percee des faces débouchantes) facePeau = facePeau, # pour chaque face : la face de peau finale a mailler (percee des faces débouchantes)
edgesCircPeau = edgesCircPeau, # pour chaque face de peau : [groupe subshapes edges circulaires aux débouchés du pipe] edgesCircPeau = edgesCircPeau, # pour chaque face de peau : [groupe subshapes edges circulaires aux débouchés du pipe]
verticesCircPeau = verticesCircPeau, # pour chaque face de peau : [groupe subshapes points sur edges circulaires aux débouchés du pipe]
groupEdgesBordPeau = groupEdgesBordPeau, # pour chaque face de peau : groupe subshape des edges aux bords liés à la partie saine groupEdgesBordPeau = groupEdgesBordPeau, # pour chaque face de peau : groupe subshape des edges aux bords liés à la partie saine
bordsVifs = bordsVifs, # pour chaque face de peau : groupe subshape des edges aux bords correspondant à des arêtes vives bordsVifs = bordsVifs, # pour chaque face de peau : groupe subshape des edges aux bords correspondant à des arêtes vives
edgesFissurePeau = edgesFissurePeau, # pour chaque face de peau : [subshape edge en peau des faces de fissure externes] edgesFissurePeau = edgesFissurePeau, # pour chaque face de peau : [subshape edge en peau des faces de fissure externes]

View File

@ -60,7 +60,8 @@ def mailleFacesFissure(faceFissureExterne, \
hypo2d.SetQuadAllowed( 0 ) hypo2d.SetQuadAllowed( 0 )
putName(hypo2d, "faceFiss", i_pref=nro_cas) putName(hypo2d, "faceFiss", i_pref=nro_cas)
logging.info("UseExisting1DElements depuis '%s'", edgesPipeFissureExterneC.GetName()) logging.info("UseExisting1DElements sur la géométrie '%s' avec les mailles de '%s'", \
edgesPipeFissureExterneC.GetName(), edgeFaceFissGroup.GetName())
algo1d = meshFaceFiss.UseExisting1DElements(geom=edgesPipeFissureExterneC) algo1d = meshFaceFiss.UseExisting1DElements(geom=edgesPipeFissureExterneC)
putName(algo1d.GetSubMesh(), "edgeFissPeau", i_pref=nro_cas) putName(algo1d.GetSubMesh(), "edgeFissPeau", i_pref=nro_cas)
hypo1d = algo1d.SourceEdges([ edgeFaceFissGroup ],0,0) hypo1d = algo1d.SourceEdges([ edgeFaceFissGroup ],0,0)

View File

@ -34,7 +34,7 @@ from . import initLog
from .putName import putName from .putName import putName
def mailleFacesPeau(partitionsPeauFissFond, idFillingFromBout, facesDefaut, \ def mailleFacesPeau(partitionsPeauFissFond, idFillingFromBout, facesDefaut, \
facesPeaux, edCircPeau, ptCircPeau, gpedgeBord, gpedgeVifs, edFissPeau, \ facesPeaux, edCircPeau, gpedgeBord, gpedgeVifs, edFissPeau, \
bordsLibres, grpEdgesPeauFissureExterne, grpAretesVives, \ bordsLibres, grpEdgesPeauFissureExterne, grpAretesVives, \
edgesCircPipeGroup, dmoyen, rayonPipe, nbsegRad, \ edgesCircPipeGroup, dmoyen, rayonPipe, nbsegRad, \
mailleur="MeshGems", nro_cas=None): mailleur="MeshGems", nro_cas=None):
@ -91,13 +91,13 @@ def mailleFacesPeau(partitionsPeauFissFond, idFillingFromBout, facesDefaut, \
# --- edges de bord de la face de filling # --- edges de bord de la face de filling
filling = facesDefaut[ifil] filling = facesDefaut[ifil]
edgesFilling = geompy.ExtractShapes(filling, geompy.ShapeType["EDGE"], False) edgesFilling = geompy.ExtractShapes(filling, geompy.ShapeType["EDGE"], False)
groupEdgesBordPeau = geompy.CreateGroup(filling, geompy.ShapeType["EDGE"]) gpedgeBord[ifil] = geompy.CreateGroup(filling, geompy.ShapeType["EDGE"])
geompy.UnionList(groupEdgesBordPeau, edgesFilling) geompy.UnionList(gpedgeBord[ifil], edgesFilling)
geomPublishInFather(initLog.always, filling, groupEdgesBordPeau, "EdgesBords", nro_cas) geomPublishInFather(initLog.always, filling, gpedgeBord[ifil], "EdgesBords", nro_cas)
logging.info("UseExisting1DElements sur la géométrie '%s' avec les mailles de '%s'", \ logging.info("UseExisting1DElements sur la géométrie '%s' avec les mailles de '%s'", \
groupEdgesBordPeau.GetName(), bordsLibres.GetName()) gpedgeBord[ifil].GetName(), bordsLibres.GetName())
algo1d = meshFacePeau.UseExisting1DElements(geom=groupEdgesBordPeau) algo1d = meshFacePeau.UseExisting1DElements(geom=gpedgeBord[ifil])
putName(algo1d.GetSubMesh(), "bordsLibres", ifil, nro_cas) putName(algo1d.GetSubMesh(), "bordsLibres", ifil, nro_cas)
hypo1d = algo1d.SourceEdges([ bordsLibres ],0,0) hypo1d = algo1d.SourceEdges([ bordsLibres ],0,0)
putName(hypo1d, "SourceEdges_{}".format(bordsLibres.GetName()), ifil, nro_cas) putName(hypo1d, "SourceEdges_{}".format(bordsLibres.GetName()), ifil, nro_cas)
@ -105,21 +105,20 @@ def mailleFacesPeau(partitionsPeauFissFond, idFillingFromBout, facesDefaut, \
else: else:
logging.info("face de peau %d coupée par la fissure", ifil) logging.info("face de peau %d coupée par la fissure", ifil)
edgesCircPeau = edCircPeau[ifil] # pour chaque face de peau : [subshape edge circulaire aux débouchés du pipe] # edCircPeau[ifil] # pour chaque face de peau : [subshape edge circulaire aux débouchés du pipe]
_ = ptCircPeau[ifil] # pour chaque face de peau : [subshape point sur edge circulaire aux débouchés du pipe] # gpedgeBord[ifil] : pour chaque face de peau : groupe subshape des edges aux bords liés à la partie saine
groupEdgesBordPeau = gpedgeBord[ifil] # pour chaque face de peau : groupe subshape des edges aux bords liés à la partie saine # gpedgeVifs[ifil] : pour chaque face de peau : groupe subshape des edges aux bords correspondant à des arêtes vives
bordsVifs = gpedgeVifs[ifil] # pour chaque face de peau : groupe subshape des edges aux bords correspondant à des arêtes vives # edFissPeau[ifil] : pour chaque face de peau : [subshape edge en peau des faces de fissure externes]
edgesFissurePeau = edFissPeau[ifil] # pour chaque face de peau : [subshape edge en peau des faces de fissure externes]
logging.info("UseExisting1DElements sur la géométrie '%s' avec les mailles de '%s'", \ logging.info("UseExisting1DElements sur la géométrie '%s' avec les mailles de '%s'", \
groupEdgesBordPeau.GetName(), bordsLibres.GetName()) gpedgeBord[ifil].GetName(), bordsLibres.GetName())
algo1d = meshFacePeau.UseExisting1DElements(geom=groupEdgesBordPeau) algo1d = meshFacePeau.UseExisting1DElements(geom=gpedgeBord[ifil])
putName(algo1d.GetSubMesh(), "bordsLibres", ifil, nro_cas) putName(algo1d.GetSubMesh(), "bordsLibres", ifil, nro_cas)
hypo1d = algo1d.SourceEdges([ bordsLibres ],0,0) hypo1d = algo1d.SourceEdges([ bordsLibres ],0,0)
putName(hypo1d, "SourceEdges_{}".format(bordsLibres.GetName()), i_pref=nro_cas) putName(hypo1d, "SourceEdges_{}".format(bordsLibres.GetName()), i_pref=nro_cas)
objet = geompy.MakeCompound(edgesFissurePeau) objet = geompy.MakeCompound(edFissPeau[ifil])
geomPublishInFather(initLog.always, facePeau, objet, "edgesFissurePeau") geomPublishInFather(initLog.always, facePeau, objet, "edFissPeau_{}".format(ifil))
logging.info("UseExisting1DElements sur la géométrie '%s' avec les mailles de '%s'", \ logging.info("UseExisting1DElements sur la géométrie '%s' avec les mailles de '%s'", \
objet.GetName(), grpEdgesPeauFissureExterne.GetName()) objet.GetName(), grpEdgesPeauFissureExterne.GetName())
algo1d = meshFacePeau.UseExisting1DElements(geom=objet) algo1d = meshFacePeau.UseExisting1DElements(geom=objet)
@ -127,15 +126,15 @@ def mailleFacesPeau(partitionsPeauFissFond, idFillingFromBout, facesDefaut, \
hypo1d = algo1d.SourceEdges([ grpEdgesPeauFissureExterne ],0,0) hypo1d = algo1d.SourceEdges([ grpEdgesPeauFissureExterne ],0,0)
putName(hypo1d, "SourceEdges_{}".format(grpEdgesPeauFissureExterne.GetName()), i_pref=nro_cas) putName(hypo1d, "SourceEdges_{}".format(grpEdgesPeauFissureExterne.GetName()), i_pref=nro_cas)
if bordsVifs is not None: if gpedgeVifs[ifil] is not None:
logging.info("UseExisting1DElements sur la géométrie '%s' avec les mailles de '%s'", \ logging.info("UseExisting1DElements sur la géométrie '%s' avec les mailles de '%s'", \
bordsVifs.GetName(), grpAretesVives.GetName()) gpedgeVifs[ifil].GetName(), grpAretesVives.GetName())
algo1d = meshFacePeau.UseExisting1DElements(geom=bordsVifs) algo1d = meshFacePeau.UseExisting1DElements(geom=gpedgeVifs[ifil])
putName(algo1d.GetSubMesh(), "bordsVifs", ifil, nro_cas) putName(algo1d.GetSubMesh(), "gpedgeVifs", ifil, nro_cas)
hypo1d = algo1d.SourceEdges([ grpAretesVives ],0,0) hypo1d = algo1d.SourceEdges([ grpAretesVives ],0,0)
putName(hypo1d, "SourceEdges_{}".format(grpAretesVives.GetName()), i_pref=nro_cas) putName(hypo1d, "SourceEdges_{}".format(grpAretesVives.GetName()), i_pref=nro_cas)
for i_aux, edgeCirc in enumerate(edgesCircPeau): for i_aux, edgeCirc in enumerate(edCircPeau[ifil]):
texte = "i_aux = {}".format(i_aux) texte = "i_aux = {}".format(i_aux)
logging.info(texte) logging.info(texte)
if edgeCirc is not None: if edgeCirc is not None: