Salome HOME
Update unit tests for CollectionPlugin module
[modules/shaper.git] / src / CollectionPlugin / Test / TestGroup.py
1 ## Copyright (C) 2014-2017  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       TestBoolean.py
23       Unit test of FeaturesPlugin_Group class
24
25       class FeaturesPlugin_Group
26         static const std::string MY_GROUP_ID("Group");
27         static const std::string MY_GROUP_LIST_ID("group_list");
28
29         data()->addAttribute(FeaturesPlugin_Group::LIST_ID(), ModelAPI_AttributeSelectionList::typeId());
30 """
31 #=========================================================================
32 # Initialization of the test
33 #=========================================================================
34 from ModelAPI import *
35 from GeomDataAPI import *
36 from GeomAlgoAPI import *
37 from GeomAPI import *
38
39 __updated__ = "2014-12-16"
40
41 aSession = ModelAPI_Session.get()
42 # Create a part for extrusions & boolean
43 aSession.startOperation()
44 aPartFeature = aSession.moduleDocument().addFeature("Part")
45 aSession.finishOperation()
46 aPart = aSession.activeDocument()
47 #=========================================================================
48 # Create a sketch with triangle and extrude it
49 #=========================================================================
50 aSession.startOperation()
51 aTriangleSketchFeature = featureToCompositeFeature(aPart.addFeature("Sketch"))
52 origin = geomDataAPI_Point(aTriangleSketchFeature.attribute("Origin"))
53 origin.setValue(0, 0, 0)
54 dirx = geomDataAPI_Dir(aTriangleSketchFeature.attribute("DirX"))
55 dirx.setValue(1, 0, 0)
56 norm = geomDataAPI_Dir(aTriangleSketchFeature.attribute("Norm"))
57 norm.setValue(0, 0, 1)
58 aSketchLineA = aTriangleSketchFeature.addFeature("SketchLine")
59 aSketchLineB = aTriangleSketchFeature.addFeature("SketchLine")
60 aSketchLineC = aTriangleSketchFeature.addFeature("SketchLine")
61 aLineAStartPoint = geomDataAPI_Point2D(aSketchLineA.attribute("StartPoint"))
62 aLineAEndPoint = geomDataAPI_Point2D(aSketchLineA.attribute("EndPoint"))
63 aLineBStartPoint = geomDataAPI_Point2D(aSketchLineB.attribute("StartPoint"))
64 aLineBEndPoint = geomDataAPI_Point2D(aSketchLineB.attribute("EndPoint"))
65 aLineCStartPoint = geomDataAPI_Point2D(aSketchLineC.attribute("StartPoint"))
66 aLineCEndPoint = geomDataAPI_Point2D(aSketchLineC.attribute("EndPoint"))
67 aLineAStartPoint.setValue(-100., 0.)
68 aLineAEndPoint.setValue(100., 0.)
69 aLineBStartPoint.setValue(100., 0.)
70 aLineBEndPoint.setValue(0., 173.2)
71 aLineCStartPoint.setValue(0., 173.2)
72 aLineCEndPoint.setValue(-100., 0.)
73 aSession.finishOperation()
74 # Build sketch faces
75 aSession.startOperation()
76 aSketchResult = modelAPI_ResultConstruction(aTriangleSketchFeature.firstResult())
77 # Create extrusion on them
78 anExtrusionFt = aPart.addFeature("Extrusion")
79 anExtrusionFt.selectionList("base").append(aSketchResult, aSketchResult.face(0))
80 anExtrusionFt.string("CreationMethod").setValue("BySizes")
81 anExtrusionFt.real("to_size").setValue(50)
82 anExtrusionFt.real("from_size").setValue(50)
83 anExtrusionFt.execute()
84 aSession.finishOperation()
85 anExtrusionBody = modelAPI_ResultBody(anExtrusionFt.firstResult())
86 #=========================================================================
87 # Create group of vertex
88 #=========================================================================
89 aSession.startOperation()
90 aGroupFeature = aSession.activeDocument().addFeature("Group")
91 aSelectionListAttr = aGroupFeature.selectionList("group_list")
92 aSelectionListAttr.setSelectionType("vertex")
93 aSelectionListAttr.append("[Extrusion_1_1/Generated_Face&Sketch_1/SketchLine_1][Extrusion_1_1/Generated_Face&Sketch_1/SketchLine_3][Extrusion_1_1/To_Face]")
94 aSelectionListAttr.append("[Extrusion_1_1/Generated_Face&Sketch_1/SketchLine_1][Extrusion_1_1/Generated_Face&Sketch_1/SketchLine_2][Extrusion_1_1/To_Face]")
95 aSelectionListAttr.append("[Extrusion_1_1/Generated_Face&Sketch_1/SketchLine_2][Extrusion_1_1/Generated_Face&Sketch_1/SketchLine_3][Extrusion_1_1/To_Face]")
96 aSelectionListAttr.append("[Extrusion_1_1/Generated_Face&Sketch_1/SketchLine_1][Extrusion_1_1/Generated_Face&Sketch_1/SketchLine_3][Extrusion_1_1/From_Face]")
97 aSelectionListAttr.append("[Extrusion_1_1/Generated_Face&Sketch_1/SketchLine_1][Extrusion_1_1/Generated_Face&Sketch_1/SketchLine_2][Extrusion_1_1/From_Face]")
98 aSelectionListAttr.append("[Extrusion_1_1/Generated_Face&Sketch_1/SketchLine_2][Extrusion_1_1/Generated_Face&Sketch_1/SketchLine_3][Extrusion_1_1/From_Face]")
99 aSession.finishOperation()
100 #=========================================================================
101 # Check results
102 #=========================================================================
103 assert(aSelectionListAttr.size() == 6)
104 aGroupResult = aGroupFeature.firstResult()
105 assert(aGroupResult)
106 #=========================================================================
107 # Create group of edges
108 #=========================================================================
109 aSession.startOperation()
110 aGroupFeature = aSession.activeDocument().addFeature("Group")
111 aSelectionListAttr = aGroupFeature.selectionList("group_list")
112 aSelectionListAttr.setSelectionType("edge")
113 aSelectionListAttr.append("[Extrusion_1_1/Generated_Face&Sketch_1/SketchLine_2][Extrusion_1_1/Generated_Face&Sketch_1/SketchLine_3]")
114 aSelectionListAttr.append("[Extrusion_1_1/Generated_Face&Sketch_1/SketchLine_1][Extrusion_1_1/Generated_Face&Sketch_1/SketchLine_2]")
115 aSelectionListAttr.append("[Extrusion_1_1/Generated_Face&Sketch_1/SketchLine_1][Extrusion_1_1/Generated_Face&Sketch_1/SketchLine_3]")
116 aSelectionListAttr.append("[Extrusion_1_1/Generated_Face&Sketch_1/SketchLine_1][Extrusion_1_1/From_Face]")
117 aSelectionListAttr.append("[Extrusion_1_1/Generated_Face&Sketch_1/SketchLine_3][Extrusion_1_1/To_Face]")
118 aSelectionListAttr.append("[Extrusion_1_1/Generated_Face&Sketch_1/SketchLine_3][Extrusion_1_1/From_Face]")
119 aSelectionListAttr.append("[Extrusion_1_1/Generated_Face&Sketch_1/SketchLine_2][Extrusion_1_1/To_Face]")
120 aSelectionListAttr.append("[Extrusion_1_1/Generated_Face&Sketch_1/SketchLine_2][Extrusion_1_1/From_Face]")
121 aSelectionListAttr.append("[Extrusion_1_1/Generated_Face&Sketch_1/SketchLine_1][Extrusion_1_1/To_Face]")
122 aSession.finishOperation()
123 #=========================================================================
124 # Check results
125 #=========================================================================
126 assert(aSelectionListAttr.size() == 9)
127 aGroupResult = aGroupFeature.firstResult()
128 assert(aGroupResult)
129 #=========================================================================
130 # Create group of faces
131 #=========================================================================
132 aSession.startOperation()
133 aGroupFeature = aSession.activeDocument().addFeature("Group")
134 aSelectionListAttr = aGroupFeature.selectionList("group_list")
135 aSelectionListAttr.setSelectionType("face")
136 aShapeExplorer = GeomAPI_ShapeExplorer(anExtrusionBody.shape(), GeomAPI_Shape.FACE)
137 while aShapeExplorer.more():
138   aSelectionListAttr.append(anExtrusionBody, aShapeExplorer.current())
139   aShapeExplorer.next();
140 aSession.finishOperation()
141 #=========================================================================
142 # Check results
143 #=========================================================================
144 assert(aSelectionListAttr.size() == 5)
145 aGroupResult = aGroupFeature.firstResult()
146 assert(aGroupResult)
147 #=========================================================================
148 # Create group of solids
149 #=========================================================================
150 aSession.startOperation()
151 aGroupFeature = aSession.activeDocument().addFeature("Group")
152 aSelectionListAttr = aGroupFeature.selectionList("group_list")
153 aSelectionListAttr.setSelectionType("face")
154 aSelectionListAttr.append(anExtrusionBody, None)
155 aSession.finishOperation()
156 #=========================================================================
157 # Check results
158 #=========================================================================
159 assert(aSelectionListAttr.size() == 1)
160 aGroupResult = aGroupFeature.firstResult()
161 assert(aGroupResult)
162
163 #=========================================================================
164 # Create group of face
165 #=========================================================================
166 aSession.startOperation()
167 aGroupFeature = aSession.activeDocument().addFeature("Group")
168 aSelectionListAttr = aGroupFeature.selectionList("group_list")
169 aSelectionListAttr.setSelectionType("face")
170 aSelectionListAttr.append("Extrusion_1_1/To_Face")
171 aSession.finishOperation()
172 #=========================================================================
173 # Check results
174 #=========================================================================
175 assert(aSelectionListAttr.size() == 1)
176 aGroupResult = aGroupFeature.firstResult()
177 assert(aGroupResult)
178
179 #=========================================================================
180 # Create a sketch circle to extrude
181 #=========================================================================
182 aSession.startOperation()
183 aCircleSketchFeature = featureToCompositeFeature(aPart.addFeature("Sketch"))
184 origin = geomDataAPI_Point(aCircleSketchFeature.attribute("Origin"))
185 origin.setValue(0, 0, 0)
186 dirx = geomDataAPI_Dir(aCircleSketchFeature.attribute("DirX"))
187 dirx.setValue(1, 0, 0)
188 norm = geomDataAPI_Dir(aCircleSketchFeature.attribute("Norm"))
189 norm.setValue(0, 0, 1)
190 # Create circle
191 aSketchCircle = aCircleSketchFeature.addFeature("SketchCircle")
192 anCircleCentr = geomDataAPI_Point2D(aSketchCircle.attribute("circle_center"))
193 aCircleRadius = aSketchCircle.real("circle_radius")
194 anCircleCentr.setValue(0., 57.74)
195 aCircleRadius.setValue(50.)
196 aSession.finishOperation()
197 #=========================================================================
198 # Make extrusion on circle
199 #=========================================================================
200 # Build shape from sketcher results
201 aCircleSketchResult = modelAPI_ResultConstruction(aCircleSketchFeature.firstResult())
202 assert(aCircleSketchResult.facesNum() > 0)
203 # Create extrusion
204 aSession.startOperation()
205 anExtrusionFt = aPart.addFeature("Extrusion")
206 assert (anExtrusionFt.getKind() == "Extrusion")
207 # selection type FACE=4
208 anExtrusionFt.selectionList("base").append(aCircleSketchResult, aCircleSketchResult.face(0))
209 anExtrusionFt.string("CreationMethod").setValue("BySizes")
210 anExtrusionFt.real("to_size").setValue(50)
211 anExtrusionFt.real("from_size").setValue(50)
212 anExtrusionFt.execute()
213 aSession.finishOperation()
214 aCylinderBody = modelAPI_ResultBody(anExtrusionFt.firstResult())
215
216 #=========================================================================
217 # Create a cut
218 #=========================================================================
219 aSession.startOperation()
220 aBooleanFt = aPart.addFeature("Cut")
221 aBooleanFt.selectionList("main_objects").append(anExtrusionBody, None)
222 aBooleanFt.selectionList("tool_objects").append(aCylinderBody, None)
223 aBooleanFt.execute()
224 aSession.finishOperation()
225
226 #=========================================================================
227 # Move group feature
228 #=========================================================================
229 aSession.startOperation()
230 aPart.moveFeature(aGroupFeature, aBooleanFt)
231 aSession.finishOperation()
232
233 #=========================================================================
234 # Check results
235 #=========================================================================
236 aFactory = ModelAPI_Session.get().validators()
237 assert(aFactory.validate(aGroupFeature))
238 assert(aSelectionListAttr.size() == 1)
239 assert(len(aGroupFeature.results()) > 0)
240 aGroupResult = aGroupFeature.firstResult()
241 assert(aGroupResult)
242 assert(aGroupResult.shape())
243 #=========================================================================
244 # End of test
245 #=========================================================================
246
247 from salome.shaper import model
248 assert(model.checkPythonDump())