Salome HOME
a0a0635eaf8163b74d7d28d9ca901743e39bf843
[modules/shaper.git] / test.API / SHAPER / Transformations / TestTranslation_2.py
1 # Copyright (C) 2014-2023  CEA/DEN, EDF R&D
2 #
3 # This library is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU Lesser General Public
5 # License as published by the Free Software Foundation; either
6 # version 2.1 of the License, or (at your option) any later version.
7 #
8 # This library is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 # Lesser General Public License for more details.
12 #
13 # You should have received a copy of the GNU Lesser General Public
14 # License along with this library; if not, write to the Free Software
15 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 #
17 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 #
19
20 """
21 Test case for Translation feature.
22 Written on High API.
23 """
24 from salome.shaper import model
25
26 model.begin()
27 partSet = model.moduleDocument()
28 Part_1 = model.addPart(partSet)
29 Part_1_doc = Part_1.document()
30
31 # Boxes
32 Box_1 = model.addBox(Part_1_doc, 10, 10, 10)
33 Box_2 = model.addBox(Part_1_doc, 10, 10, 10)
34 Box_3 = model.addBox(Part_1_doc, 10, 10, 10)
35 Box_4 = model.addBox(Part_1_doc, 10, 10, 10)
36 Box_5 = model.addBox(Part_1_doc, 10, 10, 10)
37 Box_6 = model.addBox(Part_1_doc, 10, 10, 10)
38 Box_7 = model.addBox(Part_1_doc, 10, 10, 10)
39 Box_8 = model.addBox(Part_1_doc, 10, 10, 10)
40 Box_9 = model.addBox(Part_1_doc, 10, 10, 10)
41 Box_10 = model.addBox(Part_1_doc, 10, 10, 10)
42 Box_11 = model.addBox(Part_1_doc, 10, 10, 10)
43 Box_12 = model.addBox(Part_1_doc, 10, 10, 10)
44 Box_13 = model.addBox(Part_1_doc, 10, 10, 10)
45 Box_14 = model.addBox(Part_1_doc, 10, 10, 10)
46 Box_15 = model.addBox(Part_1_doc, 10, 10, 10)
47 Box_16 = model.addBox(Part_1_doc, 10, 10, 10)
48 Box_17 = model.addBox(Part_1_doc, 10, 10, 10)
49 Box_18 = model.addBox(Part_1_doc, 10, 10, 10)
50 Box_19 = model.addBox(Part_1_doc, 10, 10, 10)
51 Box_20 = model.addBox(Part_1_doc, 10, 10, 10)
52 Box_21 = model.addBox(Part_1_doc, 10, 10, 10)
53 Box_22 = model.addBox(Part_1_doc, 10, 10, 10)
54 Box_23 = model.addBox(Part_1_doc, 10, 10, 10)
55 Box_24 = model.addBox(Part_1_doc, 10, 10, 10)
56 Box_25 = model.addBox(Part_1_doc, 10, 10, 10)
57 Box_26 = model.addBox(Part_1_doc, 10, 10, 10)
58 Box_27 = model.addBox(Part_1_doc, 10, 10, 10)
59 Box_28 = model.addBox(Part_1_doc, 10, 10, 10)
60 Box_29 = model.addBox(Part_1_doc, 10, 10, 10)
61 Box_30 = model.addBox(Part_1_doc, 10, 10, 10)
62 Box_31 = model.addBox(Part_1_doc, 10, 10, 10)
63 Box_32 = model.addBox(Part_1_doc, 10, 10, 10)
64 Box_33 = model.addBox(Part_1_doc, 10, 10, 10)
65 Box_34 = model.addBox(Part_1_doc, 10, 10, 10)
66 Box_35 = model.addBox(Part_1_doc, 10, 10, 10)
67 Box_36 = model.addBox(Part_1_doc, 10, 10, 10)
68
69 ####################
70 # Sketches
71 # Sketch contenant un triangle
72 Sketch_1 = model.addSketch(Part_1_doc, model.defaultPlane("XOY"))
73 SketchLine_1 = Sketch_1.addLine(105.8795836373178, 106.9780351893485, -55.30451701345322, -118.6797057217308)
74 SketchLine_2 = Sketch_1.addLine(-55.30451701345322, -118.6797057217308, -134.9484255703047, 86.11891628160174)
75 SketchLine_3 = Sketch_1.addLine(-134.9484255703047, 86.11891628160174, 105.8795836373178, 106.9780351893485)
76 SketchConstraintCoincidence_1 = Sketch_1.setCoincident(SketchLine_1.endPoint(), SketchLine_2.startPoint())
77 SketchConstraintCoincidence_2 = Sketch_1.setCoincident(SketchLine_2.endPoint(), SketchLine_3.startPoint())
78 SketchConstraintCoincidence_3 = Sketch_1.setCoincident(SketchLine_1.startPoint(), SketchLine_3.endPoint())
79
80 model.do()
81
82 # Edges
83 Edge_1 = model.addEdge(Part_1_doc, [model.selection("EDGE", "Sketch_1/SketchLine_2")])
84
85 # Axis
86 Axis_1 = model.addAxis(Part_1_doc, 10, 10, 10)
87
88 # Parameters
89 model.addParameter(Part_1_doc, "d", "15")
90
91 # Translation 27
92 Translation_27_1 = model.addTranslation(Part_1_doc, [model.selection("SOLID", "Box_1_1")], model.selection("EDGE", "PartSet/OX"), 5)
93 Intersection_1 = model.addIntersection(Part_1_doc, [model.selection("SOLID", "Box_2_1"), model.selection("SOLID", "Translation_1_1")])
94 Translation_27 = model.addTranslation(Part_1_doc, [model.selection("COMPOUND", "Intersection_1_1")], model.selection("EDGE", "PartSet/OX"), 15)
95
96 # Translation 28
97 Translation_28_1 = model.addTranslation(Part_1_doc, [model.selection("SOLID", "Box_3_1")], model.selection("EDGE", "PartSet/OX"), 5)
98 Intersection_2 = model.addIntersection(Part_1_doc, [model.selection("SOLID", "Box_4_1"), model.selection("SOLID", "Translation_3_1")])
99 Translation_28 = model.addTranslation(Part_1_doc, [model.selection("COMPOUND", "Intersection_2_1")], model.selection("EDGE", "PartSet/OX"), 0)
100
101 # Translation 29
102 Translation_29_1 = model.addTranslation(Part_1_doc, [model.selection("SOLID", "Box_5_1")], model.selection("EDGE", "PartSet/OX"), 5)
103 Intersection_3 = model.addIntersection(Part_1_doc, [model.selection("SOLID", "Box_6_1"), model.selection("SOLID", "Translation_5_1")])
104 Translation_29 = model.addTranslation(Part_1_doc, [model.selection("COMPOUND", "Intersection_3_1")], model.selection("EDGE", "PartSet/OX"), -15)
105
106 # Translation 30
107 Translation_30_1 = model.addTranslation(Part_1_doc, [model.selection("SOLID", "Box_7_1")], model.selection("EDGE", "PartSet/OX"), 5)
108 Intersection_4 = model.addIntersection(Part_1_doc, [model.selection("SOLID", "Box_8_1"), model.selection("SOLID", "Translation_7_1")])
109 Translation_30 = model.addTranslation(Part_1_doc, [model.selection("COMPOUND", "Intersection_4_1")], model.selection("EDGE", "InvalidName"), -15)
110
111 # Translation 31
112 Translation_31_1 = model.addTranslation(Part_1_doc, [model.selection("SOLID", "Box_9_1")], model.selection("EDGE", "PartSet/OX"), 5)
113 Intersection_5 = model.addIntersection(Part_1_doc, [model.selection("SOLID", "Box_10_1"), model.selection("SOLID", "Translation_9_1")])
114 Translation_31 = model.addTranslation(Part_1_doc, [model.selection("COMPOUND", "Intersection_5_1")], model.selection("EDGE", "PartSet/OY"), "d")
115
116 # Translation 32
117 Translation_32_1 = model.addTranslation(Part_1_doc, [model.selection("SOLID", "Box_11_1")], model.selection("EDGE", "PartSet/OX"), 5)
118 Intersection_6 = model.addIntersection(Part_1_doc, [model.selection("SOLID", "Box_12_1"), model.selection("SOLID", "Translation_11_1")])
119 Translation_32 = model.addTranslation(Part_1_doc, [model.selection("COMPOUND", "Intersection_6_1")], model.selection("EDGE", "Sketch_1/SketchLine_1"), 15)
120
121 # Translation 33
122 Translation_33_1 = model.addTranslation(Part_1_doc, [model.selection("SOLID", "Box_13_1")], model.selection("EDGE", "PartSet/OX"), 5)
123 Intersection_7 = model.addIntersection(Part_1_doc, [model.selection("SOLID", "Box_14_1"), model.selection("SOLID", "Translation_13_1")])
124 Translation_33 = model.addTranslation(Part_1_doc, [model.selection("COMPOUND", "Intersection_7_1")], model.selection("EDGE", "Edge_1_1"), 15)
125
126 # Translation 34
127 Translation_34_1 = model.addTranslation(Part_1_doc, [model.selection("SOLID", "Box_15_1")], model.selection("EDGE", "PartSet/OX"), 5)
128 Intersection_8 = model.addIntersection(Part_1_doc, [model.selection("SOLID", "Box_16_1"), model.selection("SOLID", "Translation_15_1")])
129 Translation_34 = model.addTranslation(Part_1_doc, [model.selection("COMPOUND", "Intersection_8_1")], model.selection("EDGE", "Intersection_8_1_6"), 15)
130
131 # Translation 35
132 Translation_35_1 = model.addTranslation(Part_1_doc, [model.selection("SOLID", "Box_17_1")], model.selection("EDGE", "PartSet/OX"), 5)
133 Intersection_9 = model.addIntersection(Part_1_doc, [model.selection("SOLID", "Box_18_1"), model.selection("SOLID", "Translation_17_1")])
134 Translation_35 = model.addTranslation(Part_1_doc, [model.selection("COMPOUND", "Intersection_9_1")], model.selection("EDGE", "Axis_1"), 15)
135
136 #Translation 36
137 Translation_36_1 = model.addTranslation(Part_1_doc, [model.selection("SOLID", "Box_19_1")], model.selection("EDGE", "PartSet/OX"), 5)
138 Partition_1 = model.addPartition(Part_1_doc, [model.selection("SOLID", "Box_20_1"), model.selection("SOLID", "Translation_19_1")])
139 Translation_36 = model.addTranslation(Part_1_doc, [model.selection("COMPSOLID", "Partition_1_1")], model.selection("EDGE", "PartSet/OX"), 15)
140
141 ## Translation 37
142 Translation_37_1 = model.addTranslation(Part_1_doc, [model.selection("SOLID", "Box_21_1")], model.selection("EDGE", "PartSet/OX"), 5)
143 Partition_2 = model.addPartition(Part_1_doc, [model.selection("SOLID", "Box_22_1"), model.selection("SOLID", "Translation_21_1")])
144 Translation_37 = model.addTranslation(Part_1_doc, [model.selection("COMPSOLID", "Partition_2_1")], model.selection("EDGE", "PartSet/OX"), 0)
145
146 ## Translation 38
147 Translation_38_1 = model.addTranslation(Part_1_doc, [model.selection("SOLID", "Box_23_1")], model.selection("EDGE", "PartSet/OX"), 5)
148 Partition_3 = model.addPartition(Part_1_doc, [model.selection("SOLID", "Box_24_1"), model.selection("SOLID", "Translation_23_1")])
149 Translation_38 = model.addTranslation(Part_1_doc, [model.selection("COMPSOLID", "Partition_3_1")], model.selection("EDGE", "PartSet/OX"), 0)
150
151 ## Translation 39
152 Translation_39_1 = model.addTranslation(Part_1_doc, [model.selection("SOLID", "Box_25_1")], model.selection("EDGE", "PartSet/OX"), 5)
153 Partition_4 = model.addPartition(Part_1_doc, [model.selection("SOLID", "Box_26_1"), model.selection("SOLID", "Translation_25_1")])
154 Translation_39 = model.addTranslation(Part_1_doc, [model.selection("COMPSOLID", "Partition_4_1")], model.selection("EDGE", "InvalidName"), 0)
155
156 ## Translation 40
157 Translation_40_1 = model.addTranslation(Part_1_doc, [model.selection("SOLID", "Box_27_1")], model.selection("EDGE", "PartSet/OX"), 5)
158 Partition_5 = model.addPartition(Part_1_doc, [model.selection("SOLID", "Box_28_1"), model.selection("SOLID", "Translation_27_1")])
159 Translation_40 = model.addTranslation(Part_1_doc, [model.selection("COMPSOLID", "Partition_5_1")], model.selection("EDGE", "PartSet/OX"), "d")
160
161 # Translation 41
162 Translation_41_1 = model.addTranslation(Part_1_doc, [model.selection("SOLID", "Box_29_1")], model.selection("EDGE", "PartSet/OX"), 5)
163 Partition_6 = model.addPartition(Part_1_doc, [model.selection("SOLID", "Box_30_1"), model.selection("SOLID", "Translation_29_1")])
164 Translation_41 = model.addTranslation(Part_1_doc, [model.selection("COMPSOLID", "Partition_6_1")], model.selection("EDGE", "Sketch_1/SketchLine_1"), 15)
165
166 # Translation 42
167 Translation_42_1 = model.addTranslation(Part_1_doc, [model.selection("SOLID", "Box_31_1")], model.selection("EDGE", "PartSet/OX"), 5)
168 Partition_7 = model.addPartition(Part_1_doc, [model.selection("SOLID", "Box_32_1"), model.selection("SOLID", "Translation_31_1")])
169 Translation_42 = model.addTranslation(Part_1_doc, [model.selection("COMPSOLID", "Partition_7_1")], model.selection("EDGE", "Edge_1_1"), 15)
170
171 # Translation 43
172 Translation_43_1 = model.addTranslation(Part_1_doc, [model.selection("SOLID", "Box_33_1")], model.selection("EDGE", "PartSet/OX"), 5)
173 Partition_8 = model.addPartition(Part_1_doc, [model.selection("SOLID", "Box_34_1"), model.selection("SOLID", "Translation_33_1")])
174 Translation_43 = model.addTranslation(Part_1_doc, [model.selection("COMPSOLID", "Partition_8_1")], model.selection("EDGE", "Partition_8_1_1/Modified_Face_2_5&Partition_8_1_1/Modified_Face_2_2"), 15)
175
176 # Translation 44
177 Translation_44_1 = model.addTranslation(Part_1_doc, [model.selection("SOLID", "Box_35_1")], model.selection("EDGE", "PartSet/OX"), 5)
178 Partition_9 = model.addPartition(Part_1_doc, [model.selection("SOLID", "Box_36_1"), model.selection("SOLID", "Translation_35_1")])
179 Translation_44 = model.addTranslation(Part_1_doc, [model.selection("COMPSOLID", "Partition_9_1")], model.selection("EDGE", "Axis_1"), 15)
180 model.do()
181 model.end()
182
183 # Checks
184 from GeomAPI import GeomAPI_Shape
185
186 # Translation 27
187 model.testNbResults(Translation_27, 1)
188 model.testNbSubResults(Translation_27, [12])
189 model.testNbSubShapes(Translation_27, GeomAPI_Shape.SOLID, [0])
190 model.testNbSubShapes(Translation_27, GeomAPI_Shape.EDGE, [12])
191 model.testHaveNamingEdges(Translation_27, model, Part_1_doc)
192
193 # Translation 28
194 model.testNbResults(Translation_28, 1)
195 model.testNbSubResults(Translation_28, [12])
196 model.testNbSubShapes(Translation_28, GeomAPI_Shape.SOLID, [0])
197 model.testNbSubShapes(Translation_28, GeomAPI_Shape.EDGE, [12])
198 model.testHaveNamingEdges(Translation_28, model, Part_1_doc)
199
200 # Translation 29
201 model.testNbResults(Translation_29, 1)
202 model.testNbSubResults(Translation_29, [12])
203 model.testNbSubShapes(Translation_29, GeomAPI_Shape.SOLID, [0])
204 model.testNbSubShapes(Translation_29, GeomAPI_Shape.EDGE, [12])
205 model.testHaveNamingEdges(Translation_29, model, Part_1_doc)
206
207 # Translation 31
208 model.testNbResults(Translation_31, 1)
209 model.testNbSubResults(Translation_31, [12])
210 model.testNbSubShapes(Translation_31, GeomAPI_Shape.SOLID, [0])
211 model.testNbSubShapes(Translation_31, GeomAPI_Shape.EDGE, [12])
212 model.testHaveNamingEdges(Translation_31, model, Part_1_doc)
213
214 # Translation 32
215 model.testNbResults(Translation_32, 1)
216 model.testNbSubResults(Translation_32, [12])
217 model.testNbSubShapes(Translation_32, GeomAPI_Shape.SOLID, [0])
218 model.testNbSubShapes(Translation_32, GeomAPI_Shape.EDGE, [12])
219 model.testHaveNamingEdges(Translation_32, model, Part_1_doc)
220
221 # Translation 33
222 model.testNbResults(Translation_33, 1)
223 model.testNbSubResults(Translation_33, [12])
224 model.testNbSubShapes(Translation_33, GeomAPI_Shape.SOLID, [0])
225 model.testNbSubShapes(Translation_33, GeomAPI_Shape.EDGE, [12])
226 model.testHaveNamingEdges(Translation_33, model, Part_1_doc)
227
228 # Translation 34
229 model.testNbResults(Translation_34, 1)
230 model.testNbSubResults(Translation_34, [12])
231 model.testNbSubShapes(Translation_34, GeomAPI_Shape.SOLID, [0])
232 model.testNbSubShapes(Translation_34, GeomAPI_Shape.EDGE, [12])
233 model.testHaveNamingEdges(Translation_34, model, Part_1_doc)
234
235 # Translation 35
236 model.testNbResults(Translation_35, 1)
237 model.testNbSubResults(Translation_35, [12])
238 model.testNbSubShapes(Translation_35, GeomAPI_Shape.SOLID, [0])
239 model.testNbSubShapes(Translation_35, GeomAPI_Shape.EDGE, [12])
240 model.testHaveNamingEdges(Translation_35, model, Part_1_doc)
241
242 # Translation 36
243 model.testNbResults(Translation_36, 1)
244 model.testNbSubResults(Translation_36, [3])
245 model.testNbSubShapes(Translation_36, GeomAPI_Shape.COMPSOLID, [1])
246 model.testNbSubShapes(Translation_36, GeomAPI_Shape.SOLID, [3])
247 model.testNbSubShapes(Translation_36, GeomAPI_Shape.FACE, [18])
248 model.testHaveNamingFaces(Translation_36, model, Part_1_doc)
249
250 # Translation 37
251 model.testNbResults(Translation_37, 1)
252 model.testNbSubResults(Translation_37, [3])
253 model.testNbSubShapes(Translation_37, GeomAPI_Shape.COMPSOLID, [1])
254 model.testNbSubShapes(Translation_37, GeomAPI_Shape.SOLID, [3])
255 model.testNbSubShapes(Translation_37, GeomAPI_Shape.FACE, [18])
256 model.testHaveNamingFaces(Translation_37, model, Part_1_doc)
257
258 # Translation 38
259 model.testNbResults(Translation_38, 1)
260 model.testNbSubResults(Translation_38, [3])
261 model.testNbSubShapes(Translation_38, GeomAPI_Shape.COMPSOLID, [1])
262 model.testNbSubShapes(Translation_38, GeomAPI_Shape.SOLID, [3])
263 model.testNbSubShapes(Translation_38, GeomAPI_Shape.FACE, [18])
264 model.testHaveNamingFaces(Translation_38, model, Part_1_doc)
265
266 # Translation 40
267 model.testNbResults(Translation_40, 1)
268 model.testNbSubResults(Translation_40, [3])
269 model.testNbSubShapes(Translation_40, GeomAPI_Shape.COMPSOLID, [1])
270 model.testNbSubShapes(Translation_40, GeomAPI_Shape.SOLID, [3])
271 model.testNbSubShapes(Translation_40, GeomAPI_Shape.FACE, [18])
272 model.testHaveNamingFaces(Translation_40, model, Part_1_doc)
273
274 # Translation 41
275 model.testNbResults(Translation_41, 1)
276 model.testNbSubResults(Translation_41, [3])
277 model.testNbSubShapes(Translation_41, GeomAPI_Shape.COMPSOLID, [1])
278 model.testNbSubShapes(Translation_41, GeomAPI_Shape.SOLID, [3])
279 model.testNbSubShapes(Translation_41, GeomAPI_Shape.FACE, [18])
280 model.testHaveNamingFaces(Translation_41, model, Part_1_doc)
281
282 # Translation 42
283 model.testNbResults(Translation_42, 1)
284 model.testNbSubResults(Translation_42, [3])
285 model.testNbSubShapes(Translation_42, GeomAPI_Shape.COMPSOLID, [1])
286 model.testNbSubShapes(Translation_42, GeomAPI_Shape.SOLID, [3])
287 model.testNbSubShapes(Translation_42, GeomAPI_Shape.FACE, [18])
288 model.testHaveNamingFaces(Translation_42, model, Part_1_doc)
289
290 # Translation 43
291 # It is concealed by Partition_9
292 #model.testNbResults(Translation_43, 1)
293 #model.testNbSubResults(Translation_43, [3])
294 #model.testNbSubShapes(Translation_43, GeomAPI_Shape.COMPSOLID, [1])
295 #model.testNbSubShapes(Translation_43, GeomAPI_Shape.SOLID, [3])
296 #model.testNbSubShapes(Translation_43, GeomAPI_Shape.FACE, [18])
297 #model.testHaveNamingFaces(Translation_43, model, Part_1_doc)
298
299 # Translation 44
300 model.testNbResults(Translation_44, 1)
301 model.testNbSubResults(Translation_44, [3])
302 model.testNbSubShapes(Translation_44, GeomAPI_Shape.COMPSOLID, [1])
303 model.testNbSubShapes(Translation_44, GeomAPI_Shape.SOLID, [3])
304 model.testNbSubShapes(Translation_44, GeomAPI_Shape.FACE, [18])
305 model.testHaveNamingFaces(Translation_44, model, Part_1_doc)
306
307 # Translation 30
308 model.testNbResults(Translation_30, 0)
309 assert(Translation_30.feature().error() == 'Attribute "axis_object" is not initialized.')
310
311 # Translation 39
312 model.testNbResults(Translation_39, 0)
313 assert(Translation_39.feature().error() == 'Attribute "axis_object" is not initialized.')