mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-11-12 00:29:17 +05:00
remplacement de print et corrections mineures
This commit is contained in:
parent
d1d19caf57
commit
b5aa15f7ca
@ -129,7 +129,7 @@ runall = False
|
|||||||
if runall:
|
if runall:
|
||||||
torun = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,]
|
torun = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,]
|
||||||
else: #prob 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27
|
else: #prob 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27
|
||||||
torun = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1,]
|
torun = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,]
|
||||||
|
|
||||||
for i in range(len(problemes)):
|
for i in range(len(problemes)):
|
||||||
if torun[i]:
|
if torun[i]:
|
||||||
|
@ -12,7 +12,7 @@ def creeZoneDefautMaillage(maillagesSains, shapeDefaut, tailleDefaut,
|
|||||||
nomZones, coordsNoeudsFissure):
|
nomZones, coordsNoeudsFissure):
|
||||||
"""
|
"""
|
||||||
Identification de la zone à remailler, opérations sur le maillage
|
Identification de la zone à remailler, opérations sur le maillage
|
||||||
de l'objet sain
|
de l'objet sain.
|
||||||
La zone à remailler est définie à partir d'un objet géométrique
|
La zone à remailler est définie à partir d'un objet géométrique
|
||||||
ou à partir d'un jeu de points et d'une distance d'influence.
|
ou à partir d'un jeu de points et d'une distance d'influence.
|
||||||
@param maillagesSains : (le maillage de l'objet initial, booleen isHexa)
|
@param maillagesSains : (le maillage de l'objet initial, booleen isHexa)
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
"""
|
"""
|
||||||
Created on Tue Jun 24 09:14:13 2014
|
Created on Tue Jun 24 09:14:13 2014
|
||||||
|
|
||||||
@author: I48174
|
@author: I48174 (Olivier HOAREAU)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
@ -48,16 +48,19 @@ def fusionMaillageDefaut(maillageSain, maillageDefautCible, maillageInterneCible
|
|||||||
# A partir des lignes de la face,
|
# A partir des lignes de la face,
|
||||||
# on recrée un objet GEOM temporaire par filling.
|
# on recrée un objet GEOM temporaire par filling.
|
||||||
filling = geompy.MakeFilling(geompy.MakeCompound(setOfLines), 2, 5, 0.0001, 0.0001, 0, GEOM.FOM_Default, True)
|
filling = geompy.MakeFilling(geompy.MakeCompound(setOfLines), 2, 5, 0.0001, 0.0001, 0, GEOM.FOM_Default, True)
|
||||||
geompy.addToStudy(filling, 'filling_{0}'.format(i + 1))
|
#logging.debug("face de filling")
|
||||||
|
#geompy.addToStudy(filling, 'filling_{0}'.format(i + 1))
|
||||||
|
|
||||||
tmpPartition = geompy.MakePartition([filling], [shapeDefaut], [], [], geompy.ShapeType["FACE"], 0, [], 0, True)
|
tmpPartition = geompy.MakePartition([filling], [shapeDefaut], [], [], geompy.ShapeType["FACE"], 0, [], 0)
|
||||||
tmpExplodeRef = geompy.ExtractShapes(filling, geompy.ShapeType["EDGE"], True)
|
tmpExplodeRef = geompy.ExtractShapes(filling, geompy.ShapeType["EDGE"], True)
|
||||||
tmpExplodeNum = geompy.ExtractShapes(tmpPartition, geompy.ShapeType["EDGE"], True)
|
tmpExplodeNum = geompy.ExtractShapes(tmpPartition, geompy.ShapeType["EDGE"], True)
|
||||||
if len(tmpExplodeRef) == len(tmpExplodeNum):
|
if len(tmpExplodeRef) == len(tmpExplodeNum):
|
||||||
|
logging.debug("face de filling non coupee")
|
||||||
geompy.addToStudy(filling, "faceNonCoupee_{0}".format(i + 1))
|
geompy.addToStudy(filling, "faceNonCoupee_{0}".format(i + 1))
|
||||||
facesNonCoupees.append(filling)
|
facesNonCoupees.append(filling)
|
||||||
maillagesNonCoupes.append(listOfNewMeshes[i])
|
maillagesNonCoupes.append(listOfNewMeshes[i])
|
||||||
else:
|
else:
|
||||||
|
logging.debug("face de filling coupee")
|
||||||
geompy.addToStudy(filling, "faceCoupee_{0}".format(i + 1))
|
geompy.addToStudy(filling, "faceCoupee_{0}".format(i + 1))
|
||||||
facesCoupees.append(filling)
|
facesCoupees.append(filling)
|
||||||
maillagesCoupes.append(listOfNewMeshes[i])
|
maillagesCoupes.append(listOfNewMeshes[i])
|
||||||
|
@ -79,7 +79,7 @@ def insereFissureLongue(geometriesSaines, maillagesSains,
|
|||||||
facePorteFissure = shapeDefaut
|
facePorteFissure = shapeDefaut
|
||||||
WirePorteFondFissure = wiretube
|
WirePorteFondFissure = wiretube
|
||||||
fillingFaceExterne = facesDefaut[0]
|
fillingFaceExterne = facesDefaut[0]
|
||||||
print fillingFaceExterne
|
logging.debug("fillingFaceExterne %s", fillingFaceExterne)
|
||||||
geompy.addToStudy(fillingFaceExterne, "fillingFaceExterne")
|
geompy.addToStudy(fillingFaceExterne, "fillingFaceExterne")
|
||||||
edgesFilling = geompy.ExtractShapes(fillingFaceExterne, geompy.ShapeType["EDGE"], False)
|
edgesFilling = geompy.ExtractShapes(fillingFaceExterne, geompy.ShapeType["EDGE"], False)
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
"""
|
"""
|
||||||
Created on Mon Jun 23 14:49:36 2014
|
Created on Mon Jun 23 14:49:36 2014
|
||||||
|
|
||||||
@author: I48174
|
@author: I48174 (Olivier HOAREAU)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
@ -14,10 +14,11 @@ def lookForCorner(maillageAScanner):
|
|||||||
""" Cette fonction permet de scanner la liste de noeuds qui composent le
|
""" Cette fonction permet de scanner la liste de noeuds qui composent le
|
||||||
maillage passé en paramètre. On recherche un ou plusieurs coins, ce
|
maillage passé en paramètre. On recherche un ou plusieurs coins, ce
|
||||||
qui implique les caractéristiques suivantes:
|
qui implique les caractéristiques suivantes:
|
||||||
- le noeud doit appartenir au moins à trois éléments distinctes
|
- le noeud doit appartenir au moins à trois éléments distincts
|
||||||
- chaque élément doit appartenir à un ensemble distincte
|
- chaque élément doit appartenir à un ensemble distinct
|
||||||
La fonction renvoie une liste de coins par l'intermédiaire de l'IDs
|
La fonction renvoie une liste de coins par l'intermédiaire de l'IDs
|
||||||
chaque noeud. La liste contient en général au maximum deux coins. """
|
chaque noeud. La liste contient en général au maximum deux coins.
|
||||||
|
"""
|
||||||
|
|
||||||
logging.info("start")
|
logging.info("start")
|
||||||
|
|
||||||
@ -27,19 +28,16 @@ def lookForCorner(maillageAScanner):
|
|||||||
# On parcours la liste de noeuds
|
# On parcours la liste de noeuds
|
||||||
listOfElements = maillageAScanner.GetNodeInverseElements(ND)
|
listOfElements = maillageAScanner.GetNodeInverseElements(ND)
|
||||||
if len(listOfElements) >=3:
|
if len(listOfElements) >=3:
|
||||||
# On teste le nombre d'éléments qui partage le même noeud
|
# On teste le nombre d'éléments qui partagent le même noeud
|
||||||
# --- Filtre selon le critère 'coplanar' --- #
|
# --- Filtre selon le critère 'coplanar' --- #
|
||||||
listOfCriterion = [smesh.GetCriterion(SMESH.FACE, SMESH.FT_CoplanarFaces, \
|
listOfCriterion = [smesh.GetCriterion(SMESH.FACE, SMESH.FT_CoplanarFaces, \
|
||||||
SMESH.FT_Undefined, elem, SMESH.FT_Undefined, SMESH.FT_Undefined, 30) \
|
SMESH.FT_Undefined, elem, SMESH.FT_Undefined, SMESH.FT_Undefined, 30) \
|
||||||
for elem in listOfElements]
|
for elem in listOfElements]
|
||||||
listOfFilters = [smesh.GetFilterFromCriteria([criteria]) \
|
listOfFilters = [smesh.GetFilterFromCriteria([criteria]) for criteria in listOfCriterion]
|
||||||
for criteria in listOfCriterion]
|
listOfSets = [maillageAScanner.GetIdsFromFilter(filter) for filter in listOfFilters]
|
||||||
# ------------------------------------------ #
|
|
||||||
listOfSets = [maillageAScanner.GetIdsFromFilter(filter) \
|
|
||||||
for filter in listOfFilters]
|
|
||||||
if listOfSets.count(listOfSets[0]) == len(listOfSets):
|
if listOfSets.count(listOfSets[0]) == len(listOfSets):
|
||||||
# Si toutes les listes d'éléments sont similaires, on retourne
|
# Si toutes les listes d'éléments sont similaires, on retourne
|
||||||
# au début pour éviter de travailler sur des éléments inutils.
|
# au début pour éviter de travailler sur des éléments inutiles.
|
||||||
# Exemple : un noeud appartenant à 4 éléments sur la même face.
|
# Exemple : un noeud appartenant à 4 éléments sur la même face.
|
||||||
continue
|
continue
|
||||||
for s in listOfSets:
|
for s in listOfSets:
|
||||||
@ -56,7 +54,7 @@ def createLinesFromMesh(maillageSupport):
|
|||||||
|
|
||||||
""" Cette fonction permet de générer une liste de lignes à partir du
|
""" Cette fonction permet de générer une liste de lignes à partir du
|
||||||
maillage support passé en paramètre. On démarre à partir d'un coin
|
maillage support passé en paramètre. On démarre à partir d'un coin
|
||||||
simple et on parcourt tout les noeuds pour former un ligne. Soit la
|
simple et on parcourt tout les noeuds pour former une ligne. Soit la
|
||||||
figure ci-dessous :
|
figure ci-dessous :
|
||||||
|
|
||||||
1_____4_____7 On part du coin N1, et on cherche les noeuds
|
1_____4_____7 On part du coin N1, et on cherche les noeuds
|
||||||
@ -69,7 +67,8 @@ def createLinesFromMesh(maillageSupport):
|
|||||||
| | | dernière ligne, à savoir le noeud N9, on considère
|
| | | dernière ligne, à savoir le noeud N9, on considère
|
||||||
3_____6_____9 que toutes les lignes sont créées.
|
3_____6_____9 que toutes les lignes sont créées.
|
||||||
|
|
||||||
La fonction retourne une liste de lignes utilisées par la suite. """
|
La fonction retourne une liste de lignes utilisées par la suite.
|
||||||
|
"""
|
||||||
|
|
||||||
logging.info("start")
|
logging.info("start")
|
||||||
|
|
||||||
@ -173,7 +172,8 @@ def createNewMeshesFromCorner(maillageSupport, listOfCorners):
|
|||||||
""" Cette fonction permet de générer un nouveau maillage plus facile à
|
""" Cette fonction permet de générer un nouveau maillage plus facile à
|
||||||
utiliser. On démarre d'un coin et on récupère les trois éléments
|
utiliser. On démarre d'un coin et on récupère les trois éléments
|
||||||
auquel le noeud appartient. Grâce à un filtre 'coplanar' sur les trois
|
auquel le noeud appartient. Grâce à un filtre 'coplanar' sur les trois
|
||||||
éléments, on peut générer des faces distinctes. """
|
éléments, on peut générer des faces distinctes.
|
||||||
|
"""
|
||||||
|
|
||||||
logging.info("start")
|
logging.info("start")
|
||||||
|
|
||||||
@ -186,7 +186,6 @@ def createNewMeshesFromCorner(maillageSupport, listOfCorners):
|
|||||||
critere = smesh.GetCriterion(SMESH.FACE, SMESH.FT_CoplanarFaces, \
|
critere = smesh.GetCriterion(SMESH.FACE, SMESH.FT_CoplanarFaces, \
|
||||||
SMESH.FT_Undefined, elem, SMESH.FT_Undefined, SMESH.FT_Undefined, 30)
|
SMESH.FT_Undefined, elem, SMESH.FT_Undefined, SMESH.FT_Undefined, 30)
|
||||||
filtre = smesh.GetFilterFromCriteria([critere])
|
filtre = smesh.GetFilterFromCriteria([critere])
|
||||||
# ------------------------------------------ #
|
|
||||||
grp = maillageSupport.GroupOnFilter(SMESH.FACE, 'grp', filtre)
|
grp = maillageSupport.GroupOnFilter(SMESH.FACE, 'grp', filtre)
|
||||||
# On copie le maillage en fonction du filtre
|
# On copie le maillage en fonction du filtre
|
||||||
msh = smesh.CopyMesh(grp, 'new_{0}'.format(i + 1), False, True)
|
msh = smesh.CopyMesh(grp, 'new_{0}'.format(i + 1), False, True)
|
||||||
|
@ -21,7 +21,7 @@ def peauInterne(fichierMaillage, shapeDefaut, nomZones):
|
|||||||
groups = maillageSain.GetGroups()
|
groups = maillageSain.GetGroups()
|
||||||
zoneDefaut = None
|
zoneDefaut = None
|
||||||
for grp in groups:
|
for grp in groups:
|
||||||
#print " ",grp.GetName()
|
logging.debug("groupe %s",grp.GetName())
|
||||||
if grp.GetName() == nomZones + "_vol":
|
if grp.GetName() == nomZones + "_vol":
|
||||||
zoneDefaut = grp
|
zoneDefaut = grp
|
||||||
break
|
break
|
||||||
@ -47,9 +47,9 @@ def peauInterne(fichierMaillage, shapeDefaut, nomZones):
|
|||||||
|
|
||||||
maillageDefautCible = smesh.CopyMesh(zoneDefaut_skin, 'maillageCible', 0, 0)
|
maillageDefautCible = smesh.CopyMesh(zoneDefaut_skin, 'maillageCible', 0, 0)
|
||||||
listOfCorner = lookForCorner(maillageDefautCible)
|
listOfCorner = lookForCorner(maillageDefautCible)
|
||||||
print "listOfCorner = ", listOfCorner
|
logging.debug("listOfCorner = %s", listOfCorner)
|
||||||
if len(listOfCorner) > 0:
|
if len(listOfCorner) > 0:
|
||||||
print " /!\ SUITE DU SCRIPT EN CONSTRUCTION /!\\"
|
logging.info("présence de coins à la surface externe de la zone à reconstruire")
|
||||||
zoneDefaut_skin, internalBoundary = fusionMaillageDefaut(maillageSain, maillageDefautCible, internalBoundary, zoneDefaut_skin, shapeDefaut, listOfCorner)
|
zoneDefaut_skin, internalBoundary = fusionMaillageDefaut(maillageSain, maillageDefautCible, internalBoundary, zoneDefaut_skin, shapeDefaut, listOfCorner)
|
||||||
|
|
||||||
return maillageSain, internalBoundary, zoneDefaut, zoneDefaut_skin, zoneDefaut_internalFaces, zoneDefaut_internalEdges
|
return maillageSain, internalBoundary, zoneDefaut, zoneDefaut_skin, zoneDefaut_internalFaces, zoneDefaut_internalEdges
|
||||||
|
@ -50,7 +50,6 @@ def quadranglesToShapeNoCorner(meshQuad, shapeFissureParams, centreFondFiss):
|
|||||||
idStart = idNode # le noeud de coin
|
idStart = idNode # le noeud de coin
|
||||||
elemStart = elem # l'élément quadrangle au coin
|
elemStart = elem # l'élément quadrangle au coin
|
||||||
xyz = meshQuad.GetNodeXYZ(idStart)
|
xyz = meshQuad.GetNodeXYZ(idStart)
|
||||||
print "xyz = ", xyz
|
|
||||||
logging.debug("idStart %s, coords %s", idStart, str(xyz))
|
logging.debug("idStart %s, coords %s", idStart, str(xyz))
|
||||||
|
|
||||||
nodelines =[] # on va constituer une liste de lignes de points
|
nodelines =[] # on va constituer une liste de lignes de points
|
||||||
@ -128,9 +127,9 @@ def quadranglesToShapeNoCorner(meshQuad, shapeFissureParams, centreFondFiss):
|
|||||||
logging.debug("nodeline %s", nodeline)
|
logging.debug("nodeline %s", nodeline)
|
||||||
logging.debug("elemline %s", elemline)
|
logging.debug("elemline %s", elemline)
|
||||||
nodelines.append(nodeline)
|
nodelines.append(nodeline)
|
||||||
print "nodelines = ", nodelines
|
logging.debug("nodelines = %s", nodelines)
|
||||||
longueur = [len(val) for val in nodelines]
|
longueur = [len(val) for val in nodelines]
|
||||||
print "longueur = ", longueur
|
logging.debug("longueur = %s", longueur)
|
||||||
# on a constitué une liste de lignes de points connexes
|
# on a constitué une liste de lignes de points connexes
|
||||||
logging.debug("dimensions [%s, %s]", len(nodelines), len(nodeline))
|
logging.debug("dimensions [%s, %s]", len(nodelines), len(nodeline))
|
||||||
|
|
||||||
@ -305,7 +304,7 @@ def quadranglesToShapeNoCorner(meshQuad, shapeFissureParams, centreFondFiss):
|
|||||||
noeuds_bords.append(noeudsBords)
|
noeuds_bords.append(noeudsBords)
|
||||||
idFilToCont.append(icont)
|
idFilToCont.append(icont)
|
||||||
bords_Partages += bordsPartages
|
bords_Partages += bordsPartages
|
||||||
print "bords_Partages = ", bords_Partages
|
logging.debug("bords_Partages = %s", bords_Partages)
|
||||||
pass # --- loop on mats
|
pass # --- loop on mats
|
||||||
# --- reconstruction des faces continues à partir des listes de noeuds
|
# --- reconstruction des faces continues à partir des listes de noeuds
|
||||||
# les courbes doivent suivre la courbure pour éviter les oscillations
|
# les courbes doivent suivre la courbure pour éviter les oscillations
|
||||||
|
Loading…
Reference in New Issue
Block a user