Salome HOME
More examples of filter usage
authoreap <eap@opencascade.com>
Mon, 2 Sep 2013 10:47:47 +0000 (10:47 +0000)
committereap <eap@opencascade.com>
Mon, 2 Sep 2013 10:47:47 +0000 (10:47 +0000)
doc/salome/examples/filters_ex01.py

index 86be381826b9b04c262cf4bbe392bbb0b939052a..03f6c7477913aa069c759aa77bb7d1e718815952 100644 (file)
@@ -2,7 +2,27 @@
 
 # create mesh
 from SMESH_mechanic import *
 
 # create mesh
 from SMESH_mechanic import *
-# get faces with aspect ratio > 6.5
-filter = smesh.GetFilter(SMESH.FACE, SMESH.FT_AspectRatio, SMESH.FT_MoreThan, 6.5)
+
+# get faces with aspect ratio > 1.5
+filter = smesh.GetFilter(SMESH.FACE, SMESH.FT_AspectRatio, SMESH.FT_MoreThan, 1.5)
 ids = mesh.GetIdsFromFilter(filter)
 ids = mesh.GetIdsFromFilter(filter)
-print "Number of faces with aspect ratio > 6.5:", len(ids)
+print "Number of faces with aspect ratio > 1.5:", len(ids)
+
+# copy the faces with aspect ratio > 1.5 to another mesh;
+# this demostrates that a filter can be used where usually a group or submesh is acceptable
+filter.SetMesh( mesh.GetMesh() )
+mesh2 = smesh.CopyMesh( filter, "AR > 1.5" )
+print "Number of copied faces with aspect ratio > 1.5:", mesh2.NbFaces()
+
+# create a Group of faces with Aspect Ratio < 1.5
+group = mesh.MakeGroup("AR < 1.5", SMESH.FACE, SMESH.FT_AspectRatio, '<', 1.5)
+print "Number of faces with aspect ratio < 1.5:", group.Size()
+
+# combine several criteria to Create a Group of only Triangular faces with Aspect Ratio < 1.5;
+# note that contents of a GroupOnFilter is dynamically updated as the mesh changes
+crit = [ smesh.GetCriterion( SMESH.FACE, SMESH.FT_AspectRatio, '<', 1.5, BinaryOp=SMESH.FT_LogicalAND ),
+         smesh.GetCriterion( SMESH.FACE, SMESH.FT_ElemGeomType,'=', SMESH.Geom_TRIANGLE ) ]
+filter = smesh.GetFilterFromCriteria( crit )
+triaGroup = mesh.GroupOnFilter( SMESH.FACE, "Tria AR < 1.5", filter )
+print "Number of triangles with aspect ratio < 1.5:", triaGroup.Size()
+