Salome HOME
Merge branch 'master' of newgeom:newgeom.git
[modules/shaper.git] / src / FeaturesPlugin / Test / TestExtrusion.py
1 """
2       TestExtrusion.py
3       Unit test of FeaturesPlugin_Extrusion class
4       
5       class FeaturesPlugin_Extrusion : public ModelAPI_Feature
6         static const std::string MY_EXTRUSION_ID("Extrusion");
7         static const std::string MY_FACE_ID("extrusion_face");
8         static const std::string MY_SIZE_ID("extrusion_size");
9         static const std::string MY_REVERSE_ID("extrusion_reverse");
10           
11         data()->addAttribute(FeaturesPlugin_Extrusion::FACE_ID(), ModelAPI_AttributeSelection::typeId());
12         data()->addAttribute(FeaturesPlugin_Extrusion::SIZE_ID(), ModelAPI_AttributeDouble::typeId());
13         data()->addAttribute(FeaturesPlugin_Extrusion::REVERSE_ID(), ModelAPI_AttributeBoolean::typeId());
14 """
15 #=========================================================================
16 # Initialization of the test
17 #=========================================================================
18 from ModelAPI import *
19 from GeomDataAPI import *
20 from GeomAlgoAPI import *
21 from GeomAPI import *
22
23 __updated__ = "2014-12-16"
24
25 aSession = ModelAPI_Session.get()
26 aDocument = aSession.moduleDocument()
27 # Create a part for extrusion
28 aSession.startOperation()
29 aPartFeature = aDocument.addFeature("Part")
30 aSession.finishOperation()
31 assert (len(aPartFeature.results()) == 1)
32 # Another way is:
33 # aPart = aSession.activeDocument()
34 aPartResult = modelAPI_ResultPart(aPartFeature.firstResult())
35 aPart = aPartResult.partDoc()
36 #=========================================================================
37 # Create a sketch circle to extrude
38 #=========================================================================
39 aSession.startOperation()
40 aSketchFeature = featureToCompositeFeature(aPart.addFeature("Sketch"))
41 origin = geomDataAPI_Point(aSketchFeature.attribute("Origin"))
42 origin.setValue(0, 0, 0)
43 dirx = geomDataAPI_Dir(aSketchFeature.attribute("DirX"))
44 dirx.setValue(1, 0, 0)
45 diry = geomDataAPI_Dir(aSketchFeature.attribute("DirY"))
46 diry.setValue(0, 1, 0)
47 norm = geomDataAPI_Dir(aSketchFeature.attribute("Norm"))
48 norm.setValue(0, 0, 1)
49 # Create circle
50 aSketchCircle = aSketchFeature.addFeature("SketchCircle")
51 anCircleCentr = geomDataAPI_Point2D(aSketchCircle.attribute("CircleCenter"))
52 aCircleRadius = aSketchCircle.real("CircleRadius")
53 anCircleCentr.setValue(50., 50)
54 aCircleRadius.setValue(20.)
55 aSession.finishOperation()
56 #=========================================================================
57 # Make extrusion on circle
58 #=========================================================================
59 # Build shape from sketcher results
60 aSketchResult = aSketchFeature.firstResult()
61 aSketchEdges = modelAPI_ResultConstruction(aSketchResult).shape()
62 origin = geomDataAPI_Point(aSketchFeature.attribute("Origin")).pnt()
63 dirX = geomDataAPI_Dir(aSketchFeature.attribute("DirX")).dir()
64 dirY = geomDataAPI_Dir(aSketchFeature.attribute("DirY")).dir()
65 norm = geomDataAPI_Dir(aSketchFeature.attribute("Norm")).dir()
66 aSketchFaces = ShapeList()
67 GeomAlgoAPI_SketchBuilder.createFaces(
68     origin, dirX, dirY, norm, aSketchEdges, aSketchFaces)
69 assert (len(aSketchFaces) > 0)
70 assert (aSketchFaces[0] is not None)
71 # Create extrusion
72 aSession.startOperation()
73 anExtrusionFt = aPart.addFeature("Extrusion")
74 assert (anExtrusionFt.getKind() == "Extrusion")
75 anExtrusionFt.selection("extrusion_face").setValue(
76     aSketchResult, aSketchFaces[0])
77 anExtrusionFt.real("extrusion_size").setValue(50)
78 anExtrusionFt.boolean("extrusion_reverse").setValue(False)
79 anExtrusionFt.execute()
80 aSession.finishOperation()
81 assert (anExtrusionFt.real("extrusion_size").value() == 50.0)
82 assert (anExtrusionFt.boolean("extrusion_reverse").value() == False)
83
84 # Check extrusion results
85 assert (len(anExtrusionFt.results()) > 0)
86 anExtrusionResult = modelAPI_ResultBody(anExtrusionFt.firstResult())
87 assert (anExtrusionResult is not None)
88 #=========================================================================
89 # End of test
90 #=========================================================================