general crack dialog, another error detection

This commit is contained in:
Paul RASCLE 2016-03-04 15:09:50 +01:00
parent 43f41f0c11
commit 39ef405afe
2 changed files with 25 additions and 2 deletions

View File

@ -3,6 +3,8 @@
import logging import logging
from geomsmesh import smesh from geomsmesh import smesh
import SMESH import SMESH
import traceback
from fissError import fissError
from listOfExtraFunctions import lookForCorner from listOfExtraFunctions import lookForCorner
from fusionMaillageAttributionDefaut import fusionMaillageDefaut from fusionMaillageAttributionDefaut import fusionMaillageDefaut
@ -41,6 +43,24 @@ def peauInterne(fichierMaillage, shapeDefaut, nomZones):
zoneDefaut_internalEdges = grp zoneDefaut_internalEdges = grp
break break
# --- Le groupe ZoneDefaut ne doit contenir que des Hexaèdres"
info=maillageSain.GetMeshInfo(zoneDefaut)
keys = info.keys(); keys.sort()
nbelem=0
nbhexa=0
for i in keys:
#print " %s : %d" % ( i, info[i] )
nbelem+=info[i]
if i == "Entity_Hexa":
nbhexa+=info[i]
if (nbelem == 0) or (nbhexa < nbelem) :
texte = "La zone a remailler est incorrecte : "
texte += "Causes possibles :<ul>"
texte += "<li>Les mailles à enlever dans le maillage sain n'ont pas été détectées.</li>"
texte += "<li>Il n'y a pas que des Hexaèdres linéaires dans la zone à remailler (mailles quadratiques, tetraèdres non traités)</li></ul>"
raise fissError(traceback.extract_stack(),texte)
nbAdded, maillageSain, DefautBoundary = maillageSain.MakeBoundaryElements( SMESH.BND_2DFROM3D, 'DefBound', '', 0, [ zoneDefaut ]) nbAdded, maillageSain, DefautBoundary = maillageSain.MakeBoundaryElements( SMESH.BND_2DFROM3D, 'DefBound', '', 0, [ zoneDefaut ])
internal = maillageSain.GetMesh().CutListOfGroups( [ DefautBoundary ], [ zoneDefaut_skin ], 'internal' ) internal = maillageSain.GetMesh().CutListOfGroups( [ DefautBoundary ], [ zoneDefaut_skin ], 'internal' )
internalBoundary = smesh.CopyMesh( internal, 'internalBoundary', 0, 0) internalBoundary = smesh.CopyMesh( internal, 'internalBoundary', 0, 0)

View File

@ -28,8 +28,11 @@ def restreintFaceFissure(shapeDefaut, facesDefaut, pointInterne):
facesPartShapeDefautSorted, minSurf, maxSurf = sortFaces(facesPartShapeDefaut) # la face de fissure dans le volume doit être la plus grande facesPartShapeDefautSorted, minSurf, maxSurf = sortFaces(facesPartShapeDefaut) # la face de fissure dans le volume doit être la plus grande
except: except:
texte = "Restriction de la face de fissure au domaine solide impossible. " texte = "Restriction de la face de fissure au domaine solide impossible. "
texte += "Cause possible : la face de fissure est tangente à la paroi solide. " texte += "Causes possibles :<ul>"
texte += "Elle doit déboucher franchement, sans que la surface dehors ne devienne plus grande que la surface dans le solide. " texte += "<li>La face de fissure est tangente à la paroi solide."
texte += "Elle doit déboucher franchement, sans que la surface dehors ne devienne plus grande que la surface dans le solide.</li>"
texte += "<li>le prémaillage de la face de fissure est trop grossier, les mailles à enlever dans le maillage sain "
texte += "n'ont pas toutes été détectées.</li></ul>"
raise fissError(traceback.extract_stack(),texte) raise fissError(traceback.extract_stack(),texte)
logging.debug("surfaces faces fissure étendue, min %s, max %s", minSurf, maxSurf) logging.debug("surfaces faces fissure étendue, min %s, max %s", minSurf, maxSurf)
facesPortFissure = facesPartShapeDefautSorted[-1] facesPortFissure = facesPartShapeDefautSorted[-1]