Salome HOME
Adjust test cases according to redesigned Arc and Circle features
[modules/shaper.git] / src / FeaturesPlugin / Test / TestIntersection.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 aSession = ModelAPI_Session.get()
11 aDocument = aSession.moduleDocument()
12 # Create a part for extrusion
13 aSession.startOperation()
14 aPartFeature = aDocument.addFeature("Part")
15 aSession.finishOperation()
16 assert (len(aPartFeature.results()) == 1)
17 # Another way is:
18 # aPart = aSession.activeDocument()
19 aPartResult = modelAPI_ResultPart(aPartFeature.firstResult())
20 aPart = aPartResult.partDoc()
21
22 #=========================================================================
23 # Create a sketch circle to extrude 1
24 #=========================================================================
25 aSession.startOperation()
26 aCircleSketchFeature = featureToCompositeFeature(aPart.addFeature("Sketch"))
27 origin = geomDataAPI_Point(aCircleSketchFeature.attribute("Origin"))
28 origin.setValue(0, 0, 0)
29 dirx = geomDataAPI_Dir(aCircleSketchFeature.attribute("DirX"))
30 dirx.setValue(1, 0, 0)
31 norm = geomDataAPI_Dir(aCircleSketchFeature.attribute("Norm"))
32 norm.setValue(0, 0, 1)
33 # Create circle
34 aSketchCircle = aCircleSketchFeature.addFeature("SketchCircle")
35 anCircleCentr = geomDataAPI_Point2D(aSketchCircle.attribute("circle_center"))
36 aCircleRadius = aSketchCircle.real("circle_radius")
37 anCircleCentr.setValue(-10, 0)
38 aCircleRadius.setValue(50)
39 aSession.finishOperation()
40
41 #=========================================================================
42 # Make extrusion on circle 1
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)
70
71 # Check extrusion results
72 assert (len(anExtrusionFt.results()) > 0)
73 anExtrusionResult1 = modelAPI_ResultBody(anExtrusionFt.firstResult())
74 assert (anExtrusionResult1 is not None)
75
76 #=========================================================================
77 # Create a sketch circle to extrude 2
78 #=========================================================================
79 aSession.startOperation()
80 aCircleSketchFeature = featureToCompositeFeature(aPart.addFeature("Sketch"))
81 origin = geomDataAPI_Point(aCircleSketchFeature.attribute("Origin"))
82 origin.setValue(0, 0, 0)
83 dirx = geomDataAPI_Dir(aCircleSketchFeature.attribute("DirX"))
84 dirx.setValue(1, 0, 0)
85 norm = geomDataAPI_Dir(aCircleSketchFeature.attribute("Norm"))
86 norm.setValue(0, 0, 1)
87 # Create circle
88 aSketchCircle = aCircleSketchFeature.addFeature("SketchCircle")
89 anCircleCentr = geomDataAPI_Point2D(aSketchCircle.attribute("circle_center"))
90 aCircleRadius = aSketchCircle.real("circle_radius")
91 anCircleCentr.setValue(10, 0)
92 aCircleRadius.setValue(50)
93 aSession.finishOperation()
94
95 #=========================================================================
96 # Make extrusion on circle 2
97 #=========================================================================
98 # Build shape from sketcher results
99 aCircleSketchResult = aCircleSketchFeature.firstResult()
100 aCircleSketchEdges = modelAPI_ResultConstruction(aCircleSketchResult).shape()
101 origin = geomDataAPI_Point(aCircleSketchFeature.attribute("Origin")).pnt()
102 dirX = geomDataAPI_Dir(aCircleSketchFeature.attribute("DirX")).dir()
103 norm = geomDataAPI_Dir(aCircleSketchFeature.attribute("Norm")).dir()
104 aCircleSketchFaces = ShapeList()
105 GeomAlgoAPI_SketchBuilder.createFaces(
106     origin, dirX, norm, aCircleSketchEdges, aCircleSketchFaces)
107 assert (len(aCircleSketchFaces) > 0)
108 assert (aCircleSketchFaces[0] is not None)
109 # Create extrusion
110 aSession.startOperation()
111 anExtrusionFt = aPart.addFeature("Extrusion")
112 assert (anExtrusionFt.getKind() == "Extrusion")
113 # selection type FACE=4
114 anExtrusionFt.selectionList("base").append(
115     aCircleSketchResult, aCircleSketchFaces[0])
116 anExtrusionFt.string("CreationMethod").setValue("BySizes")
117 anExtrusionFt.real("to_size").setValue(50)
118 anExtrusionFt.real("from_size").setValue(0)
119 anExtrusionFt.real("to_offset").setValue(0) #TODO: remove
120 anExtrusionFt.real("from_offset").setValue(0) #TODO: remove
121 anExtrusionFt.execute()
122 aSession.finishOperation()
123 assert (anExtrusionFt.real("to_size").value() == 50)
124
125 # Check extrusion results
126 assert (len(anExtrusionFt.results()) > 0)
127 anExtrusionResult2 = modelAPI_ResultBody(anExtrusionFt.firstResult())
128 assert (anExtrusionResult2 is not None)
129
130 #=========================================================================
131 # Create an intersection
132 #=========================================================================
133 aSession.startOperation()
134 anIntersectionFt = aPart.addFeature("Intersection")
135 assert (anIntersectionFt.getKind() == "Intersection")
136 anIntersectionFt.selectionList("main_objects").append(anExtrusionResult1, None)
137 anIntersectionFt.selectionList("tool_objects").append(anExtrusionResult2, None)
138 anIntersectionFt.execute()
139 aSession.finishOperation()
140
141 #=========================================================================
142 # Test results
143 #=========================================================================
144 aFactory = ModelAPI_Session.get().validators()
145 assert (aFactory.validate(anIntersectionFt))
146 assert (len(anIntersectionFt.results()) > 0)
147 anItersectionResult = modelAPI_ResultBody(anIntersectionFt.firstResult())
148 assert (anItersectionResult is not None)
149
150 from salome.shaper import model
151 assert(model.checkPythonDump())