Salome HOME
Merge branch 'V9_9_BR'
[modules/smesh.git] / doc / salome / examples / filters_ex39.py
1 # "Elements of a domain" filter and "Renumber" hypothesis
2
3 import salome, SMESH
4 salome.salome_init_without_session()
5 from salome.geom import geomBuilder
6 geompy = geomBuilder.New()
7 from salome.smesh import smeshBuilder
8 smesh =  smeshBuilder.New()
9
10 # create two boxes to have two domains in the mesh
11
12 box1 = geompy.MakeBoxDXDYDZ( 100,100,100 )
13 box2 = geompy.MakeTranslation( box1, 200, 0, 0 )
14 boxes = geompy.MakeCompound( [box1, box2] )
15 box1, box2 = geompy.SubShapeAll( boxes, geompy.ShapeType["SHAPE"], "box")
16
17 vertex = geompy.SubShape( box1, geompy.ShapeType["VERTEX"], [1] )
18
19 # create a mesh
20
21 mesh = smesh.Mesh( boxes )
22 mesh.Segment(box1).NumberOfSegments( 5 )  # to have different nb of elements on the boxes
23 mesh.Segment(box2).NumberOfSegments( 10 )
24 mesh.Quadrangle()
25 ijkAlgo = mesh.Hexahedron()
26
27 # Use Renumber hypothesis to get hexahedra and nodes numbered like in a structured mesh.
28 # k axis of box1 will be ( 100,100,0 ) - ( 100,100,100 )
29 # k axis of box2 will be ( 0,0,0 ) - (0,0,100), by default
30 v000 = geompy.MakeVertex( 100,100,0, theName='v000' ) # can use box sub-vertex or standalone one
31 v001 = geompy.GetVertexNearPoint( box1, geompy.MakeVertex(100,100,100), theName='v001')
32 ijkAlgo.Renumber([ smeshBuilder.BlockCS( box1, v000, v001 ) ])
33
34 mesh.Compute()
35
36 # Create filters with FT_ConnectedElements criterion by pointing a domain in different ways:
37
38 # using point coordinates in box_1
39 nodeFilter = smesh.GetFilter( SMESH.NODE, SMESH.FT_ConnectedElements, "=", "1.,2,10", mesh=mesh )
40 print("Nb. nodes in box_1:", len( nodeFilter.GetIDs()))
41
42 # using point coordinates in box_2
43 edgeFilter = smesh.GetFilter( SMESH.EDGE, SMESH.FT_ConnectedElements, "=", [202,1,1 ], mesh=mesh )
44 print("Nb. segments in box_2:", len( edgeFilter.GetIDs()))
45
46 # using a geom vertex of box_1
47 faceFilter = smesh.GetFilter( SMESH.FACE, SMESH.FT_ConnectedElements, "=", vertex, mesh=mesh )
48 print("Nb. faces in box_1:", len( edgeFilter.GetIDs()))
49
50 # using node ID in box_2
51 voluFilter = smesh.GetFilter( SMESH.VOLUME, SMESH.FT_ConnectedElements, "=", 10, mesh=mesh )
52 print("Nb. volumes in box_2:", len( voluFilter.GetIDs()))
53