Salome HOME
Merge from V6_main 11/02/2013
[modules/smesh.git] / doc / salome / examples / transforming_meshes_ex06.py
1 # Merging Elements
2
3 import salome
4 import geompy
5 import smesh
6
7 # create a face to be meshed
8 px = geompy.MakeVertex(100., 0.  , 0.  )
9 py = geompy.MakeVertex(0.  , 100., 0.  )
10 pz = geompy.MakeVertex(0.  , 0.  , 100.)
11
12 vxy = geompy.MakeVector(px, py)
13 arc = geompy.MakeArc(py, pz, px)
14
15 wire = geompy.MakeWire([vxy, arc])
16 isPlanarFace = 1
17
18 face1 = geompy.MakeFace(wire, isPlanarFace)
19 id_face1 = geompy.addToStudy(face1, "Face1")
20
21 # create a circle to be an extrusion path
22 px1 = geompy.MakeVertex( 100.,  100.,  0.)
23 py1 = geompy.MakeVertex(-100., -100.,  0.)
24 pz1 = geompy.MakeVertex(   0.,    0., 50.)
25
26 circle = geompy.MakeCircleThreePnt(py1, pz1, px1)
27 id_circle = geompy.addToStudy(circle, "Path")
28  
29 # create a 2D mesh on the face
30 trias = smesh.Mesh(face1, "Face : 2D mesh")
31
32 algo1D = trias.Segment()
33 algo1D.NumberOfSegments(6)
34 algo2D = trias.Triangle()
35 algo2D.LengthFromEdges()
36
37 trias.Compute()
38
39 # create a path mesh
40 circlemesh = smesh.Mesh(circle, "Path mesh")
41 algo = circlemesh.Segment()
42 algo.NumberOfSegments(10)
43 circlemesh.Compute()
44
45 # extrusion of the mesh
46 trias.ExtrusionAlongPath([], circlemesh, circle,
47                          1, 0, [], 0, smesh.PointStruct(0, 0, 0))
48
49 # merge nodes
50 print "Number of nodes before MergeNodes:", 
51 trias.NbNodes()
52 tolerance = 0.001
53 array_of_nodes_groups = trias.FindCoincidentNodes(tolerance)
54
55 trias.MergeNodes(array_of_nodes_groups)
56
57 print "Number of nodes after MergeNodes:", trias.NbNodes()
58 print ""
59 print "Number of elements before MergeEqualElements:"
60 print "Edges      : ", trias.NbEdges()
61 print "Triangles  : ", trias.NbTriangles()
62 print "Quadrangles: ", trias.NbQuadrangles()
63 print "Volumes    : ", trias.NbVolumes()
64
65 # merge elements
66 trias.MergeEqualElements()
67 print "Number of elements after MergeEqualElements:"
68 print "Edges      : ", trias.NbEdges()
69 print "Triangles  : ", trias.NbTriangles()
70 print "Quadrangles: ", trias.NbQuadrangles()
71 print "Volumes    : ", trias.NbVolumes()
72
73 salome.sg.updateObjBrowser(1)