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