Salome HOME
fddd8c95c8ad62f5db96f358625c293d0c5036d2
[modules/shaper.git] / src / FiltersPlugin / Test / TestFilters_Remove.py
1 # Copyright (C) 2014-2023  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 from salome.shaper import model
21 from GeomAPI import *
22
23 model.begin()
24 partSet = model.moduleDocument()
25 Part_1 = model.addPart(partSet)
26 Part_1_doc = Part_1.document()
27 Box_1 = model.addBox(Part_1_doc, 10, 10, 10)
28 LinearCopy_1 = model.addMultiTranslation(Part_1_doc, [model.selection("SOLID", "Box_1_1")], model.selection("EDGE", "PartSet/OY"), 20, 3)
29 Filters = model.filters(Part_1_doc, [model.addFilter(name = "BelongsTo", args = [model.selection("SOLID", "LinearCopy_1_1_3")]),
30                                      model.addFilter(name = "OnPlane", exclude = True, args = [model.selection("FACE", "LinearCopy_1_1_1/MF:Translated&Box_1_1/Top"),
31                                                                                                model.selection("FACE", "LinearCopy_1_1_1/MF:Translated&Box_1_1/Front")
32                                                                                                ])
33                                      ])
34 model.end()
35
36 Box1 = LinearCopy_1.result().subResult(0).resultSubShapePair()[0]
37 Box2 = LinearCopy_1.result().subResult(1).resultSubShapePair()[0]
38 Box3 = LinearCopy_1.result().subResult(2).resultSubShapePair()[0]
39 emptyShape = GeomAPI_Shape()
40
41 Reference = {}
42 # First box reference data
43 Reference[model.selection(Box1, emptyShape)] = False
44 exp = GeomAPI_ShapeExplorer(Box1.shape(), GeomAPI_Shape.FACE)
45 while exp.more():
46   Reference[model.selection(Box1, exp.current())] = False
47   exp.next()
48 exp = GeomAPI_ShapeExplorer(Box1.shape(), GeomAPI_Shape.EDGE)
49 while exp.more():
50   Reference[model.selection(Box1, exp.current())] = False
51   exp.next()
52 exp = GeomAPI_ShapeExplorer(Box1.shape(), GeomAPI_Shape.VERTEX)
53 while exp.more():
54   Reference[model.selection(Box1, exp.current())] = False
55   exp.next()
56 # Second box reference data
57 Reference[model.selection(Box2, emptyShape)] = False
58 exp = GeomAPI_ShapeExplorer(Box2.shape(), GeomAPI_Shape.FACE)
59 while exp.more():
60   Reference[model.selection(Box2, exp.current())] = False
61   exp.next()
62 exp = GeomAPI_ShapeExplorer(Box2.shape(), GeomAPI_Shape.EDGE)
63 while exp.more():
64   Reference[model.selection(Box2, exp.current())] = False
65   exp.next()
66 exp = GeomAPI_ShapeExplorer(Box2.shape(), GeomAPI_Shape.VERTEX)
67 while exp.more():
68   Reference[model.selection(Box2, exp.current())] = False
69   exp.next()
70 # Third box reference data
71 Reference[model.selection(Box3, emptyShape)] = True
72 # faces
73 exp = GeomAPI_ShapeExplorer(Box3.shape(), GeomAPI_Shape.FACE)
74 Reference[model.selection(Box3, exp.current())] = True;  exp.next()
75 Reference[model.selection(Box3, exp.current())] = False; exp.next()
76 Reference[model.selection(Box3, exp.current())] = True;  exp.next()
77 Reference[model.selection(Box3, exp.current())] = True;  exp.next()
78 Reference[model.selection(Box3, exp.current())] = True;  exp.next()
79 Reference[model.selection(Box3, exp.current())] = False; exp.next()
80 assert(not exp.more())
81 # edges
82 exp = GeomAPI_ShapeExplorer(Box3.shape(), GeomAPI_Shape.EDGE)
83 Reference[model.selection(Box3, exp.current())] = True;  exp.next()
84 Reference[model.selection(Box3, exp.current())] = False; exp.next()
85 Reference[model.selection(Box3, exp.current())] = True;  exp.next()
86 Reference[model.selection(Box3, exp.current())] = True;  exp.next()
87 Reference[model.selection(Box3, exp.current())] = False; exp.next()
88 Reference[model.selection(Box3, exp.current())] = False; exp.next()
89 Reference[model.selection(Box3, exp.current())] = False; exp.next()
90 Reference[model.selection(Box3, exp.current())] = False; exp.next()
91 Reference[model.selection(Box3, exp.current())] = True;  exp.next()
92 Reference[model.selection(Box3, exp.current())] = False; exp.next()
93 Reference[model.selection(Box3, exp.current())] = False; exp.next()
94 Reference[model.selection(Box3, exp.current())] = True;  exp.next()
95 Reference[model.selection(Box3, exp.current())] = True;  exp.next()
96 Reference[model.selection(Box3, exp.current())] = False; exp.next()
97 Reference[model.selection(Box3, exp.current())] = False; exp.next()
98 Reference[model.selection(Box3, exp.current())] = True;  exp.next()
99 Reference[model.selection(Box3, exp.current())] = True;  exp.next()
100 Reference[model.selection(Box3, exp.current())] = True;  exp.next()
101 Reference[model.selection(Box3, exp.current())] = False; exp.next()
102 Reference[model.selection(Box3, exp.current())] = True;  exp.next()
103 Reference[model.selection(Box3, exp.current())] = False; exp.next()
104 Reference[model.selection(Box3, exp.current())] = False; exp.next()
105 Reference[model.selection(Box3, exp.current())] = False; exp.next()
106 Reference[model.selection(Box3, exp.current())] = False; exp.next()
107 assert(not exp.more())
108 # vertices
109 exp = GeomAPI_ShapeExplorer(Box3.shape(), GeomAPI_Shape.VERTEX)
110 Reference[model.selection(Box3, exp.current())] = False; exp.next()
111 Reference[model.selection(Box3, exp.current())] = True;  exp.next()
112 Reference[model.selection(Box3, exp.current())] = False; exp.next()
113 Reference[model.selection(Box3, exp.current())] = False; exp.next()
114 Reference[model.selection(Box3, exp.current())] = False; exp.next()
115 Reference[model.selection(Box3, exp.current())] = True;  exp.next()
116 Reference[model.selection(Box3, exp.current())] = True;  exp.next()
117 Reference[model.selection(Box3, exp.current())] = True;  exp.next()
118 Reference[model.selection(Box3, exp.current())] = False; exp.next()
119 Reference[model.selection(Box3, exp.current())] = False; exp.next()
120 Reference[model.selection(Box3, exp.current())] = False; exp.next()
121 Reference[model.selection(Box3, exp.current())] = False; exp.next()
122 Reference[model.selection(Box3, exp.current())] = False; exp.next()
123 Reference[model.selection(Box3, exp.current())] = False; exp.next()
124 Reference[model.selection(Box3, exp.current())] = False; exp.next()
125 Reference[model.selection(Box3, exp.current())] = False; exp.next()
126 Reference[model.selection(Box3, exp.current())] = False; exp.next()
127 Reference[model.selection(Box3, exp.current())] = True;  exp.next()
128 Reference[model.selection(Box3, exp.current())] = False; exp.next()
129 Reference[model.selection(Box3, exp.current())] = False; exp.next()
130 Reference[model.selection(Box3, exp.current())] = False; exp.next()
131 Reference[model.selection(Box3, exp.current())] = False; exp.next()
132 Reference[model.selection(Box3, exp.current())] = False; exp.next()
133 Reference[model.selection(Box3, exp.current())] = True;  exp.next()
134 Reference[model.selection(Box3, exp.current())] = False; exp.next()
135 Reference[model.selection(Box3, exp.current())] = True;  exp.next()
136 Reference[model.selection(Box3, exp.current())] = False; exp.next()
137 Reference[model.selection(Box3, exp.current())] = False; exp.next()
138 Reference[model.selection(Box3, exp.current())] = False; exp.next()
139 Reference[model.selection(Box3, exp.current())] = False; exp.next()
140 Reference[model.selection(Box3, exp.current())] = False; exp.next()
141 Reference[model.selection(Box3, exp.current())] = True;  exp.next()
142 Reference[model.selection(Box3, exp.current())] = True;  exp.next()
143 Reference[model.selection(Box3, exp.current())] = True;  exp.next()
144 Reference[model.selection(Box3, exp.current())] = False; exp.next()
145 Reference[model.selection(Box3, exp.current())] = True;  exp.next()
146 Reference[model.selection(Box3, exp.current())] = False; exp.next()
147 Reference[model.selection(Box3, exp.current())] = False; exp.next()
148 Reference[model.selection(Box3, exp.current())] = False; exp.next()
149 Reference[model.selection(Box3, exp.current())] = True;  exp.next()
150 Reference[model.selection(Box3, exp.current())] = False; exp.next()
151 Reference[model.selection(Box3, exp.current())] = False; exp.next()
152 Reference[model.selection(Box3, exp.current())] = False; exp.next()
153 Reference[model.selection(Box3, exp.current())] = False; exp.next()
154 Reference[model.selection(Box3, exp.current())] = False; exp.next()
155 Reference[model.selection(Box3, exp.current())] = False; exp.next()
156 Reference[model.selection(Box3, exp.current())] = False; exp.next()
157 Reference[model.selection(Box3, exp.current())] = False; exp.next()
158 assert(not exp.more())
159
160 model.checkFilter(Part_1_doc, model, Filters, Reference)
161
162 model.begin()
163 Filters.feature().removeFilter("OnPlane")
164 model.end()
165
166 Reference = {}
167 # First box reference data
168 Reference[model.selection(Box1, emptyShape)] = False
169 exp = GeomAPI_ShapeExplorer(Box1.shape(), GeomAPI_Shape.FACE)
170 while exp.more():
171   Reference[model.selection(Box1, exp.current())] = False
172   exp.next()
173 exp = GeomAPI_ShapeExplorer(Box1.shape(), GeomAPI_Shape.EDGE)
174 while exp.more():
175   Reference[model.selection(Box1, exp.current())] = False
176   exp.next()
177 exp = GeomAPI_ShapeExplorer(Box1.shape(), GeomAPI_Shape.VERTEX)
178 while exp.more():
179   Reference[model.selection(Box1, exp.current())] = False
180   exp.next()
181 # Second box reference data
182 Reference[model.selection(Box2, emptyShape)] = False
183 exp = GeomAPI_ShapeExplorer(Box2.shape(), GeomAPI_Shape.FACE)
184 while exp.more():
185   Reference[model.selection(Box2, exp.current())] = False
186   exp.next()
187 exp = GeomAPI_ShapeExplorer(Box2.shape(), GeomAPI_Shape.EDGE)
188 while exp.more():
189   Reference[model.selection(Box2, exp.current())] = False
190   exp.next()
191 exp = GeomAPI_ShapeExplorer(Box2.shape(), GeomAPI_Shape.VERTEX)
192 while exp.more():
193   Reference[model.selection(Box2, exp.current())] = False
194   exp.next()
195 # Third box reference data
196 Reference[model.selection(Box3, emptyShape)] = True
197 exp = GeomAPI_ShapeExplorer(Box3.shape(), GeomAPI_Shape.FACE)
198 while exp.more():
199   Reference[model.selection(Box3, exp.current())] = True
200   exp.next()
201 exp = GeomAPI_ShapeExplorer(Box3.shape(), GeomAPI_Shape.EDGE)
202 while exp.more():
203   Reference[model.selection(Box3, exp.current())] = True
204   exp.next()
205 exp = GeomAPI_ShapeExplorer(Box3.shape(), GeomAPI_Shape.VERTEX)
206 while exp.more():
207   Reference[model.selection(Box3, exp.current())] = True
208   exp.next()
209
210 model.checkFilter(Part_1_doc, model, Filters, Reference)