]> SALOME platform Git repositories - modules/shaper.git/blob - test.API/SHAPER/Transformations/TestSymmetry.py
Salome HOME
Add tests.
[modules/shaper.git] / test.API / SHAPER / Transformations / TestSymmetry.py
1 """
2 Test case for Symmetry feature. 
3 Written on High API.
4 """
5 from salome.shaper import model
6
7 model.begin()
8 partSet = model.moduleDocument()
9 Part_1 = model.addPart(partSet)
10 Part_1_doc = Part_1.document()
11
12 # Boxes
13 Box_1 = model.addBox(Part_1_doc, 10, 10, 10)
14 Box_2 = model.addBox(Part_1_doc, 10, 10, 10)
15 Box_3 = model.addBox(Part_1_doc, 10, 10, 10)
16 Box_4 = model.addBox(Part_1_doc, 10, 10, 10)
17 Box_5 = model.addBox(Part_1_doc, 10, 10, 10)
18 Box_6 = model.addBox(Part_1_doc, 10, 10, 10)
19 Box_7 = model.addBox(Part_1_doc, 10, 10, 10)
20 Box_8 = model.addBox(Part_1_doc, 10, 10, 10)
21 Box_9 = model.addBox(Part_1_doc, 10, 10, 10)
22 Box_10 = model.addBox(Part_1_doc, 10, 10, 10)
23 Box_11 = model.addBox(Part_1_doc, 10, 10, 10)
24 Box_12 = model.addBox(Part_1_doc, 10, 10, 10)
25 Box_13 = model.addBox(Part_1_doc, 10, 10, 10)
26 Box_14 = model.addBox(Part_1_doc, 10, 10, 10)
27 Box_15 = model.addBox(Part_1_doc, 10, 10, 10)
28 Box_16 = model.addBox(Part_1_doc, 10, 10, 10)
29 Box_17 = model.addBox(Part_1_doc, 10, 10, 10)
30
31 # Points
32 Point_1 = model.addPoint(Part_1_doc, -10, -10, -10)
33
34 # Axes
35 Axis_1 = model.addAxis(Part_1_doc, 10, 10, 20)
36
37 # Sketches
38 # Sketch comportant une ligne n'ayant dont les extremites ne coincident pas avec l'origine
39 Sketch_1 = model.addSketch(Part_1_doc, model.defaultPlane("XOY"))
40 SketchLine_1 = Sketch_1.addLine(-60.61265429508839, -83.21124437581197, 133.0036727560886, 114.0582209216138)
41
42 # Sketch comportant une contour ferme de 4 lignes
43 Sketch_2 = model.addSketch(Part_1_doc, model.defaultPlane("XOY"))
44 SketchLine_2 = Sketch_2.addLine(82.71019756173548, 167.8442841418389, -114.8596207554555, -2.66979472427181)
45 SketchLine_3 = Sketch_2.addLine(-114.8596207554555, -2.66979472427181, 102.2154980962352, -58.03968011252918)
46 SketchLine_4 = Sketch_2.addLine(102.2154980962352, -58.03968011252918, 240.6402115668787, 65.28415552495312)
47 SketchLine_5 = Sketch_2.addLine(240.6402115668787, 65.28415552495312, 82.71019756173548, 167.8442841418389)
48 SketchConstraintCoincidence_1 = Sketch_2.setCoincident(SketchLine_2.endPoint(), SketchLine_3.startPoint())
49 SketchConstraintCoincidence_2 = Sketch_2.setCoincident(SketchLine_3.endPoint(), SketchLine_4.startPoint())
50 SketchConstraintCoincidence_3 = Sketch_2.setCoincident(SketchLine_4.endPoint(), SketchLine_5.startPoint())
51 SketchConstraintCoincidence_4 = Sketch_2.setCoincident(SketchLine_2.startPoint(), SketchLine_5.endPoint())
52
53 # Sketch comportant un contour ferme de 5 lignes
54 Sketch_3 = model.addSketch(Part_1_doc, model.defaultPlane("XOY"))
55 SketchLine_6 = Sketch_3.addLine(26.85462764597397, 67.26291526312015, -53.39765785606262, 39.86755675840885)
56 SketchLine_7 = Sketch_3.addLine(-53.39765785606262, 39.86755675840885, -33.73745939974039, -8.799491879372397)
57 SketchLine_8 = Sketch_3.addLine(-33.73745939974039, -8.799491879372397, 33.30059435296487, -32.6495686952387)
58 SketchLine_9 = Sketch_3.addLine(33.30059435296487, -32.6495686952387, 19.44176593293446, 18.5958666253389)
59 SketchLine_10 = Sketch_3.addLine(19.44176593293446, 18.5958666253389, 26.85462764597397, 67.26291526312015)
60 SketchConstraintCoincidence_1 = Sketch_3.setCoincident(SketchLine_6.endPoint(), SketchLine_7.startPoint())
61 SketchConstraintCoincidence_2 = Sketch_3.setCoincident(SketchLine_7.endPoint(), SketchLine_8.startPoint())
62 SketchConstraintCoincidence_3 = Sketch_3.setCoincident(SketchLine_8.endPoint(), SketchLine_9.startPoint())
63 SketchConstraintCoincidence_4 = Sketch_3.setCoincident(SketchLine_9.endPoint(), SketchLine_10.startPoint())
64 SketchConstraintCoincidence_5 = Sketch_3.setCoincident(SketchLine_6.startPoint(), SketchLine_10.endPoint())
65
66 model.do()
67
68 # Vertexes
69 Vertex_1 = model.addVertex(Part_1_doc, [model.selection("VERTEX", "Sketch_1/Vertex-SketchLine_1e")])
70
71 # Edges
72 Edge_1 = model.addEdge(Part_1_doc, [model.selection("EDGE", "Sketch_1/Edge-SketchLine_1")])
73
74 # Wire & Extrusion
75 Wire_1 = model.addWire(Part_1_doc, [model.selection("WIRE", "Sketch_3/Wire-SketchLine_6f-SketchLine_7f-SketchLine_8f-SketchLine_9f-SketchLine_10f")])
76 Extrusion_1 = model.addExtrusion(Part_1_doc, [model.selection("WIRE", "Wire_1_1")], model.selection(), 50, 0)
77
78 # Planes
79 Plane_1 = model.addPlane(Part_1_doc, model.selection("FACE", "Box_14_1/Top"), 10, False)
80 Plane_2 = model.addPlane(Part_1_doc, model.selection("FACE", "PartSet/XOZ"), 40, False)
81
82 # Faces
83 Face_1 = model.addFace(Part_1_doc, [model.selection("WIRE", "Sketch_2/Wire-SketchLine_2f-SketchLine_3f-SketchLine_4f-SketchLine_5f")])
84
85
86 # Symmetries
87 Symmetry_1 = model.addSymmetry(Part_1_doc, [model.selection("SOLID", "Box_1_1")], model.selection("VERTEX", "PartSet/Origin"))
88 Symmetry_2 = model.addSymmetry(Part_1_doc, [model.selection("SOLID", "Box_2_1")], model.selection("VERTEX", "Point_1"))
89 Symmetry_3 = model.addSymmetry(Part_1_doc, [model.selection("SOLID", "Box_3_1")], model.selection("VERTEX", "Box_3_1/Front&Box_3_1/Right&Box_3_1/Top"))
90 Symmetry_4 = model.addSymmetry(Part_1_doc, [model.selection("SOLID", "Box_4_1")], model.selection("VERTEX", "Sketch_1/Vertex-SketchLine_1e"))
91 Symmetry_5 = model.addSymmetry(Part_1_doc, [model.selection("SOLID", "Box_5_1")], model.selection("VERTEX", "Vertex_1_1"))
92 Symmetry_6 = model.addSymmetry(Part_1_doc, [model.selection("SOLID", "Box_6_1")], model.selection("VERTEX", "InvalidName"))
93
94 Symmetry_7 = model.addSymmetry(Part_1_doc, [model.selection("SOLID", "Box_7_1")], model.selection("EDGE", "PartSet/OZ"))
95 Symmetry_8 = model.addSymmetry(Part_1_doc, [model.selection("SOLID", "Box_8_1")], model.selection("EDGE", "Axis_1"))
96 Symmetry_9 = model.addSymmetry(Part_1_doc, [model.selection("SOLID", "Box_9_1")], model.selection("EDGE", "Box_9_1/Front&Box_9_1/Top"))
97 Symmetry_10 = model.addSymmetry(Part_1_doc, [model.selection("SOLID", "Box_10_1")], model.selection("EDGE", "Sketch_1/Edge-SketchLine_1"))
98 Symmetry_11 = model.addSymmetry(Part_1_doc, [model.selection("SOLID", "Box_11_1")], model.selection("EDGE", "Edge_1_1"))
99 Symmetry_12 = model.addSymmetry(Part_1_doc, [model.selection("SOLID", "Box_12_1")], model.selection("EDGE", "InvalidName"))
100
101 Symmetry_13 = model.addSymmetry(Part_1_doc, [model.selection("SOLID", "Box_13_1")], model.selection("FACE", "PartSet/XOY"))
102 Symmetry_14 = model.addSymmetry(Part_1_doc, [model.selection("SOLID", "Box_14_1")], model.selection("FACE", "Plane_1"))
103 Symmetry_15 = model.addSymmetry(Part_1_doc, [model.selection("SOLID", "Box_15_1")], model.selection("FACE", "Box_15_1/Front"))
104 Symmetry_16 = model.addSymmetry(Part_1_doc, [model.selection("SOLID", "Box_16_1")], model.selection("FACE", "Face_1_1"))
105 Symmetry_17 = model.addSymmetry(Part_1_doc, [model.selection("SOLID", "Box_17_1")], model.selection("FACE", "InvalidName"))
106 Symmetry_18 = model.addSymmetry(Part_1_doc, [model.selection("SHELL", "Extrusion_1_1")], model.selection("FACE", "Plane_2"))
107
108 model.do()
109 model.end()
110
111 # Checks
112 from GeomAPI import GeomAPI_Shape
113
114 model.testNbResults(Symmetry_1, 1)
115 model.testNbSubResults(Symmetry_1, [0])
116 model.testNbSubShapes(Symmetry_1, GeomAPI_Shape.SOLID, [1])
117 model.testNbSubShapes(Symmetry_1, GeomAPI_Shape.FACE, [6])
118 model.testHaveNamingFaces(Symmetry_1, model, Part_1_doc)
119
120 model.testNbResults(Symmetry_2, 1)
121 model.testNbSubResults(Symmetry_2, [0])
122 model.testNbSubShapes(Symmetry_2, GeomAPI_Shape.SOLID, [1])
123 model.testNbSubShapes(Symmetry_2, GeomAPI_Shape.FACE, [6])
124 model.testHaveNamingFaces(Symmetry_2, model, Part_1_doc)
125
126 model.testNbResults(Symmetry_3, 1)
127 model.testNbSubResults(Symmetry_3, [0])
128 model.testNbSubShapes(Symmetry_3, GeomAPI_Shape.SOLID, [1])
129 model.testNbSubShapes(Symmetry_3, GeomAPI_Shape.FACE, [6])
130 model.testHaveNamingFaces(Symmetry_3, model, Part_1_doc)
131
132 model.testNbResults(Symmetry_4, 1)
133 model.testNbSubResults(Symmetry_4, [0])
134 model.testNbSubShapes(Symmetry_4, GeomAPI_Shape.SOLID, [1])
135 model.testNbSubShapes(Symmetry_4, GeomAPI_Shape.FACE, [6])
136 model.testHaveNamingFaces(Symmetry_4, model, Part_1_doc)
137
138 model.testNbResults(Symmetry_5, 1)
139 model.testNbSubResults(Symmetry_5, [0])
140 model.testNbSubShapes(Symmetry_5, GeomAPI_Shape.SOLID, [1])
141 model.testNbSubShapes(Symmetry_5, GeomAPI_Shape.FACE, [6])
142 model.testHaveNamingFaces(Symmetry_5, model, Part_1_doc)
143
144 model.testNbResults(Symmetry_7, 1)
145 model.testNbSubResults(Symmetry_7, [0])
146 model.testNbSubShapes(Symmetry_7, GeomAPI_Shape.SOLID, [1])
147 model.testNbSubShapes(Symmetry_7, GeomAPI_Shape.FACE, [6])
148 model.testHaveNamingFaces(Symmetry_7, model, Part_1_doc)
149
150 model.testNbResults(Symmetry_8, 1)
151 model.testNbSubResults(Symmetry_8, [0])
152 model.testNbSubShapes(Symmetry_8, GeomAPI_Shape.SOLID, [1])
153 model.testNbSubShapes(Symmetry_8, GeomAPI_Shape.FACE, [6])
154 model.testHaveNamingFaces(Symmetry_8, model, Part_1_doc)
155
156 model.testNbResults(Symmetry_9, 1)
157 model.testNbSubResults(Symmetry_9, [0])
158 model.testNbSubShapes(Symmetry_9, GeomAPI_Shape.SOLID, [1])
159 model.testNbSubShapes(Symmetry_9, GeomAPI_Shape.FACE, [6])
160 model.testHaveNamingFaces(Symmetry_9, model, Part_1_doc)
161
162 model.testNbResults(Symmetry_10, 1)
163 model.testNbSubResults(Symmetry_10, [0])
164 model.testNbSubShapes(Symmetry_10, GeomAPI_Shape.SOLID, [1])
165 model.testNbSubShapes(Symmetry_10, GeomAPI_Shape.FACE, [6])
166 model.testHaveNamingFaces(Symmetry_10, model, Part_1_doc)
167
168 model.testNbResults(Symmetry_11, 1)
169 model.testNbSubResults(Symmetry_11, [0])
170 model.testNbSubShapes(Symmetry_11, GeomAPI_Shape.SOLID, [1])
171 model.testNbSubShapes(Symmetry_11, GeomAPI_Shape.FACE, [6])
172 model.testHaveNamingFaces(Symmetry_11, model, Part_1_doc)
173
174 model.testNbResults(Symmetry_13, 1)
175 model.testNbSubResults(Symmetry_13, [0])
176 model.testNbSubShapes(Symmetry_13, GeomAPI_Shape.SOLID, [1])
177 model.testNbSubShapes(Symmetry_13, GeomAPI_Shape.FACE, [6])
178 model.testHaveNamingFaces(Symmetry_13, model, Part_1_doc)
179
180 model.testNbResults(Symmetry_14, 1)
181 model.testNbSubResults(Symmetry_14, [0])
182 model.testNbSubShapes(Symmetry_14, GeomAPI_Shape.SOLID, [1])
183 model.testNbSubShapes(Symmetry_14, GeomAPI_Shape.FACE, [6])
184 model.testHaveNamingFaces(Symmetry_14, model, Part_1_doc)
185
186 model.testNbResults(Symmetry_15, 1)
187 model.testNbSubResults(Symmetry_15, [0])
188 model.testNbSubShapes(Symmetry_15, GeomAPI_Shape.SOLID, [1])
189 model.testNbSubShapes(Symmetry_15, GeomAPI_Shape.FACE, [6])
190 model.testHaveNamingFaces(Symmetry_15, model, Part_1_doc)
191
192 model.testNbResults(Symmetry_16, 1)
193 model.testNbSubResults(Symmetry_16, [0])
194 model.testNbSubShapes(Symmetry_16, GeomAPI_Shape.SOLID, [1])
195 model.testNbSubShapes(Symmetry_16, GeomAPI_Shape.FACE, [6])
196 model.testHaveNamingFaces(Symmetry_16, model, Part_1_doc)
197
198 model.testNbResults(Symmetry_6, 0)
199 assert(Symmetry_6.feature().error() == 'Attribute "point_object" is not initialized.')
200
201 model.testNbResults(Symmetry_12, 0)
202 assert(Symmetry_12.feature().error() == 'Attribute "axis_object" is not initialized.')
203
204 model.testNbResults(Symmetry_17, 0)
205 assert(Symmetry_17.feature().error() == 'Attribute "plane_object" is not initialized.')
206
207 # To uncomment when #2046 will be performed
208 #model.testNbResults(Symmetry_18, 1)
209 #model.testNbSubResults(Symmetry_18, [0])
210 #model.testNbSubShapes(Symmetry_18, GeomAPI_Shape.SOLID, [0])
211 #model.testNbSubShapes(Symmetry_18, GeomAPI_Shape.SHELL, [1])
212 #model.testNbSubShapes(Symmetry_18, GeomAPI_Shape.FACE, [5])
213 #model.testHaveNamingFaces(Symmetry_18, model, Part_1_doc)