Salome HOME
CMake:
[modules/smesh.git] / doc / salome / examples / transforming_meshes_ex12.py
1 # Create boundary elements
2
3
4 import salome
5 salome.salome_init()
6 import GEOM
7 from salome.geom import geomBuilder
8 geompy = geomBuilder.New(salome.myStudy)
9
10 import SMESH, SALOMEDS
11 from salome.smesh import smeshBuilder
12 smesh =  smeshBuilder.New(salome.myStudy)
13 import salome_notebook
14
15
16 box = geompy.MakeBoxDXDYDZ(100, 100, 100)
17 gFaces = geompy.SubShapeAllSorted(box, geompy.ShapeType["FACE"])
18 f1,f2 = gFaces[0],gFaces[1]
19 geompy.addToStudy(box,"box")
20 geompy.addToStudyInFather(box,f1,"face1")
21 geompy.addToStudyInFather(box,f2,"face2")
22
23 twoFaces = geompy.MakeCompound([f1,f2])
24
25 ## -----------
26 ##
27 ## 2D from 3D
28 ##
29 ## -----------
30 dim = SMESH.BND_2DFROM3D
31
32 init_mesh = smesh.Mesh(box, "box")
33 init_mesh.AutomaticHexahedralization() # it makes 3 x 3 x 3 hexahedrons
34
35 # remove some faces
36 faces = init_mesh.GetElementsByType( SMESH.FACE )
37 nb_faces = len( faces )
38 rm_face = faces[ : nb_faces/2]
39 init_mesh.RemoveElements( rm_face )
40
41 # restore boundary in this mesh
42 mesh = smesh.CopyMesh( init_mesh, "2D from 3D")
43 groupName = "bnd 2D"
44 nb, new_mesh, new_group = mesh.MakeBoundaryElements(dim, groupName)
45
46 # restore boundary (only) in other mesh
47 meshName = "2D boundary of " + init_mesh.GetName()
48 nb, new_mesh, new_group = init_mesh.MakeBoundaryElements(dim, groupName, meshName)
49
50 # restore boundary in mesh copy
51 meshName = init_mesh.GetName() + " + boundary"
52 nb, new_mesh, new_group = init_mesh.MakeBoundaryElements(dim, groupName, meshName, toCopyAll=True)
53
54
55 ## -----------
56 ##
57 ## 1D from 2D
58 ##
59 ## -----------
60 dim = SMESH.BND_1DFROM2D
61
62 init_mesh = smesh.Mesh(f1, "2D mesh")
63 init_mesh.AutomaticHexahedralization()
64
65 # remove some edges
66 edges = init_mesh.GetElementsByType( SMESH.EDGE )
67 nb_edges = len( edges )
68 rm_edge = edges[ : nb_edges/2]
69 init_mesh.RemoveElements( rm_edge )
70
71
72 # restore boundary edges in this mesh
73 mesh = smesh.CopyMesh( init_mesh, "1D from 2D")
74 groupName = "bnd 1D"
75 nb, new_mesh, new_group = mesh.MakeBoundaryElements(dim, groupName)
76
77 # restore boundary edges (only) in other mesh
78 meshName = "1D boundary of " + init_mesh.GetName()
79 nb, new_mesh, new_group = init_mesh.MakeBoundaryElements(dim, groupName, meshName)
80
81 # restore boundary edges in mesh copy
82 meshName = init_mesh.GetName() + " + boundary"
83 nb, new_mesh, new_group = init_mesh.MakeBoundaryElements(dim, groupName, meshName, toCopyAll=True)
84
85
86
87 ## ------------------
88 ##
89 ## 1D from 2D GROUPS
90 ##
91 ## ------------------
92 dim = SMESH.BND_1DFROM3D
93
94 init_mesh = smesh.Mesh(box, "box")
95 init_mesh.AutomaticHexahedralization() # it makes 3 x 3 x 3 hexahedrons
96 # remove all edges
97 rm_edges = init_mesh.GetElementsByType( SMESH.EDGE )
98 init_mesh.RemoveElements( rm_edges )
99
100 # make groups of faces
101 fGroup1 = init_mesh.Group( f1, "f1" )
102 fGroup2 = init_mesh.Group( f2, "f2" )
103
104 # make 1D boundary around groups in this mesh
105 mesh = smesh.CopyMesh( init_mesh, "1D from 2D groups", toCopyGroups=True)
106 groups = mesh.GetGroups()
107 nb, new_mesh, new_group = mesh.MakeBoundaryElements(dim, groupName,groups=groups)
108
109 # make 1D boundary (only) in other mesh
110 meshName =  "boundary from groups of " + init_mesh.GetName()
111 groups = init_mesh.GetGroups()
112 nb, new_mesh, new_group = init_mesh.MakeBoundaryElements(dim, groupName, meshName,groups=groups)
113
114 # make 1D boundary in mesh copy
115 meshName = init_mesh.GetName() + " + boundary from groups"
116 nb, new_mesh, new_group = init_mesh.MakeBoundaryElements(dim, groupName, meshName,
117                                                          groups=groups, toCopyAll=True)
118