Salome HOME
9927598a6882632ae357d43412826b4bb6bf6eca
[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::typeId());
9     data()->addAttribute(SketchPlugin_Arc::START_ID(),  GeomDataAPI_Point2D::typeId());
10     data()->addAttribute(SketchPlugin_Arc::END_ID(),    GeomDataAPI_Point2D::typeId());
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::typeId());
16     data()->addAttribute(SketchPlugin_Circle::RADIUS_ID(), ModelAPI_AttributeDouble::typeId());
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 = featureToCompositeFeature(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
90 # MPV: movement now is done little bit in different way, just move points causes changing them
91 #  back t okeep the radius unchanged (projection back to the initial circle)
92 #aSession.startOperation()
93 #deltaX, deltaY = 5., 10.
94 #anArcCentr.setValue(anArcCentr.x() + deltaX, anArcCentr.y() + deltaY)
95 #anArcStartPoint.setValue(
96 #    anArcStartPoint.x() + deltaX, anArcStartPoint.y() + deltaY)
97 #anArcEndPoint.setValue(anArcEndPoint.x() + deltaX, anArcEndPoint.y() + deltaY)
98 #aSession.finishOperation()
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 = aSketchFeature.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 anCircleCentr = geomDataAPI_Point2D(aSketchCircle.attribute("CircleCenter"))
137 assert (anCircleCentr.x() == 0)
138 assert (anCircleCentr.y() == 0)
139 assert (not anCircleCentr.isInitialized())
140 aCircleRadius = aSketchCircle.real("CircleRadius")
141 assert (type(aCircleRadius) == ModelAPI_AttributeDouble)
142 # ModelAPI_AttributeDouble.typeId() is checked in ModelAPI_TestConstants
143 assert (aCircleRadius.attributeType() == ModelAPI_AttributeDouble.typeId())
144 assert (aCircleRadius.value() == 0)
145 anCircleCentr.setValue(-25., -25)
146 aCircleRadius.setValue(25.)
147 assert (anCircleCentr.x() == -25)
148 assert (anCircleCentr.y() == -25)
149 assert (aCircleRadius.value() == 25)
150 aSession.finishOperation()
151 #=========================================================================
152 # Edit the Cricle
153 # 1. Check that changing the centr of a circle does not affects radius
154 # 2. and vise versa; also check that int is acceptable as well as a real
155 #=========================================================================
156 aSession.startOperation()
157 anCircleCentr.setValue(10, 60)
158 aSession.finishOperation()
159 assert (anCircleCentr.x() == 10)
160 assert (anCircleCentr.y() == 60)
161 assert (aCircleRadius.value() == 25)
162 aSession.startOperation()
163 aCircleRadius.setValue(int(20))
164 aSession.finishOperation()
165 assert (anCircleCentr.x() == 10)
166 assert (anCircleCentr.y() == 60)
167 assert (aCircleRadius.value() == 20)
168 #=========================================================================
169 # End of test
170 #=========================================================================