Salome HOME
bos #29171 Refactor testing procedure
[modules/smesh.git] / doc / examples / mechanic.py
1 # Inspired by SMESH_mechanic.py.
2 # Creates geometry and a mesh to be used in other examples
3 # --------------------------------------------------------
4
5 import salome
6 salome.salome_init_without_session()
7
8 import SMESH
9 from salome.geom import geomBuilder
10 from salome.smesh import smeshBuilder
11
12 geom_builder = geomBuilder.New()
13 smesh_builder = smeshBuilder.New()
14
15 # Geometry
16 # --------
17
18 # create planar face on a wire combined from a segment and three arcs
19
20 p1 = geom_builder.MakeVertex(100.0, 0.0, 0.0)
21 p2 = geom_builder.MakeVertex(50.0, 50.0, 0.0)
22 p3 = geom_builder.MakeVertex(100.0, 100.0, 0.0)
23 arc1 = geom_builder.MakeArc(p1, p2, p3)
24
25 p4 = geom_builder.MakeVertex(170.0, 100.0, 0.0)
26 seg1 = geom_builder.MakeVector(p3, p4)
27
28 p5 = geom_builder.MakeVertex(200.0, 70.0, 0.0)
29 p6 = geom_builder.MakeVertex(170.0, 40.0, 0.0)
30 arc2 = geom_builder.MakeArc(p4, p5, p6)
31
32 p7 = geom_builder.MakeVertex(120.0, 30.0, 0.0)
33 arc3 = geom_builder.MakeArc(p6, p7, p1)
34
35 wire1 = geom_builder.MakeWire([arc1, seg1, arc2, arc3])
36 face1 = geom_builder.MakeFace(wire1, True)
37
38 # create main shape by extruding just created planar face
39
40 pO = geom_builder.MakeVertex(0.0, 0.0, 0.0)
41 pz = geom_builder.MakeVertex(0.0, 0.0, 100.0)
42 vz = geom_builder.MakeVector(pO, pz)
43 prism1 = geom_builder.MakePrismVecH(face1, vz, 100.0)
44
45 # create two cylinders
46
47 pc1 = geom_builder.MakeVertex(90.0, 50.0, -40.0)
48 pc2 = geom_builder.MakeVertex(170.0, 70.0, -40.0)
49
50 cyl1 = geom_builder.MakeCylinder(pc1, vz, 20.0, 180.0)
51 cyl2 = geom_builder.MakeCylinder(pc2, vz, 20.0, 180.0)
52
53 # create final shape by cutting one cylinder and fusing with another
54
55 shape = geom_builder.MakeBoolean(prism1, cyl1, 2)
56 mechanic = geom_builder.MakeBoolean(shape, cyl2, 3)
57
58 # get all faces from shape and keep sub of them into variables for future processing
59
60 shape_faces = geom_builder.SubShapeAllSorted(mechanic, geom_builder.ShapeType["FACE"])
61
62 sub_face1 = shape_faces[0]
63 sub_face2 = shape_faces[4]
64 sub_face3 = shape_faces[5]
65 sub_face4 = shape_faces[10]
66
67 # Mesh
68 # ----
69
70 # create tria+tetra mesh from mechanic shape
71
72 mesh = smesh_builder.Mesh(mechanic, "mechanic")
73 mesh.Segment().NumberOfSegments(10)
74 mesh.Triangle().MaxElementArea(25)
75 mesh.Tetrahedron()
76
77 # create quad sub-meshes on faces sub_face1 - sub_face4
78
79 mesh.Quadrangle(sub_face1)
80 mesh.Quadrangle(sub_face2)
81 mesh.Quadrangle(sub_face3)
82 mesh.Quadrangle(sub_face4)
83
84 # finally compute whole mesh
85
86 mesh.Compute()