Salome HOME
Add copyright header according to request of CEA from 06.06.2017
[modules/shaper.git] / test.API / SHAPER / Transformations / TestTranslation_2.py
1 """
2 Test case for Translation 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 Box_18 = model.addBox(Part_1_doc, 10, 10, 10)
31 Box_19 = model.addBox(Part_1_doc, 10, 10, 10)
32 Box_20 = model.addBox(Part_1_doc, 10, 10, 10)
33 Box_21 = model.addBox(Part_1_doc, 10, 10, 10)
34 Box_22 = model.addBox(Part_1_doc, 10, 10, 10)
35 Box_23 = model.addBox(Part_1_doc, 10, 10, 10)
36 Box_24 = model.addBox(Part_1_doc, 10, 10, 10)
37 Box_25 = model.addBox(Part_1_doc, 10, 10, 10)
38 Box_26 = model.addBox(Part_1_doc, 10, 10, 10)
39 Box_27 = model.addBox(Part_1_doc, 10, 10, 10)
40 Box_28 = model.addBox(Part_1_doc, 10, 10, 10)
41 Box_29 = model.addBox(Part_1_doc, 10, 10, 10)
42 Box_30 = model.addBox(Part_1_doc, 10, 10, 10)
43 Box_31 = model.addBox(Part_1_doc, 10, 10, 10)
44 Box_32 = model.addBox(Part_1_doc, 10, 10, 10)
45 Box_33 = model.addBox(Part_1_doc, 10, 10, 10)
46 Box_34 = model.addBox(Part_1_doc, 10, 10, 10)
47 Box_35 = model.addBox(Part_1_doc, 10, 10, 10)
48 Box_36 = model.addBox(Part_1_doc, 10, 10, 10)
49
50 ####################
51 # Sketches
52 # Sketch contenant un triangle
53 Sketch_1 = model.addSketch(Part_1_doc, model.defaultPlane("XOY"))
54 SketchLine_1 = Sketch_1.addLine(105.8795836373178, 106.9780351893485, -55.30451701345322, -118.6797057217308)
55 SketchLine_2 = Sketch_1.addLine(-55.30451701345322, -118.6797057217308, -134.9484255703047, 86.11891628160174)
56 SketchLine_3 = Sketch_1.addLine(-134.9484255703047, 86.11891628160174, 105.8795836373178, 106.9780351893485)
57 SketchConstraintCoincidence_1 = Sketch_1.setCoincident(SketchLine_1.endPoint(), SketchLine_2.startPoint())
58 SketchConstraintCoincidence_2 = Sketch_1.setCoincident(SketchLine_2.endPoint(), SketchLine_3.startPoint())
59 SketchConstraintCoincidence_3 = Sketch_1.setCoincident(SketchLine_1.startPoint(), SketchLine_3.endPoint())
60
61 model.do()
62
63 # Edges
64 Edge_1 = model.addEdge(Part_1_doc, [model.selection("EDGE", "Sketch_1/Edge-SketchLine_2")])
65
66 # Axis
67 Axis_1 = model.addAxis(Part_1_doc, 10, 10, 10)
68
69 # Parameters
70 model.addParameter(Part_1_doc, "d", "15")
71
72 # Translation 27
73 Translation_27_1 = model.addTranslation(Part_1_doc, [model.selection("SOLID", "Box_1_1")], model.selection("EDGE", "PartSet/OX"), 5)
74 Intersection_1 = model.addIntersection(Part_1_doc, [model.selection("SOLID", "Box_2_1")], [model.selection("SOLID", "Translation_1_1")])
75 Translation_27 = model.addTranslation(Part_1_doc, [model.selection("COMPOUND", "Intersection_1_1")], model.selection("EDGE", "PartSet/OX"), 15)
76
77 # Translation 28
78 Translation_28_1 = model.addTranslation(Part_1_doc, [model.selection("SOLID", "Box_3_1")], model.selection("EDGE", "PartSet/OX"), 5)
79 Intersection_2 = model.addIntersection(Part_1_doc, [model.selection("SOLID", "Box_4_1")], [model.selection("SOLID", "Translation_3_1")])
80 Translation_28 = model.addTranslation(Part_1_doc, [model.selection("COMPOUND", "Intersection_2_1")], model.selection("EDGE", "PartSet/OX"), 0)
81
82 # Translation 29
83 Translation_29_1 = model.addTranslation(Part_1_doc, [model.selection("SOLID", "Box_5_1")], model.selection("EDGE", "PartSet/OX"), 5)
84 Intersection_3 = model.addIntersection(Part_1_doc, [model.selection("SOLID", "Box_6_1")], [model.selection("SOLID", "Translation_5_1")])
85 Translation_29 = model.addTranslation(Part_1_doc, [model.selection("COMPOUND", "Intersection_3_1")], model.selection("EDGE", "PartSet/OX"), -15)
86
87 # Translation 30
88 Translation_30_1 = model.addTranslation(Part_1_doc, [model.selection("SOLID", "Box_7_1")], model.selection("EDGE", "PartSet/OX"), 5)
89 Intersection_4 = model.addIntersection(Part_1_doc, [model.selection("SOLID", "Box_8_1")], [model.selection("SOLID", "Translation_7_1")])
90 Translation_30 = model.addTranslation(Part_1_doc, [model.selection("COMPOUND", "Intersection_4_1")], model.selection("EDGE", "InvalidName"), -15)
91
92 # Translation 31
93 Translation_31_1 = model.addTranslation(Part_1_doc, [model.selection("SOLID", "Box_9_1")], model.selection("EDGE", "PartSet/OX"), 5)
94 Intersection_5 = model.addIntersection(Part_1_doc, [model.selection("SOLID", "Box_10_1")], [model.selection("SOLID", "Translation_9_1")])
95 Translation_31 = model.addTranslation(Part_1_doc, [model.selection("COMPOUND", "Intersection_5_1")], model.selection("EDGE", "PartSet/OY"), "d")
96
97 # Translation 32
98 Translation_32_1 = model.addTranslation(Part_1_doc, [model.selection("SOLID", "Box_11_1")], model.selection("EDGE", "PartSet/OX"), 5)
99 Intersection_6 = model.addIntersection(Part_1_doc, [model.selection("SOLID", "Box_12_1")], [model.selection("SOLID", "Translation_11_1")])
100 Translation_32 = model.addTranslation(Part_1_doc, [model.selection("COMPOUND", "Intersection_6_1")], model.selection("EDGE", "Sketch_1/Edge-SketchLine_1"), 15)
101
102 # Translation 33
103 Translation_33_1 = model.addTranslation(Part_1_doc, [model.selection("SOLID", "Box_13_1")], model.selection("EDGE", "PartSet/OX"), 5)
104 Intersection_7 = model.addIntersection(Part_1_doc, [model.selection("SOLID", "Box_14_1")], [model.selection("SOLID", "Translation_13_1")])
105 Translation_33 = model.addTranslation(Part_1_doc, [model.selection("COMPOUND", "Intersection_7_1")], model.selection("EDGE", "Edge_1_1"), 15)
106
107 # Translation 34
108 Translation_34_1 = model.addTranslation(Part_1_doc, [model.selection("SOLID", "Box_15_1")], model.selection("EDGE", "PartSet/OX"), 5)
109 Intersection_8 = model.addIntersection(Part_1_doc, [model.selection("SOLID", "Box_16_1")], [model.selection("SOLID", "Translation_15_1")])
110 Translation_34 = model.addTranslation(Part_1_doc, [model.selection("COMPOUND", "Intersection_8_1")], model.selection("EDGE", "Intersection_8_1_6"), 15)
111
112 # Translation 35
113 Translation_35_1 = model.addTranslation(Part_1_doc, [model.selection("SOLID", "Box_17_1")], model.selection("EDGE", "PartSet/OX"), 5)
114 Intersection_9 = model.addIntersection(Part_1_doc, [model.selection("SOLID", "Box_18_1")], [model.selection("SOLID", "Translation_17_1")])
115 Translation_35 = model.addTranslation(Part_1_doc, [model.selection("COMPOUND", "Intersection_9_1")], model.selection("EDGE", "Axis_1"), 15)
116
117 #Translation 36
118 Translation_36_1 = model.addTranslation(Part_1_doc, [model.selection("SOLID", "Box_19_1")], model.selection("EDGE", "PartSet/OX"), 5)
119 Partition_1 = model.addPartition(Part_1_doc, [model.selection("SOLID", "Box_20_1"), model.selection("SOLID", "Translation_19_1")])
120 Translation_36 = model.addTranslation(Part_1_doc, [model.selection("COMPSOLID", "Partition_1_1")], model.selection("EDGE", "PartSet/OX"), 15)
121
122 ## Translation 37
123 Translation_37_1 = model.addTranslation(Part_1_doc, [model.selection("SOLID", "Box_21_1")], model.selection("EDGE", "PartSet/OX"), 5)
124 Partition_2 = model.addPartition(Part_1_doc, [model.selection("SOLID", "Box_22_1"), model.selection("SOLID", "Translation_21_1")])
125 Translation_37 = model.addTranslation(Part_1_doc, [model.selection("COMPSOLID", "Partition_2_1")], model.selection("EDGE", "PartSet/OX"), 0)
126
127 ## Translation 38
128 Translation_38_1 = model.addTranslation(Part_1_doc, [model.selection("SOLID", "Box_23_1")], model.selection("EDGE", "PartSet/OX"), 5)
129 Partition_3 = model.addPartition(Part_1_doc, [model.selection("SOLID", "Box_24_1"), model.selection("SOLID", "Translation_23_1")])
130 Translation_38 = model.addTranslation(Part_1_doc, [model.selection("COMPSOLID", "Partition_3_1")], model.selection("EDGE", "PartSet/OX"), 0)
131
132 ## Translation 39
133 Translation_39_1 = model.addTranslation(Part_1_doc, [model.selection("SOLID", "Box_25_1")], model.selection("EDGE", "PartSet/OX"), 5)
134 Partition_4 = model.addPartition(Part_1_doc, [model.selection("SOLID", "Box_26_1"), model.selection("SOLID", "Translation_25_1")])
135 Translation_39 = model.addTranslation(Part_1_doc, [model.selection("COMPSOLID", "Partition_4_1")], model.selection("EDGE", "InvalidName"), 0)
136
137 ## Translation 40
138 Translation_40_1 = model.addTranslation(Part_1_doc, [model.selection("SOLID", "Box_27_1")], model.selection("EDGE", "PartSet/OX"), 5)
139 Partition_5 = model.addPartition(Part_1_doc, [model.selection("SOLID", "Box_28_1"), model.selection("SOLID", "Translation_27_1")])
140 Translation_40 = model.addTranslation(Part_1_doc, [model.selection("COMPSOLID", "Partition_5_1")], model.selection("EDGE", "PartSet/OX"), "d")
141
142 # Translation 41
143 Translation_41_1 = model.addTranslation(Part_1_doc, [model.selection("SOLID", "Box_29_1")], model.selection("EDGE", "PartSet/OX"), 5)
144 Partition_6 = model.addPartition(Part_1_doc, [model.selection("SOLID", "Box_30_1"), model.selection("SOLID", "Translation_29_1")])
145 Translation_41 = model.addTranslation(Part_1_doc, [model.selection("COMPSOLID", "Partition_6_1")], model.selection("EDGE", "Sketch_1/Edge-SketchLine_1"), 15)
146
147 # Translateion 42
148 Translation_42_1 = model.addTranslation(Part_1_doc, [model.selection("SOLID", "Box_31_1")], model.selection("EDGE", "PartSet/OX"), 5)
149 Partition_7 = model.addPartition(Part_1_doc, [model.selection("SOLID", "Box_32_1"), model.selection("SOLID", "Translation_31_1")])
150 Translation_42 = model.addTranslation(Part_1_doc, [model.selection("COMPSOLID", "Partition_7_1")], model.selection("EDGE", "Edge_1_1"), 15)
151
152 # Translation 43
153 Translation_43_1 = model.addTranslation(Part_1_doc, [model.selection("SOLID", "Box_33_1")], model.selection("EDGE", "PartSet/OX"), 5)
154 Partition_8 = model.addPartition(Part_1_doc, [model.selection("SOLID", "Box_34_1"), model.selection("SOLID", "Translation_33_1")])
155 Translation_43 = model.addTranslation(Part_1_doc, [model.selection("COMPSOLID", "Partition_8_1")], model.selection("EDGE", "Partition_8_1/Modified_Face_1_1_1&Partition_8_1/Modified_Face_1_9_1"), 15)
156
157 # Translation 44
158 Translation_44_1 = model.addTranslation(Part_1_doc, [model.selection("SOLID", "Box_35_1")], model.selection("EDGE", "PartSet/OX"), 5)
159 Partition_9 = model.addPartition(Part_1_doc, [model.selection("SOLID", "Box_36_1"), model.selection("SOLID", "Translation_35_1")])
160 Translation_44 = model.addTranslation(Part_1_doc, [model.selection("COMPSOLID", "Partition_9_1")], model.selection("EDGE", "Axis_1"), 15)
161 model.do()
162 model.end()
163
164
165 # Checks
166 from GeomAPI import GeomAPI_Shape
167 from GeomAPI import GeomAPI_ShapeExplorer
168
169 def testHaveNamingEdges(theFeature, theModel, thePartDoc) :
170   """ Tests if all faces of result have a name
171   :param theFeature: feature to test.
172   """
173   # Get feature result/sub-result
174   aResult = theFeature.results()[0].resultSubShapePair()[0]
175   # Get result/sub-result shape
176   shape = aResult.shape()
177   # Create shape explorer with desired shape type
178   shapeExplorer = GeomAPI_ShapeExplorer(shape, GeomAPI_Shape.EDGE)
179   # Create list, and store selections in it
180   selectionList = []
181   while shapeExplorer.more():
182     selection = theModel.selection(aResult, shapeExplorer.current()) # First argument should be result/sub-result, second is sub-shape on this result/sub-result
183     selectionList.append(selection)
184     shapeExplorer.next()
185   # Create group with this selection list
186   Group_1 = theModel.addGroup(thePartDoc, selectionList)
187   theModel.do()
188   theModel.end()
189
190   # Now you can check that all selected shapes in group have right shape type and name.
191   groupFeature = Group_1.feature()
192   groupSelectionList = groupFeature.selectionList("group_list")
193   theModel.end()
194   assert(groupSelectionList.size() == len(selectionList))
195   for index in range(0, groupSelectionList.size()):
196     attrSelection = groupSelectionList.value(index)
197     shape = attrSelection.value()
198     name = attrSelection.namingName()
199     assert(shape.isEdge())
200     assert(name != ""), "String empty"
201
202 # Translation 27
203 model.testNbResults(Translation_27, 1)
204 model.testNbSubResults(Translation_27, [12])
205 model.testNbSubShapes(Translation_27, GeomAPI_Shape.SOLID, [0])
206 model.testNbSubShapes(Translation_27, GeomAPI_Shape.EDGE, [12])
207 testHaveNamingEdges(Translation_27, model, Part_1_doc)
208
209 # Translation 28
210 model.testNbResults(Translation_28, 1)
211 model.testNbSubResults(Translation_28, [12])
212 model.testNbSubShapes(Translation_28, GeomAPI_Shape.SOLID, [0])
213 model.testNbSubShapes(Translation_28, GeomAPI_Shape.EDGE, [12])
214 testHaveNamingEdges(Translation_28, model, Part_1_doc)
215
216 # Translation 29
217 model.testNbResults(Translation_29, 1)
218 model.testNbSubResults(Translation_29, [12])
219 model.testNbSubShapes(Translation_29, GeomAPI_Shape.SOLID, [0])
220 model.testNbSubShapes(Translation_29, GeomAPI_Shape.EDGE, [12])
221 testHaveNamingEdges(Translation_29, model, Part_1_doc)
222
223 # Translation 31
224 model.testNbResults(Translation_31, 1)
225 model.testNbSubResults(Translation_31, [12])
226 model.testNbSubShapes(Translation_31, GeomAPI_Shape.SOLID, [0])
227 model.testNbSubShapes(Translation_31, GeomAPI_Shape.EDGE, [12])
228 testHaveNamingEdges(Translation_31, model, Part_1_doc)
229
230 # Translation 32
231 model.testNbResults(Translation_32, 1)
232 model.testNbSubResults(Translation_32, [12])
233 model.testNbSubShapes(Translation_32, GeomAPI_Shape.SOLID, [0])
234 model.testNbSubShapes(Translation_32, GeomAPI_Shape.EDGE, [12])
235 testHaveNamingEdges(Translation_32, model, Part_1_doc)
236
237 # Translation 33
238 model.testNbResults(Translation_33, 1)
239 model.testNbSubResults(Translation_33, [12])
240 model.testNbSubShapes(Translation_33, GeomAPI_Shape.SOLID, [0])
241 model.testNbSubShapes(Translation_33, GeomAPI_Shape.EDGE, [12])
242 testHaveNamingEdges(Translation_33, model, Part_1_doc)
243
244 # Translation 34
245 model.testNbResults(Translation_34, 1)
246 model.testNbSubResults(Translation_34, [12])
247 model.testNbSubShapes(Translation_34, GeomAPI_Shape.SOLID, [0])
248 model.testNbSubShapes(Translation_34, GeomAPI_Shape.EDGE, [12])
249 testHaveNamingEdges(Translation_34, model, Part_1_doc)
250
251 # Translation 35
252 model.testNbResults(Translation_35, 1)
253 model.testNbSubResults(Translation_35, [12])
254 model.testNbSubShapes(Translation_35, GeomAPI_Shape.SOLID, [0])
255 model.testNbSubShapes(Translation_35, GeomAPI_Shape.EDGE, [12])
256 testHaveNamingEdges(Translation_35, model, Part_1_doc)
257
258 # Translation 36
259 model.testNbResults(Translation_36, 1)
260 model.testNbSubResults(Translation_36, [3])
261 model.testNbSubShapes(Translation_36, GeomAPI_Shape.COMPSOLID, [1])
262 model.testNbSubShapes(Translation_36, GeomAPI_Shape.SOLID, [3])
263 model.testNbSubShapes(Translation_36, GeomAPI_Shape.FACE, [18])
264 model.testHaveNamingFaces(Translation_36, model, Part_1_doc)
265
266 # Translation 37
267 model.testNbResults(Translation_37, 1)
268 model.testNbSubResults(Translation_37, [3])
269 model.testNbSubShapes(Translation_37, GeomAPI_Shape.COMPSOLID, [1])
270 model.testNbSubShapes(Translation_37, GeomAPI_Shape.SOLID, [3])
271 model.testNbSubShapes(Translation_37, GeomAPI_Shape.FACE, [18])
272 model.testHaveNamingFaces(Translation_37, model, Part_1_doc)
273
274 # Translation 38
275 model.testNbResults(Translation_38, 1)
276 model.testNbSubResults(Translation_38, [3])
277 model.testNbSubShapes(Translation_38, GeomAPI_Shape.COMPSOLID, [1])
278 model.testNbSubShapes(Translation_38, GeomAPI_Shape.SOLID, [3])
279 model.testNbSubShapes(Translation_38, GeomAPI_Shape.FACE, [18])
280 model.testHaveNamingFaces(Translation_38, model, Part_1_doc)
281
282 # Translation 40
283 model.testNbResults(Translation_40, 1)
284 model.testNbSubResults(Translation_40, [3])
285 model.testNbSubShapes(Translation_40, GeomAPI_Shape.COMPSOLID, [1])
286 model.testNbSubShapes(Translation_40, GeomAPI_Shape.SOLID, [3])
287 model.testNbSubShapes(Translation_40, GeomAPI_Shape.FACE, [18])
288 model.testHaveNamingFaces(Translation_40, model, Part_1_doc)
289
290 # Translation 41
291 model.testNbResults(Translation_41, 1)
292 model.testNbSubResults(Translation_41, [3])
293 model.testNbSubShapes(Translation_41, GeomAPI_Shape.COMPSOLID, [1])
294 model.testNbSubShapes(Translation_41, GeomAPI_Shape.SOLID, [3])
295 model.testNbSubShapes(Translation_41, GeomAPI_Shape.FACE, [18])
296 model.testHaveNamingFaces(Translation_41, model, Part_1_doc)
297
298 # Translation 42
299 model.testNbResults(Translation_42, 1)
300 model.testNbSubResults(Translation_42, [3])
301 model.testNbSubShapes(Translation_42, GeomAPI_Shape.COMPSOLID, [1])
302 model.testNbSubShapes(Translation_42, GeomAPI_Shape.SOLID, [3])
303 model.testNbSubShapes(Translation_42, GeomAPI_Shape.FACE, [18])
304 model.testHaveNamingFaces(Translation_42, model, Part_1_doc)
305
306 # Translation 43
307 model.testNbResults(Translation_43, 1)
308 model.testNbSubResults(Translation_43, [3])
309 model.testNbSubShapes(Translation_43, GeomAPI_Shape.COMPSOLID, [1])
310 model.testNbSubShapes(Translation_43, GeomAPI_Shape.SOLID, [3])
311 model.testNbSubShapes(Translation_43, GeomAPI_Shape.FACE, [18])
312 model.testHaveNamingFaces(Translation_43, model, Part_1_doc)
313
314 # Translation 44
315 model.testNbResults(Translation_44, 1)
316 model.testNbSubResults(Translation_44, [3])
317 model.testNbSubShapes(Translation_44, GeomAPI_Shape.COMPSOLID, [1])
318 model.testNbSubShapes(Translation_44, GeomAPI_Shape.SOLID, [3])
319 model.testNbSubShapes(Translation_44, GeomAPI_Shape.FACE, [18])
320 model.testHaveNamingFaces(Translation_44, model, Part_1_doc)
321
322 # Translation 30
323 model.testNbResults(Translation_30, 0)
324 assert(Translation_30.feature().error() == 'Attribute "axis_object" is not initialized.')
325
326 # Translation 39
327 model.testNbResults(Translation_39, 0)
328 assert(Translation_39.feature().error() == 'Attribute "axis_object" is not initialized.')