mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-12-29 10:50:34 +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:
|
||||
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]:
|
||||
|
@ -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)
|
||||
|
@ -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])
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user