Salome HOME
bos #29171 Refactor testing procedure
[modules/smesh.git] / doc / examples / modifying_meshes_ex15.py
1 # Moving Nodes
2
3 import salome
4 salome.salome_init_without_session()
5
6 from salome.geom import geomBuilder
7 from salome.smesh import smeshBuilder
8
9 geom_builder = geomBuilder.New()
10 smesh_builder = smeshBuilder.New()
11
12 box = geom_builder.MakeBoxDXDYDZ(200, 200, 200)
13
14 mesh = smesh_builder.Mesh( box )
15 mesh.Segment().AutomaticLength(0.1)
16 mesh.Quadrangle()
17 mesh.Compute()
18
19 # find node at (0,0,0) which is located on a geom vertex
20 node000 = None
21 for vId in geom_builder.SubShapeAllIDs( box, geom_builder.ShapeType["VERTEX"]):
22     if node000: break
23     nodeIds = mesh.GetSubMeshNodesId( vId, True )
24     for node in nodeIds:
25         xyz = mesh.GetNodeXYZ( node )
26         if xyz[0] == 0 and xyz[1] == 0 and xyz[2] == 0 :
27             node000 = node
28             pass
29         pass
30     pass
31
32 if not node000:
33     raise Exception("node000 not found")
34
35 # find node000 using a dedicated function 
36 n = mesh.FindNodeClosestTo( -1,-1,-1 )
37 if not n == node000:
38     raise Exception("FindNodeClosestTo() returns " + str( n ) + " != " + str( node000 ))
39
40 # move node000 to a new location
41 x,y,z = -10, -10, -10
42 n = mesh.MoveNode( n,x,y,z )
43 if not n:
44     raise Exception("MoveNode() returns " + n)
45
46 # check the coordinates of the node000
47 xyz = mesh.GetNodeXYZ( node000 )
48 if not ( xyz[0] == x and xyz[1] == y and xyz[2] == z) :
49     raise Exception("Wrong coordinates: " + str( xyz ) + " != " + str( [x,y,z] ))