1 ## Copyright (C) 2014-2017 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
18 ## email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
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
26 The test is created by modification of the dumped script.
30 from salome.shaper import model
32 #=========================================================================
34 #=========================================================================
36 partSet = model.moduleDocument()
37 Part_1 = model.addPart(partSet)
38 Part_1_doc = Part_1.document()
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())
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)
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)
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)
87 #=========================================================================
88 # Move a history line before this hole creation to modify groove
89 #=========================================================================
90 Part_1.document().setCurrentFeature(ExtrusionCut_1.feature(), True)
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"), -50, [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())
110 ExtrusionCut_3.setNestedSketch(Sketch_4)
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)
121 #=========================================================================
122 # Check that the circle-sketch and the cylindrical-hole are correctly updated
123 #=========================================================================
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_1_1/Modified_Face&Extrusion_1_1/From_Face)(ExtrusionCut_3_1/Modified_Face&Sketch_2/SketchLine_6)(ExtrusionCut_1_1/Modified_Face&Extrusion_1_1/To_Face)(Extrusion_1_1/Generated_Face&Sketch_1/SketchLine_4)")
130 assert(model.checkPythonDump())