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:
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
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)):
if torun[i]:

View File

@ -12,7 +12,7 @@ def creeZoneDefautMaillage(maillagesSains, shapeDefaut, tailleDefaut,
nomZones, coordsNoeudsFissure):
"""
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
ou à partir d'un jeu de points et d'une distance d'influence.
@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
@author: I48174
@author: I48174 (Olivier HOAREAU)
"""
import logging
@ -48,16 +48,19 @@ def fusionMaillageDefaut(maillageSain, maillageDefautCible, maillageInterneCible
# A partir des lignes de la face,
# 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)
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)
tmpExplodeNum = geompy.ExtractShapes(tmpPartition, geompy.ShapeType["EDGE"], True)
if len(tmpExplodeRef) == len(tmpExplodeNum):
logging.debug("face de filling non coupee")
geompy.addToStudy(filling, "faceNonCoupee_{0}".format(i + 1))
facesNonCoupees.append(filling)
maillagesNonCoupes.append(listOfNewMeshes[i])
else:
logging.debug("face de filling coupee")
geompy.addToStudy(filling, "faceCoupee_{0}".format(i + 1))
facesCoupees.append(filling)
maillagesCoupes.append(listOfNewMeshes[i])

View File

@ -79,7 +79,7 @@ def insereFissureLongue(geometriesSaines, maillagesSains,
facePorteFissure = shapeDefaut
WirePorteFondFissure = wiretube
fillingFaceExterne = facesDefaut[0]
print fillingFaceExterne
logging.debug("fillingFaceExterne %s", fillingFaceExterne)
geompy.addToStudy(fillingFaceExterne, "fillingFaceExterne")
edgesFilling = geompy.ExtractShapes(fillingFaceExterne, geompy.ShapeType["EDGE"], False)

View File

@ -2,7 +2,7 @@
"""
Created on Mon Jun 23 14:49:36 2014
@author: I48174
@author: I48174 (Olivier HOAREAU)
"""
import logging
@ -14,10 +14,11 @@ def lookForCorner(maillageAScanner):
""" Cette fonction permet de scanner la liste de noeuds qui composent le
maillage passé en paramètre. On recherche un ou plusieurs coins, ce
qui implique les caractéristiques suivantes:
- le noeud doit appartenir au moins à trois éléments distinctes
- chaque élément doit appartenir à un ensemble distincte
- le noeud doit appartenir au moins à trois éléments distincts
- chaque élément doit appartenir à un ensemble distinct
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")
@ -27,19 +28,16 @@ def lookForCorner(maillageAScanner):
# On parcours la liste de noeuds
listOfElements = maillageAScanner.GetNodeInverseElements(ND)
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' --- #
listOfCriterion = [smesh.GetCriterion(SMESH.FACE, SMESH.FT_CoplanarFaces, \
SMESH.FT_Undefined, elem, SMESH.FT_Undefined, SMESH.FT_Undefined, 30) \
for elem in listOfElements]
listOfFilters = [smesh.GetFilterFromCriteria([criteria]) \
for criteria in listOfCriterion]
# ------------------------------------------ #
listOfSets = [maillageAScanner.GetIdsFromFilter(filter) \
for filter in listOfFilters]
SMESH.FT_Undefined, elem, SMESH.FT_Undefined, SMESH.FT_Undefined, 30) \
for elem in listOfElements]
listOfFilters = [smesh.GetFilterFromCriteria([criteria]) for criteria in listOfCriterion]
listOfSets = [maillageAScanner.GetIdsFromFilter(filter) for filter in listOfFilters]
if listOfSets.count(listOfSets[0]) == len(listOfSets):
# 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.
continue
for s in listOfSets:
@ -56,7 +54,7 @@ def createLinesFromMesh(maillageSupport):
""" 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
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 :
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
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")
@ -173,7 +172,8 @@ def createNewMeshesFromCorner(maillageSupport, listOfCorners):
""" 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
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")
@ -184,9 +184,8 @@ def createNewMeshesFromCorner(maillageSupport, listOfCorners):
for i, elem in enumerate(elems):
# --- Filtre selon le critère 'coplanar' --- #
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])
# ------------------------------------------ #
grp = maillageSupport.GroupOnFilter(SMESH.FACE, 'grp', filtre)
# On copie le maillage en fonction du filtre
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()
zoneDefaut = None
for grp in groups:
#print " ",grp.GetName()
logging.debug("groupe %s",grp.GetName())
if grp.GetName() == nomZones + "_vol":
zoneDefaut = grp
break
@ -47,9 +47,9 @@ def peauInterne(fichierMaillage, shapeDefaut, nomZones):
maillageDefautCible = smesh.CopyMesh(zoneDefaut_skin, 'maillageCible', 0, 0)
listOfCorner = lookForCorner(maillageDefautCible)
print "listOfCorner = ", listOfCorner
logging.debug("listOfCorner = %s", listOfCorner)
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)
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
elemStart = elem # l'élément quadrangle au coin
xyz = meshQuad.GetNodeXYZ(idStart)
print "xyz = ", xyz
logging.debug("idStart %s, coords %s", idStart, str(xyz))
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("elemline %s", elemline)
nodelines.append(nodeline)
print "nodelines = ", nodelines
logging.debug("nodelines = %s", 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
logging.debug("dimensions [%s, %s]", len(nodelines), len(nodeline))
@ -305,7 +304,7 @@ def quadranglesToShapeNoCorner(meshQuad, shapeFissureParams, centreFondFiss):
noeuds_bords.append(noeudsBords)
idFilToCont.append(icont)
bords_Partages += bordsPartages
print "bords_Partages = ", bords_Partages
logging.debug("bords_Partages = %s", bords_Partages)
pass # --- loop on mats
# --- reconstruction des faces continues à partir des listes de noeuds
# les courbes doivent suivre la courbure pour éviter les oscillations