Salome HOME
Merge branch 'master' of newgeom:newgeom
[modules/shaper.git] / src / SketchPlugin / Test / TestSketchArcCircle.py
1 """
2     TestSketchArcCircle.py
3     
4     static const std::string MY_SKETCH_ARC_ID("SketchArc");
5     static const std::string MY_CENTER_ID = "ArcCenter";
6     static const std::string MY_START_ID = "ArcStartPoint";
7     static const std::string MY_END_ID = "ArcEndPoint";
8     data()->addAttribute(SketchPlugin_Arc::CENTER_ID(), GeomDataAPI_Point2D::type());
9     data()->addAttribute(SketchPlugin_Arc::START_ID(),  GeomDataAPI_Point2D::type());
10     data()->addAttribute(SketchPlugin_Arc::END_ID(),    GeomDataAPI_Point2D::type());
11     
12     static const std::string MY_CIRCLE_ID("SketchCircle");
13     static const std::string MY_CIRCLE_CENTER_ID("CircleCenter");
14     static const std::string MY_CIRCLE_RADIUS_ID("CircleRadius");
15     data()->addAttribute(SketchPlugin_Circle::CENTER_ID(), GeomDataAPI_Point2D::type());
16     data()->addAttribute(SketchPlugin_Circle::RADIUS_ID(), ModelAPI_AttributeDouble::type());
17 """
18
19 #=========================================================================
20 # Initialization of the test
21 #=========================================================================
22 from GeomDataAPI import *
23 from ModelAPI import *
24
25 __updated__ = "2014-10-28"
26
27 aSession = ModelAPI_Session.get()
28 aDocument = aSession.moduleDocument()
29 #=========================================================================
30 # Creation of a sketch
31 #=========================================================================
32 aSession.startOperation()
33 #aSketchFeature = aDocument.addFeature("Sketch")
34 aSketchCommonFeature = aDocument.addFeature("Sketch")
35 aSketchFeature = modelAPI_CompositeFeature(aSketchCommonFeature)
36 origin = geomDataAPI_Point(aSketchFeature.attribute("Origin"))
37 origin.setValue(0, 0, 0)
38 dirx = geomDataAPI_Dir(aSketchFeature.attribute("DirX"))
39 dirx.setValue(1, 0, 0)
40 diry = geomDataAPI_Dir(aSketchFeature.attribute("DirY"))
41 diry.setValue(0, 1, 0)
42 norm = geomDataAPI_Dir(aSketchFeature.attribute("Norm"))
43 norm.setValue(0, 0, 1)
44 aSession.finishOperation()
45 #=========================================================================
46 # Creation of an arc
47 # 1. Test SketchPlugin_Arc attributes
48 # 2.
49 #=========================================================================
50 aSession.startOperation()
51 aSketchReflist = aSketchFeature.reflist("Features")
52 assert (not aSketchReflist.isInitialized())
53 assert (aSketchReflist.size() == 0)
54 assert (len(aSketchReflist.list()) == 0)
55 aSketchArc = aSketchFeature.addFeature("SketchArc")
56 assert (aSketchArc.getKind() == "SketchArc")
57 anArcCentr = geomDataAPI_Point2D(aSketchArc.attribute("ArcCenter"))
58 assert (anArcCentr.x() == 0)
59 assert (anArcCentr.y() == 0)
60 assert (not anArcCentr.isInitialized())
61 anArcCentr.setValue(10., 10.)
62 anArcStartPoint = geomDataAPI_Point2D(
63     aSketchArc.attribute("ArcStartPoint"))
64 assert (anArcStartPoint.x() == 0)
65 assert (anArcStartPoint.y() == 0)
66 assert (not anArcStartPoint.isInitialized())
67 anArcStartPoint.setValue(0., 50.)
68 anArcEndPoint = geomDataAPI_Point2D(aSketchArc.attribute("ArcEndPoint"))
69 assert (anArcEndPoint.x() == 0)
70 assert (anArcEndPoint.y() == 0)
71 assert (not anArcEndPoint.isInitialized())
72 anArcEndPoint.setValue(50., 0.)
73 aSession.finishOperation()
74 # check that values have been changed
75 aSketchReflist = aSketchFeature.reflist("Features")
76 assert (aSketchReflist.size() == 1)
77 assert (len(aSketchReflist.list()) == 1)
78 assert (anArcCentr.x() == 10.0)
79 assert (anArcCentr.y() == 10.0)
80 assert (anArcStartPoint.x() == 0.0)
81 assert (anArcStartPoint.y() == 50.0)
82 assert (anArcEndPoint.x() == 50.0)
83 assert (anArcEndPoint.y() == 0.0)
84 #=========================================================================
85 # Edit the arc:
86 # 1. Move whole arc
87 # 2. Change the start point
88 #=========================================================================
89 aSession.startOperation()
90 deltaX, deltaY = 5., 10.
91 anArcCentr.setValue(anArcCentr.x() + deltaX, anArcCentr.y() + deltaY)
92 anArcStartPoint.setValue(
93     anArcStartPoint.x() + deltaX, anArcStartPoint.y() + deltaY)
94 anArcEndPoint.setValue(anArcEndPoint.x() + deltaX, anArcEndPoint.y() + deltaY)
95 aSession.finishOperation()
96 assert (anArcCentr.x() == 15)
97 assert (anArcCentr.y() == 20)
98 assert (anArcStartPoint.x() == 5)
99 assert (anArcStartPoint.y() == 60)
100 assert (anArcEndPoint.x() == 55)
101 assert (anArcEndPoint.y() == 10)
102 # Change the start point
103 aSession.startOperation()
104 anArcStartPoint.setValue(anArcStartPoint.x() + deltaX, anArcStartPoint.y())
105 aPrevEndPointX = anArcEndPoint.x()
106 aPrevEndPointY = anArcEndPoint.y()
107 aSession.finishOperation()
108 assert (anArcCentr.x() == 15)
109 assert (anArcCentr.y() == 20)
110 assert (anArcStartPoint.x() == 10)
111 assert (anArcStartPoint.y() == 60)
112 assert (anArcEndPoint.x() != aPrevEndPointX)
113 assert (anArcEndPoint.y() != aPrevEndPointY)
114 #=========================================================================
115 # Check results of the Arc
116 #=========================================================================
117 aResult = aSketchArc.firstResult()
118 aResultConstruction = modelAPI_ResultConstruction(aResult)
119 aShape = aResultConstruction.shape()
120 assert (aShape is not None)
121 assert (not aShape.isNull())
122 #=========================================================================
123 # Create a circle
124 # 1. Test SketchPlugin_Circle.h attributes
125 # 2. ModelAPI_AttributeDouble attribute
126 #=========================================================================
127 aSession.startOperation()
128 aSketchReflist = aSketchFeature.reflist("Features")
129 # Arc is already added
130 assert (aSketchReflist.size() == 1)
131 assert (len(aSketchReflist.list()) == 1)
132 aSketchCircle = aSketchFeature.addFeature("SketchCircle")
133 assert (aSketchCircle.getKind() == "SketchCircle")
134 anCircleCentr = geomDataAPI_Point2D(aSketchCircle.attribute("CircleCenter"))
135 assert (anCircleCentr.x() == 0)
136 assert (anCircleCentr.y() == 0)
137 assert (not anCircleCentr.isInitialized())
138 aCircleRadius = aSketchCircle.real("CircleRadius")
139 assert (type(aCircleRadius) == ModelAPI_AttributeDouble)
140 # ModelAPI_AttributeDouble.type() is checked in ModelAPI_TestConstants
141 assert (aCircleRadius.attributeType() == ModelAPI_AttributeDouble.type())
142 assert (aCircleRadius.value() == 0)
143 anCircleCentr.setValue(-25., -25)
144 aCircleRadius.setValue(25.)
145 assert (anCircleCentr.x() == -25)
146 assert (anCircleCentr.y() == -25)
147 assert (aCircleRadius.value() == 25)
148 aSession.finishOperation()
149 #=========================================================================
150 # Edit the Cricle
151 # 1. Check that changing the centr of a circle does not affects radius
152 # 2. and vise versa; also check that int is acceptable as well as a real
153 #=========================================================================
154 aSession.startOperation()
155 anCircleCentr.setValue(10, 60)
156 aSession.finishOperation()
157 assert (anCircleCentr.x() == 10)
158 assert (anCircleCentr.y() == 60)
159 assert (aCircleRadius.value() == 25)
160 aSession.startOperation()
161 aCircleRadius.setValue(int(20))
162 aSession.finishOperation()
163 assert (anCircleCentr.x() == 10)
164 assert (anCircleCentr.y() == 60)
165 assert (aCircleRadius.value() == 20)
166 #=========================================================================
167 # End of test
168 #=========================================================================