Salome HOME
18595e23bd916b7e492cd73e725b6060ac53955c
[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::type());
12         data()->addAttribute(FeaturesPlugin_Extrusion::SIZE_ID(), ModelAPI_AttributeDouble::type());
13         data()->addAttribute(FeaturesPlugin_Extrusion::REVERSE_ID(), ModelAPI_AttributeBoolean::type());
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 = modelAPI_CompositeFeature(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 # selection type FACE=4
76 anExtrusionFt.selectionList("base").setSelectionType(4)
77 anExtrusionFt.selectionList("base").append(
78     aSketchResult, aSketchFaces[0])
79 anExtrusionFt.real("size").setValue(50)
80 anExtrusionFt.boolean("reverse").setValue(False)
81 anExtrusionFt.execute()
82 aSession.finishOperation()
83 assert (anExtrusionFt.real("size").value() == 50.0)
84 assert (anExtrusionFt.boolean("reverse").value() == False)
85
86 # Check extrusion results
87 assert (len(anExtrusionFt.results()) > 0)
88 anExtrusionResult = modelAPI_ResultBody(anExtrusionFt.firstResult())
89 assert (anExtrusionResult is not None)
90 #=========================================================================
91 # End of test
92 #=========================================================================