Attention! This script was written using old approach, based on direct usage of SMESH idl interface. To be updated for version 3.2.1 to use smesh package.
import salome
import geompy
import SMESH
import StdMeshers
smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
smesh.SetCurrentStudy(salome.myStudy)
# create a box without one plane
box = geompy.MakeBox(0., 0., 0., 20., 20., 15.)
subShapeList = geompy.SubShapeAll(box, geompy.ShapeType["FACE"])
FaceList = []
for i in range( 5 ):
FaceList.append( subShapeList[ i ] )
aComp = geompy.MakeCompound( FaceList )
aBox = geompy.Sew( aComp, 1. )
idbox = geompy.addToStudy( aBox, "box" )
aBox = salome.IDToObject( idbox )
# create a mesh
hyp1 = smesh.CreateHypothesis("NumberOfSegments", "libStdMeshersEngine.so")
hyp1.SetNumberOfSegments(5)
hyp2 = smesh.CreateHypothesis("MaxElementArea", "libStdMeshersEngine.so")
hyp2.SetMaxElementArea(20)
algo1 = smesh.CreateHypothesis("Regular_1D", "libStdMeshersEngine.so")
algo2 = smesh.CreateHypothesis("MEFISTO_2D", "libStdMeshersEngine.so")
mesh = smesh.CreateMesh(aBox)
mesh.AddHypothesis(aBox,hyp1)
mesh.AddHypothesis(aBox,hyp2)
mesh.AddHypothesis(aBox,algo1)
mesh.AddHypothesis(aBox,algo2)
smesh.Compute(mesh,aBox)
smeshgui = salome.ImportComponentGUI("SMESH")
smeshgui.Init(salome.myStudyId);
smeshgui.SetName( salome.ObjectToID( mesh ), "Mesh_freebord" );
# criterion : free borders
aFilterMgr = smesh.CreateFilterManager()
aPredicate = aFilterMgr.CreateFreeBorders()
aFilter = aFilterMgr.CreateFilter()
aFilter.SetPredicate( aPredicate )
anIds = aFilter.GetElementsId( mesh )
# print the result
print "Criterion: Free borders Nb = ", len( anIds )
for i in range( len( anIds ) ):
print anIds[ i ]
# create a group
aGroup = mesh.CreateGroup( SMESH.EDGE, "Free borders" )
aGroup.Add( anIds )
salome.sg.updateObjBrowser(1)
Attention! This script was written using old approach, based on direct usage of SMESH idl interface. To be updated for version 3.2.1 to use smesh package.
import salome
import geompy
import SMESH
import StdMeshers
smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
smesh.SetCurrentStudy(salome.myStudy)
# create a box without one plane
box = geompy.MakeBox(0., 0., 0., 20., 20., 15.)
subShapeList = geompy.SubShapeAll(box, geompy.ShapeType["FACE"])
FaceList = []
for i in range( 5 ):
FaceList.append( subShapeList[ i ] )
aComp = geompy.MakeCompound( FaceList )
aBox = geompy.Sew( aComp, 1. )
idbox = geompy.addToStudy( aBox, "box" )
aBox = salome.IDToObject( idbox )
# create a mesh
hyp1 = smesh.CreateHypothesis("NumberOfSegments", "libStdMeshersEngine.so")
hyp1.SetNumberOfSegments(5)
hyp2 = smesh.CreateHypothesis("MaxElementArea", "libStdMeshersEngine.so")
hyp2.SetMaxElementArea(20)
algo1 = smesh.CreateHypothesis("Regular_1D", "libStdMeshersEngine.so")
algo2 = smesh.CreateHypothesis("MEFISTO_2D", "libStdMeshersEngine.so")
mesh = smesh.CreateMesh(aBox)
mesh.AddHypothesis(aBox,hyp1)
mesh.AddHypothesis(aBox,hyp2)
mesh.AddHypothesis(aBox,algo1)
mesh.AddHypothesis(aBox,algo2)
smesh.Compute(mesh,aBox)
smeshgui = salome.ImportComponentGUI("SMESH")
smeshgui.Init(salome.myStudyId);
smeshgui.SetName( salome.ObjectToID( mesh ), "Mesh_borders_at_multi-connections" );
# Criterion : Borders at multi-connection
aFilterMgr = smesh.CreateFilterManager()
aFunctor = aFilterMgr.CreateMultiConnection()
aPredicate = aFilterMgr.CreateEqualTo()
aPredicate.SetNumFunctor( aFunctor )
aPredicate.SetMargin( 2 )
aFilter = aFilterMgr.CreateFilter()
aFilter.SetPredicate( aPredicate )
anIds = aFilter.GetElementsId( mesh )
# print the result
print "Criterion: Borders at multi-connections Nb = ", len( anIds )
for i in range( len( anIds ) ):
print anIds[ i ]
# create a group
aGroup = mesh.CreateGroup( SMESH.EDGE, "Borders at multi-connections" )
aGroup.Add( anIds )
salome.sg.updateObjBrowser(1)
Attention! This script was written using old approach, based on direct usage of SMESH idl interface. To be updated for version 3.2.1 to use smesh package.
import salome
import geompy
import SMESH
import StdMeshers
smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
smesh.SetCurrentStudy(salome.myStudy)
# create a box without one plane
box = geompy.MakeBox(0., 0., 0., 20., 20., 15.)
subShapeList = geompy.SubShapeAll(box, geompy.ShapeType["FACE"])
FaceList = []
for i in range( 5 ):
FaceList.append( subShapeList[ i ] )
aComp = geompy.MakeCompound( FaceList )
aBox = geompy.Sew( aComp, 1. )
idbox = geompy.addToStudy( aBox, "box" )
aBox = salome.IDToObject( idbox )
# create a mesh
hyp1 = smesh.CreateHypothesis("NumberOfSegments", "libStdMeshersEngine.so")
hyp1.SetNumberOfSegments(5)
hyp2 = smesh.CreateHypothesis("MaxElementArea", "libStdMeshersEngine.so")
hyp2.SetMaxElementArea(20)
algo1 = smesh.CreateHypothesis("Regular_1D", "libStdMeshersEngine.so")
algo2 = smesh.CreateHypothesis("MEFISTO_2D", "libStdMeshersEngine.so")
mesh = smesh.CreateMesh(aBox)
mesh.AddHypothesis(aBox,hyp1)
mesh.AddHypothesis(aBox,hyp2)
mesh.AddHypothesis(aBox,algo1)
mesh.AddHypothesis(aBox,algo2)
smesh.Compute(mesh,aBox)
smeshgui = salome.ImportComponentGUI("SMESH")
smeshgui.Init(salome.myStudyId);
smeshgui.SetName( salome.ObjectToID( mesh ), "Mesh" );
# Criterion : Length > 3
aFilterMgr = smesh.CreateFilterManager()
aFunctor = aFilterMgr.CreateLength()
aPredicate = aFilterMgr.CreateMoreThan()
aPredicate.SetNumFunctor( aFunctor )
aPredicate.SetMargin( 3 )
aFilter = aFilterMgr.CreateFilter()
aFilter.SetPredicate( aPredicate )
anIds = aFilter.GetElementsId( mesh )
# print the result
print "Criterion: Edges length > 3 Nb = ", len( anIds )
for i in range( len( anIds ) ):
print anIds[ i ]
# create a group
aGroup = mesh.CreateGroup( SMESH.EDGE, "Edges with legth > 3" )
aGroup.Add( anIds )
salome.sg.updateObjBrowser(1)
Attention! This script was written using old approach, based on direct usage of SMESH idl interface. To be updated for version 3.2.1 to use smesh package.
import SMESH
import SMESH_mechanic
smesh = SMESH_mechanic.smesh
mesh = SMESH_mechanic.mesh
salome = SMESH_mechanic.salome
aFilterMgr = smesh.CreateFilterManager()
# Criterion : AREA > 30
aFunctor = aFilterMgr.CreateArea()
aPredicate = aFilterMgr.CreateMoreThan()
aPredicate.SetNumFunctor( aFunctor )
aPredicate.SetMargin( 95 )
aFilter = aFilterMgr.CreateFilter()
aFilter.SetPredicate( aPredicate )
anIds = aFilter.GetElementsId( mesh )
anEditor = mesh.GetMeshEditor()
anEditor.RemoveElements(anIds)
# Criterion : Free Edges
aPredicate = aFilterMgr.CreateFreeEdges()
aPredicate.SetMesh( mesh )
aBorders = aPredicate.GetBorders()
# create groups
aGroupF = mesh.CreateGroup( SMESH.FACE, "Faces with free edges" )
aGroupN = mesh.CreateGroup( SMESH.NODE, "Nodes on free edges" )
# fill groups with elements, corresponding to the criterion
print ""
print "Criterion: Free edges Nb = ", len( aBorders )
for i in range( len( aBorders ) ):
aBorder = aBorders[ i ]
print "Face # ", aBorder.myElemId, " : Edge between nodes (",
print aBorder.myPnt1, ", ", aBorder.myPnt2, ")"
aGroupF.Add( [aBorder.myElemId] )
aGroupN.Add( [aBorder.myPnt1, aBorder.myPnt2] )
salome.sg.updateObjBrowser(1)
Attention! This script was written using old approach, based on direct usage of SMESH idl interface. To be updated for version 3.2.1 to use smesh package.
import salome
import geompy
import SMESH
import StdMeshers
smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
smesh.SetCurrentStudy(salome.myStudy)
# create a box without one plane
box = geompy.MakeBox(0., 0., 0., 20., 20., 15.)
subShapeList = geompy.SubShapeAll(box, geompy.ShapeType["FACE"])
FaceList = []
for i in range( 5 ):
FaceList.append( subShapeList[ i ] )
aComp = geompy.MakeCompound( FaceList )
aBox = geompy.Sew( aComp, 1. )
idbox = geompy.addToStudy( aBox, "box" )
aBox = salome.IDToObject( idbox )
# create a mesh
hyp1 = smesh.CreateHypothesis("NumberOfSegments", "libStdMeshersEngine.so")
hyp1.SetNumberOfSegments(5)
hyp2 = smesh.CreateHypothesis("MaxElementArea", "libStdMeshersEngine.so")
hyp2.SetMaxElementArea(20)
algo1 = smesh.CreateHypothesis("Regular_1D", "libStdMeshersEngine.so")
algo2 = smesh.CreateHypothesis("MEFISTO_2D", "libStdMeshersEngine.so")
mesh = smesh.CreateMesh(aBox)
mesh.AddHypothesis(aBox,hyp1)
mesh.AddHypothesis(aBox,hyp2)
mesh.AddHypothesis(aBox,algo1)
mesh.AddHypothesis(aBox,algo2)
smesh.Compute(mesh,aBox)
smeshgui = salome.ImportComponentGUI("SMESH")
smeshgui.Init(salome.myStudyId);
smeshgui.SetName( salome.ObjectToID( mesh ), "Mesh" );
# Criterion : Length 2D > 5
aFilterMgr = smesh.CreateFilterManager()
aFunctor = aFilterMgr.CreateLength2D()
aPredicate = aFilterMgr.CreateMoreThan()
aPredicate.SetNumFunctor( aFunctor )
aPredicate.SetMargin( 5 )
aFilter = aFilterMgr.CreateFilter()
aFilter.SetPredicate( aPredicate )
anIds = aFilter.GetElementsId( mesh )
# print the result
print "Criterion: Edges length 2D > 5 Nb = ", len( anIds )
for i in range( len( anIds ) ):
print anIds[ i ]
# create a group
aGroup = mesh.CreateGroup( SMESH.FACE, "Edges with legth 2D > 5" )
aGroup.Add( anIds )
salome.sg.updateObjBrowser(1)
Attention! This script was written using old approach, based on direct usage of SMESH idl interface. To be updated for version 3.2.1 to use smesh package.
import salome
import geompy
import SMESH
import StdMeshers
smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
smesh.SetCurrentStudy(salome.myStudy)
# create a box without one plane
box = geompy.MakeBox(0., 0., 0., 20., 20., 15.)
subShapeList = geompy.SubShapeAll(box, geompy.ShapeType["FACE"])
FaceList = []
for i in range( 5 ):
FaceList.append( subShapeList[ i ] )
aComp = geompy.MakeCompound( FaceList )
aBox = geompy.Sew( aComp, 1. )
idbox = geompy.addToStudy( aBox, "box" )
aBox = salome.IDToObject( idbox )
# create a mesh
hyp1 = smesh.CreateHypothesis("NumberOfSegments", "libStdMeshersEngine.so")
hyp1.SetNumberOfSegments(5)
hyp2 = smesh.CreateHypothesis("MaxElementArea", "libStdMeshersEngine.so")
hyp2.SetMaxElementArea(20)
algo1 = smesh.CreateHypothesis("Regular_1D", "libStdMeshersEngine.so")
algo2 = smesh.CreateHypothesis("MEFISTO_2D", "libStdMeshersEngine.so")
mesh = smesh.CreateMesh(aBox)
mesh.AddHypothesis(aBox,hyp1)
mesh.AddHypothesis(aBox,hyp2)
mesh.AddHypothesis(aBox,algo1)
mesh.AddHypothesis(aBox,algo2)
smesh.Compute(mesh,aBox)
smeshgui = salome.ImportComponentGUI("SMESH")
smeshgui.Init(salome.myStudyId);
smeshgui.SetName( salome.ObjectToID( mesh ), "Mesh" );
# Criterion : MULTI-CONNECTION 2D = 2
aFilterMgr = smesh.CreateFilterManager()
aFunctor = aFilterMgr.CreateMultiConnection2D()
aPredicate = aFilterMgr.CreateEqualTo()
aPredicate.SetNumFunctor( aFunctor )
aPredicate.SetMargin( 2 )
aFilter = aFilterMgr.CreateFilter()
aFilter.SetPredicate( aPredicate )
anIds = aFilter.GetElementsId( mesh )
# print the result
print "Criterion: Borders at multi-connection 2D = 2 Nb = ", len( anIds )
for i in range( len( anIds ) ):
print anIds[ i ]
# create a group
aGroup = mesh.CreateGroup( SMESH.FACE, "Borders at multi-connection 2D = 2" )
aGroup.Add( anIds )
salome.sg.updateObjBrowser(1)
Attention! This script was written using old approach, based on direct usage of SMESH idl interface. To be updated for version 3.2.1 to use smesh package.
import SMESH
import SMESH_mechanic
smesh = SMESH_mechanic.smesh
mesh = SMESH_mechanic.mesh
salome = SMESH_mechanic.salome
aFilterMgr = smesh.CreateFilterManager()
# Criterion : AREA > 100
aFunctor = aFilterMgr.CreateArea()
aPredicate = aFilterMgr.CreateMoreThan()
aPredicate.SetNumFunctor( aFunctor )
aPredicate.SetMargin( 100 )
aFilter = aFilterMgr.CreateFilter()
aFilter.SetPredicate( aPredicate )
anIds = aFilter.GetElementsId( mesh )
# print the result
print "Criterion: Area > 100 Nb = ", len( anIds )
for i in range( len( anIds ) ):
print anIds[ i ]
# create a group
aGroup = mesh.CreateGroup( SMESH.FACE, "Area > 100" )
aGroup.Add( anIds )
salome.sg.updateObjBrowser(1)
Attention! This script was written using old approach, based on direct usage of SMESH idl interface. To be updated for version 3.2.1 to use smesh package.
import SMESH
import SMESH_mechanic
smesh = SMESH_mechanic.smesh
mesh = SMESH_mechanic.mesh
salome = SMESH_mechanic.salome
aFilterMgr = smesh.CreateFilterManager()
# Criterion : Taper > 3e-20
aFunctor = aFilterMgr.CreateTaper()
aPredicate = aFilterMgr.CreateMoreThan()
aPredicate.SetNumFunctor( aFunctor )
aPredicate.SetMargin( 3e-20 )
aFilter = aFilterMgr.CreateFilter()
aFilter.SetPredicate( aPredicate )
anIds = aFilter.GetElementsId( mesh )
# print the result
print "Criterion: Taper > 3e-20 Nb = ", len( anIds )
for i in range( len( anIds ) ):
print anIds[ i ]
# create a group
aGroup = mesh.CreateGroup( SMESH.FACE, "Taper > 3e-20" )
aGroup.Add( anIds )
salome.sg.updateObjBrowser(1)
Attention! This script was written using old approach, based on direct usage of SMESH idl interface. To be updated for version 3.2.1 to use smesh package.
import SMESH
import SMESH_mechanic
smesh = SMESH_mechanic.smesh
mesh = SMESH_mechanic.mesh
salome = SMESH_mechanic.salome
aFilterMgr = smesh.CreateFilterManager()
# Criterion : ASPECT RATIO > 1.4
aFunctor = aFilterMgr.CreateAspectRatio()
aPredicate = aFilterMgr.CreateMoreThan()
aPredicate.SetNumFunctor( aFunctor )
aPredicate.SetMargin( 1.4 )
aFilter = aFilterMgr.CreateFilter()
aFilter.SetPredicate( aPredicate )
anIds = aFilter.GetElementsId( mesh )
# print the result
print "Criterion: Aspect Ratio > 1.4 Nb = ", len( anIds )
for i in range( len( anIds ) ):
print anIds[ i ]
# create a group
aGroup = mesh.CreateGroup( SMESH.FACE, "Aspect Ratio > 1.4" )
aGroup.Add( anIds )
salome.sg.updateObjBrowser(1)
Attention! This script was written using old approach, based on direct usage of SMESH idl interface. To be updated for version 3.2.1 to use smesh package.
import SMESH
import SMESH_mechanic
smesh = SMESH_mechanic.smesh
mesh = SMESH_mechanic.mesh
salome = SMESH_mechanic.salome
aFilterMgr = smesh.CreateFilterManager()
# Criterion : MINIMUM ANGLE < 70
aFunctor = aFilterMgr.CreateMinimumAngle()
aPredicate = aFilterMgr.CreateLessThan()
aPredicate.SetNumFunctor( aFunctor )
aPredicate.SetMargin( 70 )
aFilter = aFilterMgr.CreateFilter()
aFilter.SetPredicate( aPredicate )
anIds = aFilter.GetElementsId( mesh )
# print the result
print "Criterion: Minimum Angle < 70 Nb = ", len( anIds )
for i in range( len( anIds ) ):
print anIds[ i ]
# create a group
aGroup = mesh.CreateGroup( SMESH.FACE, "Minimum Angle < 70" )
aGroup.Add( anIds )
salome.sg.updateObjBrowser(1)
Attention! This script was written using old approach, based on direct usage of SMESH idl interface. To be updated for version 3.2.1 to use smesh package.
import SMESH
import SMESH_mechanic
smesh = SMESH_mechanic.smesh
mesh = SMESH_mechanic.mesh
salome = SMESH_mechanic.salome
aFilterMgr = smesh.CreateFilterManager()
# Criterion : WARP ANGLE > 1e-15
aFunctor = aFilterMgr.CreateWarping()
aPredicate = aFilterMgr.CreateMoreThan()
aPredicate.SetNumFunctor( aFunctor )
aPredicate.SetMargin( 1e-15 )
aFilter = aFilterMgr.CreateFilter()
aFilter.SetPredicate( aPredicate )
anIds = aFilter.GetElementsId( mesh )
# print the result
print "Criterion: Warp > 1e-15 Nb = ", len( anIds )
for i in range( len( anIds ) ):
print anIds[ i ]
# create a group
aGroup = mesh.CreateGroup( SMESH.FACE, "Warp > 1e-15" )
aGroup.Add( anIds )
salome.sg.updateObjBrowser(1)
Attention! This script was written using old approach, based on direct usage of SMESH idl interface. To be updated for version 3.2.1 to use smesh package.
import SMESH
import SMESH_mechanic
smesh = SMESH_mechanic.smesh
mesh = SMESH_mechanic.mesh
salome = SMESH_mechanic.salome
aFilterMgr = smesh.CreateFilterManager()
# Criterion : Skew > 18
aFunctor = aFilterMgr.CreateSkew()
aPredicate = aFilterMgr.CreateMoreThan()
aPredicate.SetNumFunctor( aFunctor )
aPredicate.SetMargin( 18 )
aFilter = aFilterMgr.CreateFilter()
aFilter.SetPredicate( aPredicate )
anIds = aFilter.GetElementsId( mesh )
# print the result
print "Criterion: Skew > 18 Nb = ", len( anIds )
for i in range( len( anIds ) ):
print anIds[ i ]
# create a group
aGroup = mesh.CreateGroup( SMESH.FACE, "Skew > 18" )
aGroup.Add( anIds )
salome.sg.updateObjBrowser(1)
Attention! This script was written using old approach, based on direct usage of SMESH idl interface. To be updated for version 3.2.1 to use smesh package.
import SMESH
import SMESH_mechanic_tetra
smesh = SMESH_mechanic_tetra.smesh
mesh = SMESH_mechanic_tetra.mesh
salome = SMESH_mechanic_tetra.salome
aFilterMgr = smesh.CreateFilterManager()
# Criterion : ASPECT RATIO 3D > 2.2
aFunctor = aFilterMgr.CreateAspectRatio3D()
aPredicate = aFilterMgr.CreateMoreThan()
aPredicate.SetNumFunctor( aFunctor )
aPredicate.SetMargin( 2.2 )
aFilter = aFilterMgr.CreateFilter()
aFilter.SetPredicate( aPredicate )
anIds = aFilter.GetElementsId( mesh )
# print the result
print "Criterion: Aspect Ratio 3D > 2.2 Nb = ", len( anIds )
for i in range( len( anIds ) ):
print anIds[ i ]
# create a group
aGroup = mesh.CreateGroup( SMESH.VOLUME, "Aspect Ratio 3D > 2.2" )
aGroup.Add( anIds )
salome.sg.updateObjBrowser(1)
import SMESH
import SMESH_mechanic_tetra
smesh = SMESH_mechanic_tetra.smesh
mesh = SMESH_mechanic_tetra.mesh
salome = SMESH_mechanic_tetra.salome
aFilterMgr = smesh.CreateFilterManager()
# Criterion : VOLUME < 7
aFunctor = aFilterMgr.CreateVolume3D()
aPredicate = aFilterMgr.CreateLessThan()
aPredicate.SetNumFunctor( aFunctor )
aPredicate.SetMargin( 7 )
aFilter = aFilterMgr.CreateFilter()
aFilter.SetPredicate( aPredicate )
anIds = aFilter.GetElementsId( mesh )
# print the result
print ""
print "Criterion: Volume < 7 Nb = ", len( anIds )
for i in range( len( anIds ) ):
print anIds[ i ]
# create a group
aGroup = mesh.CreateGroup( SMESH.VOLUME, "Volume < 7" )
aGroup.Add( anIds )
salome.sg.updateObjBrowser(1)