mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-12-25 17:00: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):
|
||||
"""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,
|
||||
|
@ -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
|
||||
|
@ -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:
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user