remplacement de print et corrections mineures

This commit is contained in:
Paul RASCLE 2014-08-29 15:11:49 +02:00
parent d1d19caf57
commit b5aa15f7ca
7 changed files with 32 additions and 31 deletions

View File

@ -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]:

View File

@ -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)

View File

@ -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])

View File

@ -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)

View File

@ -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)

View File

@ -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

View File

@ -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