1 ## Copyright (C) 2014-2017 CEA/DEN, EDF R&D
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.
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.
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
17 ## See http:##www.salome-platform.org/ or
18 ## email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
25 from salome.shaper import model
27 #-----------------------------------------------------------------------------
30 class FeaturesAddExtrusionFixture(unittest.TestCase):
35 partset = model.moduleDocument()
36 self.part = model.addPart(partset).document()
41 assert(model.checkPythonDump())
45 class FeaturesExtrusionFixture(FeaturesAddExtrusionFixture):
48 FeaturesAddExtrusionFixture.setUp(self)
50 sketch = model.addSketch(self.part, model.defaultPlane("XOY"))
51 circle = sketch.addCircle(0, 0, 10)
54 base = sketch.selectFace()
55 self.extrusion = model.addExtrusion(self.part, base, 10, 0)
59 FeaturesAddExtrusionFixture.tearDown(self)
61 #-----------------------------------------------------------------------------
64 class FeaturesAddExtrusionTestCase(FeaturesAddExtrusionFixture):
66 def test_add_extrusion_by_face_and_size(self):
67 sketch = model.addSketch(self.part, model.defaultPlane("XOY"))
68 circle = sketch.addCircle(0, 0, 10)
71 base = sketch.selectFace()
72 extrusion = model.addExtrusion(self.part, base, 10, 0)
75 self.assertEqual(extrusion.creationMethod().value(), "BySizes")
76 self.assertEqual(extrusion.toSize().value(), 10)
77 self.assertEqual(extrusion.fromSize().value(), 0)
78 self.assertEqual(extrusion.toObject().context(), None)
79 self.assertEqual(extrusion.toOffset().isInitialized(), False)
80 self.assertEqual(extrusion.fromObject().context(), None)
81 self.assertEqual(extrusion.fromOffset().isInitialized(), False)
83 def test_add_extrusion_by_face_and_planes(self):
85 base_sketch = model.addSketch(self.part, model.defaultPlane("XOY"))
86 base_circle = base_sketch.addCircle(0, 0, 10)
88 to_plane = model.defaultPlane("XOY")
89 to_plane.origin().setZ(10)
90 to_sketch = model.addSketch(self.part, to_plane)
91 to_circle = to_sketch.addCircle(0, 0, 10)
93 from_plane = model.defaultPlane("XOY")
94 from_plane.origin().setZ(-10)
95 from_sketch = model.addSketch(self.part, from_plane)
96 from_circle = from_sketch.addCircle(0, 0, 10)
100 base = base_sketch.selectFace()
101 to_object = to_sketch.selectFace()[0]
102 from_object = from_sketch.selectFace()[0]
103 extrusion = model.addExtrusion(self.part, base,
107 self.assertEqual(extrusion.creationMethod().value(), "ByPlanesAndOffsets")
108 self.assertEqual(extrusion.toSize().isInitialized(), False)
109 self.assertEqual(extrusion.fromSize().isInitialized(), False)
110 # self.assertEqual(extrusion.getToObject().context(),
111 # to_sketch.result())
112 self.assertEqual(extrusion.toOffset().value(), 15)
113 # self.assertEqual(extrusion.getFromObject().context(),
114 # from_sketch.result())
115 self.assertEqual(extrusion.fromOffset().value(), 20)
118 class FeaturesExtrusionTestCase(FeaturesExtrusionFixture):
120 def test_extrusion_feature_calls(self):
121 # call method of the feature
122 self.assertEqual(self.extrusion.getKind(), "Extrusion")
124 def test_extrusion_get_attribute(self):
125 # call method of the feature
126 self.assertTrue(isinstance(self.extrusion.baseObjects(),
127 ModelAPI.ModelAPI_AttributeSelectionList))
128 self.assertTrue(isinstance(self.extrusion.creationMethod(),
129 ModelAPI.ModelAPI_AttributeString))
130 self.assertTrue(isinstance(self.extrusion.toSize(),
131 ModelAPI.ModelAPI_AttributeDouble))
132 self.assertTrue(isinstance(self.extrusion.fromSize(),
133 ModelAPI.ModelAPI_AttributeDouble))
134 self.assertTrue(isinstance(self.extrusion.toObject(),
135 ModelAPI.ModelAPI_AttributeSelection))
136 self.assertTrue(isinstance(self.extrusion.toOffset(),
137 ModelAPI.ModelAPI_AttributeDouble))
138 self.assertTrue(isinstance(self.extrusion.fromObject(),
139 ModelAPI.ModelAPI_AttributeSelection))
140 self.assertTrue(isinstance(self.extrusion.fromOffset(),
141 ModelAPI.ModelAPI_AttributeDouble))
143 def test_extrusion_set_sizes(self):
144 self.extrusion.setSizes(15, 20)
145 self.assertEqual(self.extrusion.creationMethod().value(), "BySizes")
146 self.assertEqual(self.extrusion.toSize().value(), 15)
147 self.assertEqual(self.extrusion.fromSize().value(), 20)
148 self.assertEqual(self.extrusion.toObject().context(), None)
149 self.assertEqual(self.extrusion.toOffset().isInitialized(), False)
150 self.assertEqual(self.extrusion.fromObject().context(), None)
151 self.assertEqual(self.extrusion.fromOffset().isInitialized(), False)
153 def test_extrusion_set_planes_and_offsets(self):
155 to_plane = model.defaultPlane("XOY")
156 to_plane.origin().setZ(10)
157 to_sketch = model.addSketch(self.part, to_plane)
158 to_circle = to_sketch.addCircle(0, 0, 10)
160 from_plane = model.defaultPlane("XOY")
161 from_plane.origin().setZ(-10)
162 from_sketch = model.addSketch(self.part, from_plane)
163 from_circle = from_sketch.addCircle(0, 0, 10)
167 to_object = to_sketch.selectFace()[0]
168 from_object = from_sketch.selectFace()[0]
170 self.part.moveFeature(self.extrusion.feature(), from_sketch.feature())
172 self.extrusion.setPlanesAndOffsets(to_object, 15, from_object, 20)
175 if __name__ == "__main__":
176 test_program = unittest.main(exit=False)
177 assert test_program.result.wasSuccessful(), "Test failed"