Salome HOME
e461c50e1ae800cdbcb4bf22cdcfa2ed336ed6e9
[modules/shaper.git] / src / FeaturesPlugin / Test / TestExtrusionCut.py
1 #=========================================================================
2 # Initialization of the test
3 #=========================================================================
4 from ModelAPI import *
5 from GeomDataAPI import *
6 from GeomAlgoAPI import *
7 from GeomAPI import *
8 import math
9
10 __updated__ = "2014-12-16"
11
12 aSession = ModelAPI_Session.get()
13 aDocument = aSession.moduleDocument()
14 # Create a part for extrusion
15 aSession.startOperation()
16 aPartFeature = aDocument.addFeature("Part")
17 aSession.finishOperation()
18 assert (len(aPartFeature.results()) == 1)
19 # Another way is:
20 # aPart = aSession.activeDocument()
21 aPartResult = modelAPI_ResultPart(aPartFeature.firstResult())
22 aPart = aPartResult.partDoc()
23 #=========================================================================
24 # Create a sketch circle to extrude
25 #=========================================================================
26 aSession.startOperation()
27 aCircleSketchFeature = featureToCompositeFeature(aPart.addFeature("Sketch"))
28 origin = geomDataAPI_Point(aCircleSketchFeature.attribute("Origin"))
29 origin.setValue(0, 0, 0)
30 dirx = geomDataAPI_Dir(aCircleSketchFeature.attribute("DirX"))
31 dirx.setValue(1, 0, 0)
32 norm = geomDataAPI_Dir(aCircleSketchFeature.attribute("Norm"))
33 norm.setValue(0, 0, 1)
34 # Create circle
35 aSketchCircle = aCircleSketchFeature.addFeature("SketchCircle")
36 anCircleCentr = geomDataAPI_Point2D(aSketchCircle.attribute("CircleCenter"))
37 aCircleRadius = aSketchCircle.real("CircleRadius")
38 anCircleCentr.setValue(0, 0)
39 aCircleRadius.setValue(20)
40 aSession.finishOperation()
41 #=========================================================================
42 # Make extrusion on circle
43 #=========================================================================
44 # Build shape from sketcher results
45 aCircleSketchResult = aCircleSketchFeature.firstResult()
46 aCircleSketchEdges = modelAPI_ResultConstruction(aCircleSketchResult).shape()
47 origin = geomDataAPI_Point(aCircleSketchFeature.attribute("Origin")).pnt()
48 dirX = geomDataAPI_Dir(aCircleSketchFeature.attribute("DirX")).dir()
49 norm = geomDataAPI_Dir(aCircleSketchFeature.attribute("Norm")).dir()
50 aCircleSketchFaces = ShapeList()
51 GeomAlgoAPI_SketchBuilder.createFaces(
52     origin, dirX, norm, aCircleSketchEdges, aCircleSketchFaces)
53 assert (len(aCircleSketchFaces) > 0)
54 assert (aCircleSketchFaces[0] is not None)
55 # Create extrusion
56 aSession.startOperation()
57 anExtrusionFt = aPart.addFeature("Extrusion")
58 assert (anExtrusionFt.getKind() == "Extrusion")
59 # selection type FACE=4
60 anExtrusionFt.selectionList("base").append(
61     aCircleSketchResult, aCircleSketchFaces[0])
62 anExtrusionFt.string("CreationMethod").setValue("BySizes")
63 anExtrusionFt.real("to_size").setValue(50)
64 anExtrusionFt.real("from_size").setValue(0)
65 anExtrusionFt.real("to_offset").setValue(0) #TODO: remove
66 anExtrusionFt.real("from_offset").setValue(0) #TODO: remove
67 anExtrusionFt.execute()
68 aSession.finishOperation()
69 assert (anExtrusionFt.real("to_size").value() == 50.0)
70
71 # Check extrusion results
72 assert (len(anExtrusionFt.results()) > 0)
73 anExtrusionResult = modelAPI_ResultBody(anExtrusionFt.firstResult())
74 assert (anExtrusionResult is not None)
75
76 #=========================================================================
77 # Make extrusion cut
78 #=========================================================================
79 aSession.startOperation()
80 anExtrusionCutFt = featureToCompositeFeature(aPart.addFeature("ExtrusionCut"))
81 assert (anExtrusionCutFt.getKind() == "ExtrusionCut")
82 # selection type FACE=4
83 aSession.startOperation()
84 aCircleSketchFeature = featureToCompositeFeature(anExtrusionCutFt.addFeature("Sketch"))
85 origin = geomDataAPI_Point(aCircleSketchFeature.attribute("Origin"))
86 origin.setValue(0, 0, 50)
87 dirx = geomDataAPI_Dir(aCircleSketchFeature.attribute("DirX"))
88 dirx.setValue(1, 0, 0)
89 norm = geomDataAPI_Dir(aCircleSketchFeature.attribute("Norm"))
90 norm.setValue(0, 0, 1)
91 aCircleSketchFeature.selection("External").selectSubShape("face", "Extrusion_1/To_Face_1")
92 aSession.startOperation()
93 aSketchCircle = aCircleSketchFeature.addFeature("SketchCircle")
94 anCircleCentr = geomDataAPI_Point2D(aSketchCircle.attribute("CircleCenter"))
95 aCircleRadius = aSketchCircle.real("CircleRadius")
96 anCircleCentr.setValue(0, 0)
97 aCircleRadius.setValue(10)
98 aSession.finishOperation()
99 aSession.finishOperation()
100 aSession.startOperation()
101 aCircleSketchFeature.execute() # execute for sketch should be called here, because it is not set as current feature, so it is disabled.
102 anExtrusionCutFt.selectionList("base").append(aCircleSketchFeature.firstResult(), None)
103 anExtrusionCutFt.string("CreationMethod").setValue("BySizes")
104 anExtrusionCutFt.real("to_size").setValue(10)
105 anExtrusionCutFt.real("from_size").setValue(10)
106 anExtrusionCutFt.real("to_offset").setValue(0) #TODO: remove
107 anExtrusionCutFt.real("from_offset").setValue(0) #TODO: remove
108 anExtrusionCutFt.selectionList("main_objects").append(anExtrusionResult, anExtrusionResult.shape())
109 aSession.finishOperation()
110 aSession.finishOperation()
111
112 #=========================================================================
113 # Test results
114 #=========================================================================
115 aFactory = ModelAPI_Session.get().validators()
116 assert (aFactory.validate(anExtrusionCutFt))
117 assert (len(anExtrusionCutFt.results()) > 0)
118 aCurrentResult = modelAPI_ResultBody(anExtrusionCutFt.firstResult())
119 assert (aCurrentResult is not None)
120
121 from salome.shaper import model
122 assert(model.checkPythonDump())