mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-12-28 18:30:35 +05:00
PAL11200. Print diagnostics on failed hypothesis assignation and on hypo definition if computation fails.
Add fineness parameter to "Automatic...lization"
This commit is contained in:
parent
4d58bfa497
commit
40921fe0ae
@ -92,6 +92,36 @@ class Mesh_Algorithm:
|
|||||||
"""
|
"""
|
||||||
return self.algo
|
return self.algo
|
||||||
|
|
||||||
|
def TreatHypoStatus(self, status, hypName, geomName, isAlgo):
|
||||||
|
"""
|
||||||
|
Private method. Print error message if a hypothesis was not assigned
|
||||||
|
"""
|
||||||
|
if isAlgo:
|
||||||
|
hypType = "algorithm"
|
||||||
|
else:
|
||||||
|
hypType = "hypothesis"
|
||||||
|
if status == SMESH.HYP_UNKNOWN_FATAL :
|
||||||
|
reason = "for unknown reason"
|
||||||
|
elif status == SMESH.HYP_INCOMPATIBLE :
|
||||||
|
reason = "this hypothesis mismatches algorithm"
|
||||||
|
elif status == SMESH.HYP_NOTCONFORM :
|
||||||
|
reason = "not conform mesh would be built"
|
||||||
|
elif status == SMESH.HYP_ALREADY_EXIST :
|
||||||
|
reason = hypType + " of the same dimension already assigned to this shape"
|
||||||
|
elif status == SMESH.HYP_BAD_DIM :
|
||||||
|
reason = hypType + " mismatches shape"
|
||||||
|
elif status == SMESH.HYP_CONCURENT :
|
||||||
|
reason = "there are concurrent hypotheses on sub-shapes"
|
||||||
|
else:
|
||||||
|
return
|
||||||
|
hypName = '"' + hypName + '"'
|
||||||
|
geomName= '"' + geomName+ '"'
|
||||||
|
if status < SMESH.HYP_UNKNOWN_FATAL:
|
||||||
|
print hypName, "was assigned to", geomName,"but", reason
|
||||||
|
else:
|
||||||
|
print hypName, "was not assigned to",geomName,":", reason
|
||||||
|
pass
|
||||||
|
|
||||||
def Create(self, mesh, geom, hypo, so="libStdMeshersEngine.so"):
|
def Create(self, mesh, geom, hypo, so="libStdMeshersEngine.so"):
|
||||||
"""
|
"""
|
||||||
Private method
|
Private method
|
||||||
@ -111,7 +141,8 @@ class Mesh_Algorithm:
|
|||||||
|
|
||||||
self.algo = smesh.CreateHypothesis(hypo, so)
|
self.algo = smesh.CreateHypothesis(hypo, so)
|
||||||
SetName(self.algo, name + "/" + hypo)
|
SetName(self.algo, name + "/" + hypo)
|
||||||
mesh.mesh.AddHypothesis(self.geom, self.algo)
|
status = mesh.mesh.AddHypothesis(self.geom, self.algo)
|
||||||
|
self.TreatHypoStatus( status, hypo, name, 1 )
|
||||||
|
|
||||||
def Hypothesis(self, hyp, args=[], so="libStdMeshersEngine.so"):
|
def Hypothesis(self, hyp, args=[], so="libStdMeshersEngine.so"):
|
||||||
"""
|
"""
|
||||||
@ -126,8 +157,10 @@ class Mesh_Algorithm:
|
|||||||
a = a + s + str(args[i])
|
a = a + s + str(args[i])
|
||||||
s = ","
|
s = ","
|
||||||
i = i + 1
|
i = i + 1
|
||||||
SetName(hypo, GetName(self.geom) + "/" + hyp + a)
|
name = GetName(self.geom)
|
||||||
self.mesh.mesh.AddHypothesis(self.geom, hypo)
|
SetName(hypo, name + "/" + hyp + a)
|
||||||
|
status = self.mesh.mesh.AddHypothesis(self.geom, hypo)
|
||||||
|
self.TreatHypoStatus( status, hyp, name, 0 )
|
||||||
return hypo
|
return hypo
|
||||||
|
|
||||||
# Public class: Mesh_Segment
|
# Public class: Mesh_Segment
|
||||||
@ -206,7 +239,7 @@ class Mesh_Segment(Mesh_Algorithm):
|
|||||||
"""
|
"""
|
||||||
return self.Hypothesis("Propagation")
|
return self.Hypothesis("Propagation")
|
||||||
|
|
||||||
def AutomaticLength(self, fineness):
|
def AutomaticLength(self, fineness=0):
|
||||||
"""
|
"""
|
||||||
Define "AutomaticLength" hypothesis
|
Define "AutomaticLength" hypothesis
|
||||||
\param fineness for the fineness [0-1]
|
\param fineness for the fineness [0-1]
|
||||||
@ -452,24 +485,54 @@ class Mesh:
|
|||||||
|
|
||||||
def Compute(self):
|
def Compute(self):
|
||||||
"""
|
"""
|
||||||
Compute the mesh and return the status of the computation
|
Compute the mesh and return the status of the computation
|
||||||
"""
|
"""
|
||||||
b = smesh.Compute(self.mesh, self.geom)
|
ok = smesh.Compute(self.mesh, self.geom)
|
||||||
|
if not ok:
|
||||||
|
errors = smesh.GetAlgoState( self.mesh, self.geom )
|
||||||
|
allReasons = ""
|
||||||
|
for err in errors:
|
||||||
|
if err.isGlobalAlgo:
|
||||||
|
glob = " global "
|
||||||
|
else:
|
||||||
|
glob = " local "
|
||||||
|
pass
|
||||||
|
dim = str(err.algoDim)
|
||||||
|
if err.name == SMESH.MISSING_ALGO:
|
||||||
|
reason = glob + dim + "D algorithm is missing"
|
||||||
|
elif err.name == SMESH.MISSING_HYPO:
|
||||||
|
name = '"' + err.algoName + '"'
|
||||||
|
reason = glob + dim + "D algorithm " + name + " misses " + dim + "D hypothesis"
|
||||||
|
else:
|
||||||
|
reason = "Global \"Not Conform mesh allowed\" hypothesis is missing"
|
||||||
|
pass
|
||||||
|
if allReasons != "":
|
||||||
|
allReasons += "\n"
|
||||||
|
pass
|
||||||
|
allReasons += reason
|
||||||
|
pass
|
||||||
|
if allReasons != "":
|
||||||
|
print '"' + GetName(self.mesh) + '"',"not computed:"
|
||||||
|
print allReasons
|
||||||
|
pass
|
||||||
|
pass
|
||||||
if salome.sg.hasDesktop():
|
if salome.sg.hasDesktop():
|
||||||
smeshgui = salome.ImportComponentGUI("SMESH")
|
smeshgui = salome.ImportComponentGUI("SMESH")
|
||||||
smeshgui.Init(salome.myStudyId)
|
smeshgui.Init(salome.myStudyId)
|
||||||
smeshgui.SetMeshIcon( salome.ObjectToID( self.mesh ), b )
|
smeshgui.SetMeshIcon( salome.ObjectToID( self.mesh ), ok )
|
||||||
salome.sg.updateObjBrowser(1)
|
salome.sg.updateObjBrowser(1)
|
||||||
return b
|
pass
|
||||||
|
return ok
|
||||||
|
|
||||||
def AutomaticTetrahedralization(self):
|
def AutomaticTetrahedralization(self, fineness=0):
|
||||||
"""
|
"""
|
||||||
Compute tetrahedral mesh using AutomaticLength + MEFISTO + NETGEN
|
Compute tetrahedral mesh using AutomaticLength + MEFISTO + NETGEN
|
||||||
|
The parameter \a fineness [0.-1.] defines mesh fineness
|
||||||
"""
|
"""
|
||||||
dim = self.MeshDimension()
|
dim = self.MeshDimension()
|
||||||
# assign hypotheses
|
# assign hypotheses
|
||||||
self.RemoveGlobalHypotheses()
|
self.RemoveGlobalHypotheses()
|
||||||
self.Segment().AutomaticLength()
|
self.Segment().AutomaticLength(fineness)
|
||||||
if dim > 1 :
|
if dim > 1 :
|
||||||
self.Triangle().LengthFromEdges()
|
self.Triangle().LengthFromEdges()
|
||||||
pass
|
pass
|
||||||
@ -478,14 +541,15 @@ class Mesh:
|
|||||||
pass
|
pass
|
||||||
return self.Compute()
|
return self.Compute()
|
||||||
|
|
||||||
def AutomaticHexahedralization(self):
|
def AutomaticHexahedralization(self, fineness=0):
|
||||||
"""
|
"""
|
||||||
Compute hexahedral mesh using AutomaticLength + Quadrangle + Hexahedron
|
Compute hexahedral mesh using AutomaticLength + Quadrangle + Hexahedron
|
||||||
|
The parameter \a fineness [0.-1.] defines mesh fineness
|
||||||
"""
|
"""
|
||||||
dim = self.MeshDimension()
|
dim = self.MeshDimension()
|
||||||
# assign hypotheses
|
# assign hypotheses
|
||||||
self.RemoveGlobalHypotheses()
|
self.RemoveGlobalHypotheses()
|
||||||
self.Segment().AutomaticLength()
|
self.Segment().AutomaticLength(fineness)
|
||||||
if dim > 1 :
|
if dim > 1 :
|
||||||
self.Quadrangle()
|
self.Quadrangle()
|
||||||
pass
|
pass
|
||||||
|
Loading…
Reference in New Issue
Block a user