Salome HOME
Adjust unit tests to new behavior of SketchBuilder
[modules/shaper.git] / src / ModelAPI / Test / Test1757.py
1 """
2       Test1757.py
3       Unit test for testing the modification of base object after movement of the history line:
4       the referenced (that is disabled, after the current position of the history line) attribute
5       must be updated.
6       The test is created by modification of the dumped script.
7
8 """
9
10 from salome.shaper import model
11
12 #=========================================================================
13 # Initialize a part
14 #=========================================================================
15 model.begin()
16 partSet = model.moduleDocument()
17 Part_1 = model.addPart(partSet)
18 Part_1_doc = Part_1.document()
19
20 #=========================================================================
21 # Create a base box: rectangular sketch and extrusion
22 #=========================================================================
23 Sketch_1 = model.addSketch(Part_1_doc, model.defaultPlane("XOZ"))
24 SketchLine_1 = Sketch_1.addLine(199.69219283509, 125.016366179415, -144.040270241704, 125.016366179415)
25 SketchLine_2 = Sketch_1.addLine(-144.040270241704, 125.016366179415, -144.040270241704, -111.365692746051)
26 SketchLine_3 = Sketch_1.addLine(-144.040270241704, -111.365692746051, 199.69219283509, -111.365692746051)
27 SketchLine_4 = Sketch_1.addLine(199.69219283509, -111.365692746051, 199.69219283509, 125.016366179415)
28 SketchConstraintCoincidence_1 = Sketch_1.setCoincident(SketchLine_4.endPoint(), SketchLine_1.startPoint())
29 SketchConstraintCoincidence_2 = Sketch_1.setCoincident(SketchLine_1.endPoint(), SketchLine_2.startPoint())
30 SketchConstraintCoincidence_3 = Sketch_1.setCoincident(SketchLine_2.endPoint(), SketchLine_3.startPoint())
31 SketchConstraintCoincidence_4 = Sketch_1.setCoincident(SketchLine_3.endPoint(), SketchLine_4.startPoint())
32 SketchConstraintHorizontal_1 = Sketch_1.setHorizontal(SketchLine_1.result())
33 SketchConstraintVertical_1 = Sketch_1.setVertical(SketchLine_2.result())
34 SketchConstraintHorizontal_2 = Sketch_1.setHorizontal(SketchLine_3.result())
35 SketchConstraintVertical_2 = Sketch_1.setVertical(SketchLine_4.result())
36 model.do()
37 Extrusion_1 = model.addExtrusion(Part_1_doc, [model.selection("FACE", "Sketch_1/Face-SketchLine_1f-SketchLine_2f-SketchLine_3f-SketchLine_4f")], model.selection(), 300, 0)
38
39 #=========================================================================
40 # Cut another rectangle to make a groove
41 #=========================================================================
42 ExtrusionCut_1 = model.addExtrusionCut(Part_1_doc, [], model.selection(), model.selection(), 0, model.selection("FACE", "Extrusion_1_1/To_Face_1"), 0, [model.selection("SOLID", "Extrusion_1_1")])
43 Sketch_2 = model.addSketch(Part_1_doc, model.selection("FACE", "Extrusion_1_1/From_Face_1"))
44 SketchLine_5 = Sketch_2.addLine(-47.794137712106, -188.943752610533, 90.842718875892, -188.943752610533)
45 SketchLine_6 = Sketch_2.addLine(90.842718875892, -188.943752610533, 90.842718875892, -51.567231082425)
46 SketchLine_7 = Sketch_2.addLine(90.842718875892, -51.567231082425, -47.794137712106, -51.567231082425)
47 SketchLine_8 = Sketch_2.addLine(-47.794137712106, -51.567231082425, -47.794137712106, -188.943752610533)
48 SketchConstraintCoincidence_5 = Sketch_2.setCoincident(SketchLine_8.endPoint(), SketchLine_5.startPoint())
49 SketchConstraintCoincidence_6 = Sketch_2.setCoincident(SketchLine_5.endPoint(), SketchLine_6.startPoint())
50 SketchConstraintCoincidence_7 = Sketch_2.setCoincident(SketchLine_6.endPoint(), SketchLine_7.startPoint())
51 SketchConstraintCoincidence_8 = Sketch_2.setCoincident(SketchLine_7.endPoint(), SketchLine_8.startPoint())
52 SketchConstraintHorizontal_3 = Sketch_2.setHorizontal(SketchLine_5.result())
53 SketchConstraintVertical_3 = Sketch_2.setVertical(SketchLine_6.result())
54 SketchConstraintHorizontal_4 = Sketch_2.setHorizontal(SketchLine_7.result())
55 SketchConstraintVertical_4 = Sketch_2.setVertical(SketchLine_8.result())
56 ExtrusionCut_1.setNestedSketch(Sketch_2)
57 model.do()
58
59 #=========================================================================
60 # Make a cylindrical hole using one of the produced faces
61 #=========================================================================
62 ExtrusionCut_2 = model.addExtrusionCut(Part_1_doc, [], model.selection(), model.selection(), 0, model.selection("FACE", "Extrusion_1_1/Generated_Face_2"), 0, [model.selection("SOLID", "ExtrusionCut_1_1")])
63 Sketch_3 = model.addSketch(Part_1_doc, model.selection("FACE", "ExtrusionCut_1_1/Modfied_4"))
64 SketchCircle_1 = Sketch_3.addCircle(143.412751420315, -228.52745656314, 32.158435160764)
65 ExtrusionCut_2.setNestedSketch(Sketch_3)
66
67 #=========================================================================
68 # Move a history line before this hole creation to modify groove
69 #=========================================================================
70 Part_1.document().setCurrentFeature(ExtrusionCut_1.feature(), True)
71
72 #=========================================================================
73 # Modify the cylindrical hole base face by another groove in the history before the hole is created
74 #=========================================================================
75 ExtrusionCut_3 = model.addExtrusionCut(Part_1_doc, [], model.selection(), model.selection(), 0, model.selection("FACE", "Extrusion_1_1/Generated_Face_3"), -50, [model.selection("SOLID", "ExtrusionCut_1_1")])
76 Sketch_4 = model.addSketch(Part_1_doc, model.selection("FACE", "Extrusion_1_1/Generated_Face_1"))
77 SketchLine_9 = Sketch_4.addLine(-176.701443076057, -151.212050129331, -91.83965287802501, -151.212050129331)
78 SketchLine_10 = Sketch_4.addLine(-91.83965287802501, -151.212050129331, -91.83965287802501, -84.473709256573)
79 SketchLine_11 = Sketch_4.addLine(-91.83965287802501, -84.473709256573, -176.701443076057, -84.473709256573)
80 SketchLine_12 = Sketch_4.addLine(-176.701443076057, -84.473709256573, -176.701443076057, -151.212050129331)
81 SketchConstraintCoincidence_9 = Sketch_4.setCoincident(SketchLine_12.endPoint(), SketchLine_9.startPoint())
82 SketchConstraintCoincidence_10 = Sketch_4.setCoincident(SketchLine_9.endPoint(), SketchLine_10.startPoint())
83 SketchConstraintCoincidence_11 = Sketch_4.setCoincident(SketchLine_10.endPoint(), SketchLine_11.startPoint())
84 SketchConstraintCoincidence_12 = Sketch_4.setCoincident(SketchLine_11.endPoint(), SketchLine_12.startPoint())
85 SketchConstraintHorizontal_5 = Sketch_4.setHorizontal(SketchLine_9.result())
86 SketchConstraintVertical_5 = Sketch_4.setVertical(SketchLine_10.result())
87 SketchConstraintHorizontal_6 = Sketch_4.setHorizontal(SketchLine_11.result())
88 SketchConstraintVertical_6 = Sketch_4.setVertical(SketchLine_12.result())
89 model.do()
90 ExtrusionCut_3.setNestedSketch(Sketch_4)
91
92 model.do()
93
94 #=========================================================================
95 # Move a history line just to the end to recreate the cylindrical hole
96 #=========================================================================
97 Part_1.document().setCurrentFeature(ExtrusionCut_2.feature(), True)
98
99 model.end()
100
101 #=========================================================================
102 # Check that the circle-sketch and the cylindrical-hole are correctly updated
103 #=========================================================================
104 import ModelAPI
105
106 assert(ModelAPI.ModelAPI_Session.get().validators().validate(Sketch_4.feature()))
107 assert(ModelAPI.ModelAPI_Session.get().validators().validate(ExtrusionCut_2.feature()))
108 assert(Sketch_3.feature().selection("External").namingName() == "ExtrusionCut_3_1/Modfied_6")
109
110 assert(model.checkPythonDump())