]> SALOME platform Git repositories - modules/shaper.git/blob - src/FeaturesPlugin/Test/TestExtrusion.py
Salome HOME
Merge remote-tracking branch 'origin/Dev_0.6'
[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
22 __updated__ = "2014-11-21"
23
24 aSession = ModelAPI_Session.get()
25 aDocument = aSession.moduleDocument()
26 # Create a part for extrusion
27 aSession.startOperation()
28 aPartFeature = aDocument.addFeature("Part")
29 aSession.finishOperation()
30 assert (len(aPartFeature.results()) == 1)
31 # Another way is:
32 # aPart = aSession.activeDocument()
33 aPartResult = modelAPI_ResultPart(aPartFeature.firstResult())
34 aPart = aPartResult.partDoc()
35 #=========================================================================
36 # Create a sketch circle to extrude
37 #=========================================================================
38 aSession.startOperation()
39 aSketchFeature = modelAPI_CompositeFeature(aPart.addFeature("Sketch"))
40 origin = geomDataAPI_Point(aSketchFeature.attribute("Origin"))
41 origin.setValue(0, 0, 0)
42 dirx = geomDataAPI_Dir(aSketchFeature.attribute("DirX"))
43 dirx.setValue(1, 0, 0)
44 diry = geomDataAPI_Dir(aSketchFeature.attribute("DirY"))
45 diry.setValue(0, 1, 0)
46 norm = geomDataAPI_Dir(aSketchFeature.attribute("Norm"))
47 norm.setValue(0, 0, 1)
48 # Create circle
49 aSketchCircle = aSketchFeature.addFeature("SketchCircle")
50 anCircleCentr = geomDataAPI_Point2D(aSketchCircle.attribute("CircleCenter"))
51 aCircleRadius = aSketchCircle.real("CircleRadius")
52 anCircleCentr.setValue(50., 50)
53 aCircleRadius.setValue(20.)
54 aSession.finishOperation()
55 #=========================================================================
56 # Make extrusion on circle
57 #=========================================================================
58 # Build shape from sketcher results
59 aSketchResult = aSketchFeature.firstResult()
60 aSketchEdges = modelAPI_ResultConstruction(aSketchResult).shape()
61 origin = geomDataAPI_Point(aSketchFeature.attribute("Origin")).pnt()
62 dirX = geomDataAPI_Dir(aSketchFeature.attribute("DirX")).dir()
63 dirY = geomDataAPI_Dir(aSketchFeature.attribute("DirY")).dir()
64 norm = geomDataAPI_Dir(aSketchFeature.attribute("Norm")).dir()
65 aSketchFaces = ShapeList()
66 GeomAlgoAPI_SketchBuilder.createFaces(
67     origin, dirX, dirY, norm, aSketchEdges, aSketchFaces)
68 assert (len(aSketchFaces) > 0)
69 assert (aSketchFaces[0] is not None)
70 # Create extrusion
71 aSession.startOperation()
72 anExtrusionFt = aPart.addFeature("Extrusion")
73 assert (anExtrusionFt.getKind() == "Extrusion")
74 anExtrusionFt.selection("extrusion_face").setValue(
75     aSketchResult, aSketchFaces[0])
76 anExtrusionFt.real("extrusion_size").setValue(50)
77 anExtrusionFt.boolean("extrusion_reverse").setValue(False)
78 anExtrusionFt.execute()
79 aSession.finishOperation()
80 assert (anExtrusionFt.real("extrusion_size").value() == 50.0)
81 assert (anExtrusionFt.boolean("extrusion_reverse").value() == False)
82
83 # Check extrusion results
84 assert (len(anExtrusionFt.results()) > 0)
85 anExtrusionResult = modelAPI_ResultBody(anExtrusionFt.firstResult())
86 assert (anExtrusionResult is not None)
87 #=========================================================================
88 # End of test
89 #=========================================================================