1 # Copyright (C) 2014-2020 CEA/DEN, EDF R&D
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.
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.
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
17 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
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
25 The test is created by modification of the dumped script.
29 from salome.shaper import model
31 #=========================================================================
33 #=========================================================================
35 partSet = model.moduleDocument()
36 Part_1 = model.addPart(partSet)
37 Part_1_doc = Part_1.document()
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())
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)
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)
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)
86 #=========================================================================
87 # Move a history line before this hole creation to modify groove
88 #=========================================================================
89 Part_1.document().setCurrentFeature(ExtrusionCut_1.feature(), True)
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())
109 ExtrusionCut_3.setNestedSketch(Sketch_4)
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)
120 #=========================================================================
121 # Check that the circle-sketch and the cylindrical-hole are correctly updated
122 #=========================================================================
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)")
129 assert(model.checkPythonDump())