Salome HOME
Merge branch 'master' of https://codev-tuleap.cea.fr/plugins/git/salome/shaper
[modules/shaper.git] / src / SketchPlugin / Test / Test2654.py
1 ## Copyright (C) 2018-20xx  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     Test2654.py
23     Test case for issue #2654 "crash with a split"
24 """
25
26 from SketchAPI import *
27
28 from salome.shaper import model
29
30 model.begin()
31 partSet = model.moduleDocument()
32 Part_1 = model.addPart(partSet)
33 Part_1_doc = Part_1.document()
34 model.addParameter(Part_1_doc, "h", "3.5")
35 Sketch_1 = model.addSketch(Part_1_doc, model.defaultPlane("XOY"))
36 SketchProjection_1 = Sketch_1.addProjection(model.selection("VERTEX", "PartSet/Origin"), False)
37 SketchPoint_1 = SketchProjection_1.createdFeature()
38 SketchLine_1 = Sketch_1.addLine(-5.833254622789047, -7.49820915323854, -11, -7.49820915323854)
39 SketchLine_2 = Sketch_1.addLine(-11, -7.49820915323854, -11, -9.998209153238539)
40 SketchConstraintCoincidence_1 = Sketch_1.setCoincident(SketchLine_1.endPoint(), SketchLine_2.startPoint())
41 SketchConstraintCoincidence_1.setName("SketchConstraintCoincidence_4")
42 SketchLine_3 = Sketch_1.addLine(-11, -9.998209153238539, 11, -9.998209153238539)
43 SketchConstraintCoincidence_2 = Sketch_1.setCoincident(SketchLine_2.endPoint(), SketchLine_3.startPoint())
44 SketchConstraintCoincidence_2.setName("SketchConstraintCoincidence_5")
45 SketchLine_4 = Sketch_1.addLine(11, -9.998209153238539, 11, -7.49820915323854)
46 SketchConstraintCoincidence_3 = Sketch_1.setCoincident(SketchLine_3.endPoint(), SketchLine_4.startPoint())
47 SketchConstraintCoincidence_3.setName("SketchConstraintCoincidence_6")
48 SketchLine_5 = Sketch_1.addLine(11, -7.49820915323854, 5.833254622789045, -7.49820915323854)
49 SketchConstraintCoincidence_4 = Sketch_1.setCoincident(SketchLine_4.endPoint(), SketchLine_5.startPoint())
50 SketchConstraintCoincidence_4.setName("SketchConstraintCoincidence_7")
51 SketchLine_6 = Sketch_1.addLine(-5.994422407538528, 7.37, -5.994422407538528, 12.00179084676146)
52 SketchLine_7 = Sketch_1.addLine(-5.994422407538528, 12.00179084676146, 6.005577592461473, 12.00179084676146)
53 SketchConstraintCoincidence_5 = Sketch_1.setCoincident(SketchLine_6.endPoint(), SketchLine_7.startPoint())
54 SketchConstraintCoincidence_5.setName("SketchConstraintCoincidence_10")
55 SketchLine_8 = Sketch_1.addLine(6.005577592461473, 12.00179084676146, 6.005577592461473, 8.12179084676146)
56 SketchConstraintCoincidence_6 = Sketch_1.setCoincident(SketchLine_7.endPoint(), SketchLine_8.startPoint())
57 SketchConstraintCoincidence_6.setName("SketchConstraintCoincidence_11")
58 SketchLine_9 = Sketch_1.addLine(6.005577592461473, 8.12179084676146, 1.564947006609954, 3.681160260909941)
59 SketchConstraintCoincidence_7 = Sketch_1.setCoincident(SketchLine_8.endPoint(), SketchLine_9.startPoint())
60 SketchConstraintCoincidence_7.setName("SketchConstraintCoincidence_12")
61 SketchLine_10 = Sketch_1.addLine(3.684201429703701, 1.557773996884403, 7.696054479856212, 5.569627047036913)
62 SketchConstraintVertical_1 = Sketch_1.setVertical(SketchLine_2.result())
63 SketchConstraintVertical_2 = Sketch_1.setVertical(SketchLine_4.result())
64 SketchConstraintVertical_3 = Sketch_1.setVertical(SketchLine_6.result())
65 SketchConstraintVertical_4 = Sketch_1.setVertical(SketchLine_8.result())
66 SketchConstraintHorizontal_1 = Sketch_1.setHorizontal(SketchLine_7.result())
67 SketchConstraintHorizontal_2 = Sketch_1.setHorizontal(SketchLine_3.result())
68 SketchConstraintHorizontal_3 = Sketch_1.setHorizontal(SketchLine_1.result())
69 SketchConstraintHorizontal_3.setName("SketchConstraintHorizontal_4")
70 SketchConstraintParallel_1 = Sketch_1.setParallel(SketchLine_9.result(), SketchLine_10.result())
71 SketchArc_1 = Sketch_1.addArc(0, 0, 1.564947006609954, 3.681160260909941, 3.684201429703701, 1.557773996884403, False)
72 SketchConstraintCoincidence_8 = Sketch_1.setCoincident(SketchPoint_1.result(), SketchArc_1.center())
73 SketchConstraintCoincidence_8.setName("SketchConstraintCoincidence_8")
74 SketchConstraintCoincidence_9 = Sketch_1.setCoincident(SketchLine_9.endPoint(), SketchArc_1.startPoint())
75 SketchConstraintCoincidence_9.setName("SketchConstraintCoincidence_16")
76 SketchConstraintCoincidence_10 = Sketch_1.setCoincident(SketchLine_10.startPoint(), SketchArc_1.endPoint())
77 SketchConstraintCoincidence_10.setName("SketchConstraintCoincidence_17")
78 SketchArc_2 = Sketch_1.addArc(0, 0, -5.994422407538528, 7.37, -5.833254622789047, -7.49820915323854, False)
79 SketchConstraintCoincidence_11 = Sketch_1.setCoincident(SketchAPI_Point(SketchPoint_1).coordinates(), SketchArc_2.center())
80 SketchConstraintCoincidence_11.setName("SketchConstraintCoincidence_13")
81 SketchConstraintCoincidence_12 = Sketch_1.setCoincident(SketchLine_6.startPoint(), SketchArc_2.startPoint())
82 SketchConstraintCoincidence_12.setName("SketchConstraintCoincidence_18")
83 SketchConstraintLength_1 = Sketch_1.setLength(SketchLine_8.result(), 3.88)
84 SketchConstraintLength_2 = Sketch_1.setLength(SketchLine_7.result(), 12)
85 SketchConstraintLength_3 = Sketch_1.setLength(SketchLine_9.result(), 6.28)
86 SketchProjection_2 = Sketch_1.addProjection(model.selection("EDGE", "PartSet/OX"), False)
87 SketchLine_11 = SketchProjection_2.createdFeature()
88 SketchConstraintRadius_1 = Sketch_1.setRadius(SketchArc_1.results()[1], 4)
89 SketchConstraintRadius_2 = Sketch_1.setRadius(SketchArc_2.results()[1], 9.5)
90 SketchConstraintCollinear_1 = Sketch_1.setCollinear(SketchLine_5.result(), SketchLine_1.result())
91 SketchConstraintLength_4 = Sketch_1.setLength(SketchLine_3.result(), 22)
92 SketchConstraintLength_5 = Sketch_1.setLength(SketchLine_4.result(), 2.5)
93 SketchConstraintDistanceVertical_1 = Sketch_1.setVerticalDistance(SketchLine_6.endPoint(), SketchLine_2.endPoint(), 22)
94 SketchConstraintAngle_1 = Sketch_1.setAngle(SketchLine_11.result(), SketchLine_10.result(), 45)
95 SketchConstraintDistance_1 = Sketch_1.setDistance(SketchArc_1.startPoint(), SketchLine_10.result(), 3, True)
96 SketchLine_12 = Sketch_1.addLine(0, -9.998209153238539, 0, 0)
97 SketchLine_12.setAuxiliary(True)
98 SketchConstraintCoincidence_13 = Sketch_1.setCoincident(SketchLine_12.startPoint(), SketchLine_3.result())
99 SketchConstraintCoincidence_13.setName("SketchConstraintCoincidence_20")
100 SketchConstraintCoincidence_14 = Sketch_1.setCoincident(SketchAPI_Point(SketchPoint_1).coordinates(), SketchLine_12.endPoint())
101 SketchConstraintCoincidence_14.setName("SketchConstraintCoincidence_21")
102 SketchConstraintVertical_5 = Sketch_1.setVertical(SketchLine_12.result())
103 SketchConstraintMiddle_1 = Sketch_1.setMiddlePoint(SketchLine_3.result(), SketchLine_12.startPoint())
104 SketchArc_3 = Sketch_1.addArc(0, 0, 5.833254622789045, -7.49820915323854, 7.696054479856212, 5.569627047036913, False)
105 SketchConstraintCoincidence_15 = Sketch_1.setCoincident(SketchLine_10.endPoint(), SketchArc_3.endPoint())
106 SketchConstraintCoincidence_15.setName("SketchConstraintCoincidence_19")
107 SketchConstraintEqual_1 = Sketch_1.setEqual(SketchArc_2.results()[1], SketchArc_3.results()[1])
108 SketchConstraintCoincidence_16 = Sketch_1.setCoincident(SketchArc_2.center(), SketchArc_3.center())
109 SketchConstraintCoincidence_16.setName("SketchConstraintCoincidence_22")
110 SketchConstraintCoincidence_17 = Sketch_1.setCoincident(SketchLine_5.endPoint(), SketchArc_3.startPoint())
111 SketchConstraintCoincidence_17.setName("SketchConstraintCoincidence_24")
112 SketchConstraintCoincidence_18 = Sketch_1.setCoincident(SketchLine_1.startPoint(), SketchArc_2.endPoint())
113 SketchConstraintCoincidence_18.setName("SketchConstraintCoincidence_23")
114 SketchConstraintDistance_2 = Sketch_1.setDistance(SketchLine_11.result(), SketchArc_2.startPoint(), 7.37, True)
115 model.do()
116 Extrusion_1 = model.addExtrusion(Part_1_doc, [model.selection("FACE", "Sketch_1/Face-SketchLine_1f-SketchLine_2f-SketchLine_3f-SketchLine_4f-SketchLine_5f-SketchLine_6r-SketchLine_7r-SketchLine_8r-SketchLine_9r-SketchLine_10r-SketchArc_1_2r-SketchArc_2_2f-SketchArc_3_2f")], model.selection(), "h", 0)
117 Sketch_2 = model.addSketch(Part_1_doc, model.selection("FACE", "Extrusion_1_1/Generated_Face_3"))
118 SketchProjection_3 = Sketch_2.addProjection(model.selection("VERTEX", "Extrusion_1_1/Generated_Face_4&Extrusion_1_1/Generated_Face_3&Extrusion_1_1/From_Face_1"), False)
119 SketchPoint_2 = SketchProjection_3.createdFeature()
120 SketchProjection_4 = Sketch_2.addProjection(model.selection("VERTEX", "Extrusion_1_1/Generated_Face_3&Extrusion_1_1/Generated_Face_2&Extrusion_1_1/From_Face_1"), False)
121 SketchPoint_3 = SketchProjection_4.createdFeature()
122 SketchProjection_5 = Sketch_2.addProjection(model.selection("VERTEX", "Extrusion_1_1/Generated_Face_4&Extrusion_1_1/Generated_Face_3&Extrusion_1_1/To_Face_1"), False)
123 SketchPoint_4 = SketchProjection_5.createdFeature()
124 SketchLine_13 = Sketch_2.addLine(6.005577592461473, 0, -5.994422407538528, 0)
125 SketchConstraintCoincidence_19 = Sketch_2.setCoincident(SketchAPI_Point(SketchPoint_2).coordinates(), SketchLine_13.startPoint())
126 SketchConstraintCoincidence_19.setName("SketchConstraintCoincidence_25")
127 SketchConstraintCoincidence_20 = Sketch_2.setCoincident(SketchAPI_Point(SketchPoint_3).coordinates(), SketchLine_13.endPoint())
128 SketchConstraintCoincidence_20.setName("SketchConstraintCoincidence_26")
129 SketchLine_14 = Sketch_2.addLine(-5.994422407538528, 0, -5.994422407538528, -3.5)
130 SketchConstraintCoincidence_21 = Sketch_2.setCoincident(SketchLine_13.endPoint(), SketchLine_14.startPoint())
131 SketchConstraintCoincidence_21.setName("SketchConstraintCoincidence_27")
132 SketchProjection_6 = Sketch_2.addProjection(model.selection("VERTEX", "Extrusion_1_1/Generated_Face_3&Extrusion_1_1/Generated_Face_2&Extrusion_1_1/To_Face_1"), False)
133 SketchPoint_5 = SketchProjection_6.createdFeature()
134 SketchConstraintCoincidence_22 = Sketch_2.setCoincident(SketchLine_14.endPoint(), SketchPoint_5.result())
135 SketchConstraintCoincidence_22.setName("SketchConstraintCoincidence_28")
136 SketchLine_15 = Sketch_2.addLine(-5.994422407538528, -3.5, -5.994422407538528, -10.5)
137 SketchConstraintCoincidence_23 = Sketch_2.setCoincident(SketchLine_14.endPoint(), SketchLine_15.startPoint())
138 SketchConstraintCoincidence_23.setName("SketchConstraintCoincidence_29")
139 SketchLine_16 = Sketch_2.addLine(6.005577592461473, 0, 6.005577592461473, -3.5)
140 SketchConstraintCoincidence_24 = Sketch_2.setCoincident(SketchAPI_Point(SketchPoint_2).coordinates(), SketchLine_16.startPoint())
141 SketchConstraintCoincidence_24.setName("SketchConstraintCoincidence_30")
142 SketchConstraintCoincidence_25 = Sketch_2.setCoincident(SketchAPI_Point(SketchPoint_4).coordinates(), SketchLine_16.endPoint())
143 SketchConstraintCoincidence_25.setName("SketchConstraintCoincidence_31")
144 SketchLine_17 = Sketch_2.addLine(6.005577592461473, -3.5, 6.005577592461473, -10.5)
145 SketchConstraintCoincidence_26 = Sketch_2.setCoincident(SketchLine_16.endPoint(), SketchLine_17.startPoint())
146 SketchConstraintCoincidence_26.setName("SketchConstraintCoincidence_32")
147 SketchArc_4 = Sketch_2.addArc(0.005577592461472826, -10.5, -5.994422407538528, -10.5, 6.005577592461473, -10.5, False)
148 SketchArc_4.setName("SketchArc_5")
149 SketchArc_4.result().setName("SketchArc_5")
150 SketchArc_4.results()[1].setName("SketchArc_5_2")
151 SketchConstraintCoincidence_27 = Sketch_2.setCoincident(SketchLine_15.endPoint(), SketchArc_4.startPoint())
152 SketchConstraintCoincidence_27.setName("SketchConstraintCoincidence_35")
153 SketchConstraintTangent_1 = Sketch_2.setTangent(SketchLine_15.result(), SketchArc_4.results()[1])
154 SketchConstraintTangent_1.setName("SketchConstraintTangent_2")
155 SketchConstraintCoincidence_28 = Sketch_2.setCoincident(SketchLine_17.result(), SketchArc_4.endPoint())
156 SketchConstraintCoincidence_28.setName("SketchConstraintCoincidence_36")
157 SketchConstraintCoincidence_29 = Sketch_2.setCoincident(SketchArc_4.endPoint(), SketchLine_17.endPoint())
158 SketchConstraintCoincidence_29.setName("SketchConstraintCoincidence_33")
159 SketchConstraintParallel_2 = Sketch_2.setParallel(SketchLine_17.result(), SketchLine_15.result())
160 SketchConstraintVertical_6 = Sketch_2.setVertical(SketchLine_17.result())
161 SketchConstraintLength_6 = Sketch_2.setLength(SketchLine_17.result(), 7)
162 SketchConstraintEqual_2 = Sketch_2.setEqual(SketchLine_17.result(), SketchLine_15.result())
163 model.do()
164 Extrusion_2 = model.addExtrusion(Part_1_doc, [model.selection("FACE", "Sketch_2/Face-SketchLine_13f-SketchLine_14f-SketchLine_15f-SketchLine_16r-SketchLine_17r-SketchArc_5_2f")], model.selection(), "h", 0)
165 model.do()
166
167
168 from salome.shaper import geom
169
170 # Try to splie the line with point-line coincidence on the line boundary
171 Split_1 = Sketch_2.addSplit(SketchLine_17, geom.Pnt2d(6.005577592461473, -7))
172 model.do()
173
174 # Check the split leads to sketch failure
175 assert(Split_1.feature().error() != "")
176
177 # Remove the split feature
178 Part_1_doc.removeFeature(Split_1.feature())
179 model.do()
180 model.checkSketch(Sketch_2, 0)
181
182 Part_1_doc.setCurrentFeature(Extrusion_2.feature(), True)
183
184 model.end()
185
186 assert(model.checkPythonDump())