Salome HOME
Merge commit 'refs/tags/V9_2_0^{}'
[modules/shaper.git] / src / ModelAPI / Test / Test1757.py
1 ## Copyright (C) 2014-2017  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
18 ## email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
19 ##
20
21 """
22       Test1757.py
23       Unit test for testing the modification of base object after movement of the history line:
24       the referenced (that is disabled, after the current position of the history line) attribute
25       must be updated.
26       The test is created by modification of the dumped script.
27
28 """
29
30 from salome.shaper import model
31
32 #=========================================================================
33 # Initialize a part
34 #=========================================================================
35 model.begin()
36 partSet = model.moduleDocument()
37 Part_1 = model.addPart(partSet)
38 Part_1_doc = Part_1.document()
39
40 #=========================================================================
41 # Create a base box: rectangular sketch and extrusion
42 #=========================================================================
43 Sketch_1 = model.addSketch(Part_1_doc, model.defaultPlane("XOZ"))
44 SketchLine_1 = Sketch_1.addLine(199.69219283509, 125.016366179415, -144.040270241704, 125.016366179415)
45 SketchLine_2 = Sketch_1.addLine(-144.040270241704, 125.016366179415, -144.040270241704, -111.365692746051)
46 SketchLine_3 = Sketch_1.addLine(-144.040270241704, -111.365692746051, 199.69219283509, -111.365692746051)
47 SketchLine_4 = Sketch_1.addLine(199.69219283509, -111.365692746051, 199.69219283509, 125.016366179415)
48 SketchConstraintCoincidence_1 = Sketch_1.setCoincident(SketchLine_4.endPoint(), SketchLine_1.startPoint())
49 SketchConstraintCoincidence_2 = Sketch_1.setCoincident(SketchLine_1.endPoint(), SketchLine_2.startPoint())
50 SketchConstraintCoincidence_3 = Sketch_1.setCoincident(SketchLine_2.endPoint(), SketchLine_3.startPoint())
51 SketchConstraintCoincidence_4 = Sketch_1.setCoincident(SketchLine_3.endPoint(), SketchLine_4.startPoint())
52 SketchConstraintHorizontal_1 = Sketch_1.setHorizontal(SketchLine_1.result())
53 SketchConstraintVertical_1 = Sketch_1.setVertical(SketchLine_2.result())
54 SketchConstraintHorizontal_2 = Sketch_1.setHorizontal(SketchLine_3.result())
55 SketchConstraintVertical_2 = Sketch_1.setVertical(SketchLine_4.result())
56 model.do()
57 Extrusion_1 = model.addExtrusion(Part_1_doc, [model.selection("FACE", "Sketch_1/Face-SketchLine_1r-SketchLine_2f-SketchLine_3f-SketchLine_4f")], model.selection(), 300, 0)
58
59 #=========================================================================
60 # Cut another rectangle to make a groove
61 #=========================================================================
62 ExtrusionCut_1 = model.addExtrusionCut(Part_1_doc, [], model.selection(), model.selection(), 0, model.selection("FACE", "Extrusion_1_1/To_Face"), 0, [model.selection("SOLID", "Extrusion_1_1")])
63 Sketch_2 = model.addSketch(Part_1_doc, model.selection("FACE", "Extrusion_1_1/From_Face"))
64 SketchLine_5 = Sketch_2.addLine(-47.794137712106, -188.943752610533, 90.842718875892, -188.943752610533)
65 SketchLine_6 = Sketch_2.addLine(90.842718875892, -188.943752610533, 90.842718875892, -51.567231082425)
66 SketchLine_7 = Sketch_2.addLine(90.842718875892, -51.567231082425, -47.794137712106, -51.567231082425)
67 SketchLine_8 = Sketch_2.addLine(-47.794137712106, -51.567231082425, -47.794137712106, -188.943752610533)
68 SketchConstraintCoincidence_5 = Sketch_2.setCoincident(SketchLine_8.endPoint(), SketchLine_5.startPoint())
69 SketchConstraintCoincidence_6 = Sketch_2.setCoincident(SketchLine_5.endPoint(), SketchLine_6.startPoint())
70 SketchConstraintCoincidence_7 = Sketch_2.setCoincident(SketchLine_6.endPoint(), SketchLine_7.startPoint())
71 SketchConstraintCoincidence_8 = Sketch_2.setCoincident(SketchLine_7.endPoint(), SketchLine_8.startPoint())
72 SketchConstraintHorizontal_3 = Sketch_2.setHorizontal(SketchLine_5.result())
73 SketchConstraintVertical_3 = Sketch_2.setVertical(SketchLine_6.result())
74 SketchConstraintHorizontal_4 = Sketch_2.setHorizontal(SketchLine_7.result())
75 SketchConstraintVertical_4 = Sketch_2.setVertical(SketchLine_8.result())
76 ExtrusionCut_1.setNestedSketch(Sketch_2)
77 model.do()
78
79 #=========================================================================
80 # Make a cylindrical hole using one of the produced faces
81 #=========================================================================
82 ExtrusionCut_2 = model.addExtrusionCut(Part_1_doc, [], model.selection(), model.selection(), 0, model.selection("FACE", "Extrusion_1_1/Generated_Face&Sketch_1/SketchLine_3"), 0, [model.selection("SOLID", "ExtrusionCut_1_1")])
83 Sketch_3 = model.addSketch(Part_1_doc, model.selection("FACE", "(ExtrusionCut_1_1/Modified_Face&Extrusion_1_1/From_Face)(ExtrusionCut_1_1/Generated_Face&Sketch_2/SketchLine_6)(ExtrusionCut_1_1/Modified_Face&Extrusion_1_1/To_Face)(Extrusion_1_1/Generated_Face&Sketch_1/SketchLine_4)"))
84 SketchCircle_1 = Sketch_3.addCircle(143.412751420315, -228.52745656314, 32.158435160764)
85 ExtrusionCut_2.setNestedSketch(Sketch_3)
86
87 #=========================================================================
88 # Move a history line before this hole creation to modify groove
89 #=========================================================================
90 Part_1.document().setCurrentFeature(ExtrusionCut_1.feature(), True)
91
92 #=========================================================================
93 # Modify the cylindrical hole base face by another groove in the history before the hole is created
94 #=========================================================================
95 ExtrusionCut_3 = model.addExtrusionCut(Part_1_doc, [], model.selection(), model.selection(), 0, model.selection("FACE", "Extrusion_1_1/Generated_Face&Sketch_1/SketchLine_4"), 0, [model.selection("SOLID", "ExtrusionCut_1_1")])
96 Sketch_4 = model.addSketch(Part_1_doc, model.selection("FACE", "Extrusion_1_1/Generated_Face&Sketch_1/SketchLine_2"))
97 SketchLine_9 = Sketch_4.addLine(-176.701443076057, -151.212050129331, -91.83965287802501, -151.212050129331)
98 SketchLine_10 = Sketch_4.addLine(-91.83965287802501, -151.212050129331, -91.83965287802501, -84.473709256573)
99 SketchLine_11 = Sketch_4.addLine(-91.83965287802501, -84.473709256573, -176.701443076057, -84.473709256573)
100 SketchLine_12 = Sketch_4.addLine(-176.701443076057, -84.473709256573, -176.701443076057, -151.212050129331)
101 SketchConstraintCoincidence_9 = Sketch_4.setCoincident(SketchLine_12.endPoint(), SketchLine_9.startPoint())
102 SketchConstraintCoincidence_10 = Sketch_4.setCoincident(SketchLine_9.endPoint(), SketchLine_10.startPoint())
103 SketchConstraintCoincidence_11 = Sketch_4.setCoincident(SketchLine_10.endPoint(), SketchLine_11.startPoint())
104 SketchConstraintCoincidence_12 = Sketch_4.setCoincident(SketchLine_11.endPoint(), SketchLine_12.startPoint())
105 SketchConstraintHorizontal_5 = Sketch_4.setHorizontal(SketchLine_9.result())
106 SketchConstraintVertical_5 = Sketch_4.setVertical(SketchLine_10.result())
107 SketchConstraintHorizontal_6 = Sketch_4.setHorizontal(SketchLine_11.result())
108 SketchConstraintVertical_6 = Sketch_4.setVertical(SketchLine_12.result())
109 model.do()
110 ExtrusionCut_3.setNestedSketch(Sketch_4)
111
112 model.do()
113
114 #=========================================================================
115 # Move a history line just to the end to recreate the cylindrical hole
116 #=========================================================================
117 Part_1.document().setCurrentFeature(ExtrusionCut_2.feature(), True)
118
119 model.end()
120
121 #=========================================================================
122 # Check that the circle-sketch and the cylindrical-hole are correctly updated
123 #=========================================================================
124 import ModelAPI
125
126 assert(ModelAPI.ModelAPI_Session.get().validators().validate(Sketch_4.feature()))
127 assert(ModelAPI.ModelAPI_Session.get().validators().validate(ExtrusionCut_2.feature()))
128 assert(Sketch_3.feature().selection("External").namingName() == "(ExtrusionCut_3_1/Modified_Face&Sketch_2/SketchLine_6)(ExtrusionCut_3_1/Modified_Face&Sketch_1/SketchLine_4)(ExtrusionCut_1_1/Modified_Face&Extrusion_1_1/To_Face)")
129
130 assert(model.checkPythonDump())