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