mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-12-26 09:20:34 +05:00
pilotage de sfaces de peua
This commit is contained in:
parent
ea7070c2c8
commit
953204ba55
@ -30,13 +30,15 @@ def identifieEdgesPeau(edgesFissExtPipe, verticesPipePeau, facePeau, facesPeauSo
|
|||||||
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('Nombre de sommets : len(verticesPipePeau) = %d', len(verticesPipePeau))
|
||||||
|
|
||||||
facesPipePeau = [None for _ in range(len(edgesFissExtPipe))]
|
facesPipePeau = [None for _ in range(len(edgesFissExtPipe))]
|
||||||
endsEdgeFond = [None for _ in range(len(edgesFissExtPipe))]
|
endsEdgeFond = [None for _ in range(len(edgesFissExtPipe))]
|
||||||
edgeRadFacePipePeau = [None for _ in range(len(edgesFissExtPipe))]
|
edgeRadFacePipePeau = [None for _ in range(len(edgesFissExtPipe))]
|
||||||
|
|
||||||
edgesListees = list()
|
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, \
|
edgesCircPeau, verticesCircPeau = identifieEdgesPeau_a(edgesFissExtPipe, facePeau, facesPeauSorted, edgesPeauFondIn, \
|
||||||
endsEdgeFond, facesPipePeau, edgeRadFacePipePeau, edgesListees, \
|
endsEdgeFond, facesPipePeau, edgeRadFacePipePeau, edgesListees, \
|
||||||
@ -53,7 +55,6 @@ def identifieEdgesPeau(edgesFissExtPipe, verticesPipePeau, facePeau, facesPeauSo
|
|||||||
nro_cas)
|
nro_cas)
|
||||||
|
|
||||||
# --- 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,
|
||||||
|
@ -44,9 +44,9 @@ def identifieEdgesPeau_a(edgesFissExtPipe, facePeau, facesPeauSorted, edgesPeauF
|
|||||||
j_aux_0 = j_aux
|
j_aux_0 = j_aux
|
||||||
break
|
break
|
||||||
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)
|
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)
|
||||||
@ -58,23 +58,26 @@ def identifieEdgesPeau_a(edgesFissExtPipe, facePeau, facesPeauSorted, edgesPeauF
|
|||||||
geomPublish(initLog.debug, edge, nameEdge, nro_cas)
|
geomPublish(initLog.debug, edge, nameEdge, nro_cas)
|
||||||
break
|
break
|
||||||
|
|
||||||
# --- edges circulaires 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.debug("facesPipePeau: %s", facesPipePeau)
|
logging.info("Traitement des arêtes de '%s'", facePeau.GetName())
|
||||||
edgesCircPeau = [None for _ in range(len(facesPipePeau))]
|
edgesCircPeau = [None for _ in range(len(facesPipePeau))]
|
||||||
verticesCircPeau = [None for _ in range(len(facesPipePeau))]
|
verticesCircPeau = [None for _ in range(len(facesPipePeau))]
|
||||||
for i_aux,fcirc in enumerate(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"])
|
edges = geompy.GetSharedShapesMulti([facePeau, fcirc], geompy.ShapeType["EDGE"])
|
||||||
grpEdgesCirc = geompy.CreateGroup(facePeau, geompy.ShapeType["EDGE"])
|
grpEdgesCirc = geompy.CreateGroup(facePeau, geompy.ShapeType["EDGE"])
|
||||||
geompy.UnionList(grpEdgesCirc, edges)
|
geompy.UnionList(grpEdgesCirc, edges)
|
||||||
edgesCircPeau[i_aux] = grpEdgesCirc
|
edgesCircPeau[i_aux] = grpEdgesCirc
|
||||||
name = "edgeCirc{}".format(i_aux)
|
name = "edgeCirc_{}".format(i_aux)
|
||||||
geomPublishInFather(initLog.always, facePeau, grpEdgesCirc, name)
|
geomPublishInFather(initLog.always, facePeau, grpEdgesCirc, name)
|
||||||
edgesListees = edgesListees + edges
|
edgesListees = edgesListees + edges
|
||||||
vertices = geompy.GetSharedShapesMulti([facePeau, fcirc], geompy.ShapeType["VERTEX"])
|
vertices = geompy.GetSharedShapesMulti([facePeau, fcirc], geompy.ShapeType["VERTEX"])
|
||||||
grpVertCircPeau = geompy.CreateGroup(facePeau, geompy.ShapeType["VERTEX"])
|
grpVertCircPeau = geompy.CreateGroup(facePeau, geompy.ShapeType["VERTEX"])
|
||||||
geompy.UnionList(grpVertCircPeau, vertices)
|
geompy.UnionList(grpVertCircPeau, vertices)
|
||||||
verticesCircPeau[i_aux] = grpVertCircPeau
|
verticesCircPeau[i_aux] = grpVertCircPeau
|
||||||
name = "pointEdgeCirc{}".format(i_aux)
|
name = "pointEdgeCirc_{}".format(i_aux)
|
||||||
geomPublishInFather(initLog.debug, facePeau, grpVertCircPeau, name)
|
geomPublishInFather(initLog.info, facePeau, grpVertCircPeau, name)
|
||||||
|
|
||||||
|
logging.info('==> Nombre de sommets : len(verticesCircPeau) = %d', len(verticesCircPeau))
|
||||||
|
|
||||||
return edgesCircPeau, verticesCircPeau
|
return edgesCircPeau, verticesCircPeau
|
||||||
|
@ -36,7 +36,7 @@ def identifieEdgesPeau_b(facePeau, edgesListees, \
|
|||||||
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)
|
||||||
name = "edgepeau{}".format(i_aux)
|
name = "edgepeau_{}".format(i_aux)
|
||||||
geomPublishInFather(initLog.debug, facePeau,edgepeau, name)
|
geomPublishInFather(initLog.debug, facePeau,edgepeau, name)
|
||||||
logging.debug("edgepeau %s", geompy.ShapeInfo(edgepeau))
|
logging.debug("edgepeau %s", geompy.ShapeInfo(edgepeau))
|
||||||
if geompy.ShapeInfo(edgepeau)['EDGE'] > 1:
|
if geompy.ShapeInfo(edgepeau)['EDGE'] > 1:
|
||||||
|
@ -31,27 +31,42 @@ from .substractSubShapes import substractSubShapes
|
|||||||
def identifieEdgesPeau_c(verticesPipePeau, facePeau, edgesListees, verticesCircPeau):
|
def identifieEdgesPeau_c(verticesPipePeau, facePeau, edgesListees, verticesCircPeau):
|
||||||
"""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"""
|
||||||
logging.info('start')
|
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)
|
edgesPeau = geompy.ExtractShapes(facePeau, geompy.ShapeType["EDGE"], False)
|
||||||
edges = substractSubShapes(facePeau, edgesPeau, edgesListees)
|
logging.info('Nombre total d arêtes de la peau : len(edgesPeau) = %d', len(edgesPeau))
|
||||||
edgesFissurePeau = list()
|
|
||||||
|
|
||||||
if len(verticesPipePeau) > 0: # --- au moins une extrémité du pipe sur cette face de peau
|
edges = substractSubShapes(facePeau, edgesPeau, edgesListees)
|
||||||
edgesFissurePeau = [None for _ in range(len(verticesCircPeau))] # edges associés aux extrémités du pipe, en premier
|
|
||||||
|
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 edge in edges:
|
||||||
for i_aux, grpVert in enumerate(verticesCircPeau):
|
for i_aux, vertex in enumerate(verticesCircPeau):
|
||||||
if (geompy.MinDistance(grpVert, edge) < 1.e-3) and (edge not in edgesFissurePeau):
|
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
|
edgesFissurePeau[i_aux] = edge
|
||||||
name = "edgeFissurePeau{}".format(i_aux)
|
name = "edgeFissurePeau_{}".format(i_aux)
|
||||||
geomPublishInFather(initLog.debug, facePeau, edge, name)
|
logging.info("... entrée de %s à la place %d", edge, i_aux)
|
||||||
for edge in edges: # on ajoute après les edges manquantes
|
geomPublishInFather(initLog.debug, facePeau, edge, name)
|
||||||
|
# Ensuite, on ajoute les edges manquantes
|
||||||
|
for edge in edges:
|
||||||
if edge not in edgesFissurePeau:
|
if edge not in edgesFissurePeau:
|
||||||
|
logging.info("... ajout")
|
||||||
edgesFissurePeau.append(edge)
|
edgesFissurePeau.append(edge)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
for i_aux, edge in enumerate(edges):
|
for i_aux, edge in enumerate(edges):
|
||||||
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))
|
||||||
|
|
||||||
return edgesFissurePeau
|
return edgesFissurePeau
|
||||||
|
@ -95,7 +95,8 @@ def mailleFacesPeau(partitionsPeauFissFond, idFillingFromBout, facesDefaut, \
|
|||||||
geompy.UnionList(groupEdgesBordPeau, edgesFilling)
|
geompy.UnionList(groupEdgesBordPeau, edgesFilling)
|
||||||
geomPublishInFather(initLog.always, filling, groupEdgesBordPeau, "EdgesBords", nro_cas)
|
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)
|
algo1d = meshFacePeau.UseExisting1DElements(geom=groupEdgesBordPeau)
|
||||||
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)
|
||||||
@ -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
|
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]
|
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)
|
algo1d = meshFacePeau.UseExisting1DElements(geom=groupEdgesBordPeau)
|
||||||
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()), i_pref=nro_cas)
|
||||||
|
|
||||||
objet = geompy.MakeCompound(edgesFissurePeau)
|
objet = geompy.MakeCompound(edgesFissurePeau)
|
||||||
geomPublishInFather(initLog.always, facePeau, objet, "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)
|
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)
|
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:
|
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)
|
algo1d = meshFacePeau.UseExisting1DElements(geom=bordsVifs)
|
||||||
putName(algo1d.GetSubMesh(), "bordsVifs", ifil, nro_cas)
|
putName(algo1d.GetSubMesh(), "bordsVifs", ifil, nro_cas)
|
||||||
hypo1d = algo1d.SourceEdges([ grpAretesVives ],0,0)
|
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):
|
for i_aux, edgeCirc in enumerate(edgesCircPeau):
|
||||||
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:
|
||||||
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:
|
if boutFromIfil[ifil] is None:
|
||||||
hypo1d = algo1d.SourceEdges([ edgesCircPipeGroup[i_aux] ],0,0)
|
groupe = edgesCircPipeGroup[i_aux]
|
||||||
else:
|
else:
|
||||||
hypo1d = algo1d.SourceEdges([ edgesCircPipeGroup[boutFromIfil[ifil]] ],0,0)
|
groupe = edgesCircPipeGroup[boutFromIfil[ifil]]
|
||||||
putName(hypo1d, "SourceEdges_" + name, ifil, nro_cas)
|
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()
|
is_done = meshFacePeau.Compute()
|
||||||
text = "meshFacePeau {} .Compute".format(ifil)
|
text = "meshFacePeau {} .Compute".format(ifil)
|
||||||
|
Loading…
Reference in New Issue
Block a user