]> SALOME platform Git repositories - modules/shaper.git/blob - src/SketchPlugin/Test/TestSketchArcCircle.py
Salome HOME
cde34109ec348b473971251101d54e4f2e17b0ce
[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 aSketchFeatureData = aSketchFeature.data()
37 origin = geomDataAPI_Point(aSketchFeatureData.attribute("Origin"))
38 origin.setValue(0, 0, 0)
39 dirx = geomDataAPI_Dir(aSketchFeatureData.attribute("DirX"))
40 dirx.setValue(1, 0, 0)
41 diry = geomDataAPI_Dir(aSketchFeatureData.attribute("DirY"))
42 diry.setValue(0, 1, 0)
43 norm = geomDataAPI_Dir(aSketchFeatureData.attribute("Norm"))
44 norm.setValue(0, 0, 1)
45 aSession.finishOperation()
46 #=========================================================================
47 # Creation of an arc
48 # 1. Test SketchPlugin_Arc attributes
49 # 2.
50 #=========================================================================
51 aSession.startOperation()
52 aSketchReflist = aSketchFeatureData.reflist("Features")
53 assert (not aSketchReflist.isInitialized())
54 assert (aSketchReflist.size() == 0)
55 assert (len(aSketchReflist.list()) == 0)
56 aSketchArc = aSketchFeature.addFeature("SketchArc")
57 assert (aSketchArc.getKind() == "SketchArc")
58 aSketchArcData = aSketchArc.data()
59 anArcCentr = geomDataAPI_Point2D(aSketchArcData.attribute("ArcCenter"))
60 assert (anArcCentr.x() == 0)
61 assert (anArcCentr.y() == 0)
62 assert (not anArcCentr.isInitialized())
63 anArcCentr.setValue(10., 10.)
64 anArcStartPoint = geomDataAPI_Point2D(
65     aSketchArcData.attribute("ArcStartPoint"))
66 assert (anArcStartPoint.x() == 0)
67 assert (anArcStartPoint.y() == 0)
68 assert (not anArcStartPoint.isInitialized())
69 anArcStartPoint.setValue(0., 50.)
70 anArcEndPoint = geomDataAPI_Point2D(aSketchArcData.attribute("ArcEndPoint"))
71 assert (anArcEndPoint.x() == 0)
72 assert (anArcEndPoint.y() == 0)
73 assert (not anArcEndPoint.isInitialized())
74 anArcEndPoint.setValue(50., 0.)
75 aSession.finishOperation()
76 # check that values have been changed
77 aSketchReflist = aSketchFeatureData.reflist("Features")
78 assert (aSketchReflist.size() == 1)
79 assert (len(aSketchReflist.list()) == 1)
80 assert (anArcCentr.x() == 10.0)
81 assert (anArcCentr.y() == 10.0)
82 assert (anArcStartPoint.x() == 0.0)
83 assert (anArcStartPoint.y() == 50.0)
84 assert (anArcEndPoint.x() == 50.0)
85 assert (anArcEndPoint.y() == 0.0)
86 #=========================================================================
87 # Edit the arc:
88 # 1. Move whole arc
89 # 2. Change the start point
90 #=========================================================================
91 aSession.startOperation()
92 deltaX, deltaY = 5., 10.
93 anArcCentr.setValue(anArcCentr.x() + deltaX, anArcCentr.y() + deltaY)
94 anArcStartPoint.setValue(
95     anArcStartPoint.x() + deltaX, anArcStartPoint.y() + deltaY)
96 anArcEndPoint.setValue(anArcEndPoint.x() + deltaX, anArcEndPoint.y() + deltaY)
97 aSession.finishOperation()
98 assert (anArcCentr.x() == 15)
99 assert (anArcCentr.y() == 20)
100 assert (anArcStartPoint.x() == 5)
101 assert (anArcStartPoint.y() == 60)
102 assert (anArcEndPoint.x() == 55)
103 assert (anArcEndPoint.y() == 10)
104 # Change the start point
105 aSession.startOperation()
106 anArcStartPoint.setValue(anArcStartPoint.x() + deltaX, anArcStartPoint.y())
107 aPrevEndPointX = anArcEndPoint.x()
108 aPrevEndPointY = anArcEndPoint.y()
109 aSession.finishOperation()
110 assert (anArcCentr.x() == 15)
111 assert (anArcCentr.y() == 20)
112 assert (anArcStartPoint.x() == 10)
113 assert (anArcStartPoint.y() == 60)
114 assert (anArcEndPoint.x() != aPrevEndPointX)
115 assert (anArcEndPoint.y() != aPrevEndPointY)
116 #=========================================================================
117 # Check results of the Arc
118 #=========================================================================
119 aResult = aSketchArc.firstResult()
120 aResultConstruction = modelAPI_ResultConstruction(aResult)
121 aShape = aResultConstruction.shape()
122 assert (aShape is not None)
123 assert (not aShape.isNull())
124 #=========================================================================
125 # Create a circle
126 # 1. Test SketchPlugin_Circle.h attributes
127 # 2. ModelAPI_AttributeDouble attribute
128 #=========================================================================
129 aSession.startOperation()
130 aSketchReflist = aSketchFeatureData.reflist("Features")
131 # Arc is already added
132 assert (aSketchReflist.size() == 1)
133 assert (len(aSketchReflist.list()) == 1)
134 aSketchCircle = aSketchFeature.addFeature("SketchCircle")
135 assert (aSketchCircle.getKind() == "SketchCircle")
136 aSketchCircleData = aSketchCircle.data()
137 anCircleCentr = geomDataAPI_Point2D(
138     aSketchCircleData.attribute("CircleCenter"))
139 assert (anCircleCentr.x() == 0)
140 assert (anCircleCentr.y() == 0)
141 assert (not anCircleCentr.isInitialized())
142 aCircleRadius = aSketchCircleData.real("CircleRadius")
143 assert (type(aCircleRadius) == ModelAPI_AttributeDouble)
144 # ModelAPI_AttributeDouble.type() is checked in ModelAPI_TestConstants
145 assert (aCircleRadius.attributeType() == ModelAPI_AttributeDouble.type())
146 assert (aCircleRadius.value() == 0)
147 anCircleCentr.setValue(-25., -25)
148 aCircleRadius.setValue(25.)
149 assert (anCircleCentr.x() == -25)
150 assert (anCircleCentr.y() == -25)
151 assert (aCircleRadius.value() == 25)
152 aSession.finishOperation()
153 #=========================================================================
154 # Edit the Cricle
155 # 1. Check that changing the centr of a circle does not affects radius
156 # 2. and vise versa; also check that int is acceptable as well as a real
157 #=========================================================================
158 aSession.startOperation()
159 anCircleCentr.setValue(10, 60)
160 aSession.finishOperation()
161 assert (anCircleCentr.x() == 10)
162 assert (anCircleCentr.y() == 60)
163 assert (aCircleRadius.value() == 25)
164 aSession.startOperation()
165 aCircleRadius.setValue(int(20))
166 aSession.finishOperation()
167 assert (anCircleCentr.x() == 10)
168 assert (anCircleCentr.y() == 60)
169 assert (aCircleRadius.value() == 20)
170 #=========================================================================
171 # End of test
172 #=========================================================================