Salome HOME
35885a872134c6090ef1e64ff3ee1cc1f68319f4
[modules/shaper.git] / src / ConstructionPlugin / Test / TestAxisCreation.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 from ModelAPI import *
10
11 aSession = ModelAPI_Session.get()
12 aDocument = aSession.moduleDocument()
13
14 # Create a part
15 aSession.startOperation()
16 aPartFeature = aDocument.addFeature("Part")
17 aSession.finishOperation()
18 assert (len(aPartFeature.results()) == 1)
19 aPartResult = modelAPI_ResultPart(aPartFeature.firstResult())
20 aPart = aPartResult.partDoc()
21
22 #=========================================================================
23 # Create a first point
24 #=========================================================================
25 aSession.startOperation()
26 aPointFeature = aPart.addFeature("Point")
27 aPointFeatureData = aPointFeature.data()
28 assert(aPointFeatureData is not None)
29 aPointFeatureData.string("creation_method").setValue("by_xyz")
30 aPointFeatureData.real("x").setValue(0.)
31 aPointFeatureData.real("y").setValue(0.)
32 aPointFeatureData.real("z").setValue(0.)
33 aPointFeature.execute()
34 aSession.finishOperation()
35 aPoint1Result = aPointFeature.firstResult();
36
37 #=========================================================================
38 # Create a second point
39 #=========================================================================
40 aSession.startOperation()
41 aPointFeature = aPart.addFeature("Point")
42 aPointFeatureData = aPointFeature.data()
43 assert(aPointFeatureData is not None)
44 aPointFeatureData.string("creation_method").setValue("by_xyz")
45 aPointFeatureData.real("x").setValue(0.)
46 aPointFeatureData.real("y").setValue(0.)
47 aPointFeatureData.real("z").setValue(100.)
48 aPointFeature.execute()
49 aSession.finishOperation()
50 aPoint2Result = aPointFeature.firstResult();
51
52 #=========================================================================
53 # Create axis by two points
54 #=========================================================================
55 aSession.startOperation()
56 anAxisFeature = aPart.addFeature("Axis")
57 anAxisFeatureData = anAxisFeature.data()
58 assert(anAxisFeatureData is not None)
59 anAxisFeatureData.string("CreationMethod").setValue("AxisByPointsCase")
60 anAxisFeatureData.selection("FirstPoint").setValue(aPoint1Result, aPoint1Result.shape())
61 anAxisFeatureData.selection("SecondPoint").setValue(aPoint2Result, aPoint2Result.shape())
62 anAxisFeature.execute()
63 aSession.finishOperation()
64
65 assert (len(anAxisFeature.results()) > 0)
66 anAxisResult = modelAPI_ResultConstruction(anAxisFeature.firstResult())
67 assert (anAxisResult is not None)
68
69 #=========================================================================
70 # Create a sketch circle to extrude
71 #=========================================================================
72 aSession.startOperation()
73 aCircleSketchFeature = featureToCompositeFeature(aPart.addFeature("Sketch"))
74 origin = geomDataAPI_Point(aCircleSketchFeature.attribute("Origin"))
75 origin.setValue(0, 0, 0)
76 dirx = geomDataAPI_Dir(aCircleSketchFeature.attribute("DirX"))
77 dirx.setValue(1, 0, 0)
78 norm = geomDataAPI_Dir(aCircleSketchFeature.attribute("Norm"))
79 norm.setValue(0, 0, 1)
80 # Create circle
81 aSketchCircle = aCircleSketchFeature.addFeature("SketchCircle")
82 anCircleCentr = geomDataAPI_Point2D(aSketchCircle.attribute("CircleCenter"))
83 aCircleRadius = aSketchCircle.real("CircleRadius")
84 anCircleCentr.setValue(0, 0)
85 aCircleRadius.setValue(50)
86 aSession.finishOperation()
87
88 #=========================================================================
89 # Make extrusion on circle
90 #=========================================================================
91 # Build shape from sketcher results
92 aCircleSketchResult = aCircleSketchFeature.firstResult()
93 aCircleSketchEdges = modelAPI_ResultConstruction(aCircleSketchResult).shape()
94 origin = geomDataAPI_Point(aCircleSketchFeature.attribute("Origin")).pnt()
95 dirX = geomDataAPI_Dir(aCircleSketchFeature.attribute("DirX")).dir()
96 norm = geomDataAPI_Dir(aCircleSketchFeature.attribute("Norm")).dir()
97 aCircleSketchFaces = ShapeList()
98 GeomAlgoAPI_SketchBuilder.createFaces(origin, dirX, norm, aCircleSketchEdges, aCircleSketchFaces)
99 assert (len(aCircleSketchFaces) > 0)
100 assert (aCircleSketchFaces[0] is not None)
101
102 # Create extrusion
103 aSession.startOperation()
104 anExtrusionFt = aPart.addFeature("Extrusion")
105 assert (anExtrusionFt.getKind() == "Extrusion")
106 # selection type FACE=4
107 anExtrusionFt.selectionList("base").append(aCircleSketchResult, aCircleSketchFaces[0])
108 anExtrusionFt.string("CreationMethod").setValue("BySizes")
109 anExtrusionFt.real("to_size").setValue(100)
110 anExtrusionFt.real("from_size").setValue(0)
111 anExtrusionFt.real("to_offset").setValue(0) #TODO: remove
112 anExtrusionFt.real("from_offset").setValue(0) #TODO: remove
113 anExtrusionFt.execute()
114 aSession.finishOperation()
115 assert (anExtrusionFt.real("to_size").value() == 100.0)
116
117 # Check extrusion results
118 assert (len(anExtrusionFt.results()) > 0)
119 anExtrusionResult = modelAPI_ResultBody(anExtrusionFt.firstResult())
120 assert (anExtrusionResult is not None)
121
122 #=========================================================================
123 # Create axis by cylinder
124 #=========================================================================
125 aSession.startOperation()
126 anAxisFeature = aPart.addFeature("Axis")
127 anAxisFeatureData = anAxisFeature.data()
128 assert(anAxisFeatureData is not None)
129 anAxisFeatureData.string("CreationMethod").setValue("AxisByCylindricalFaceCase")
130 anAxisFeatureData.selection("CylindricalFace").selectSubShape("face", "Extrusion_1_1/Generated_Face_1")
131 anAxisFeature.execute()
132 aSession.finishOperation()
133
134 assert (len(anAxisFeature.results()) > 0)
135 anAxisResult = modelAPI_ResultConstruction(anAxisFeature.firstResult())
136 assert (anAxisResult is not None)