Salome HOME
885c385d7070a51b96ef48ef6f513a6978d4768a
[modules/shaper.git] / src / SketchPlugin / Test / TestConstraintRadius.py
1 """
2     TestConstraintRadius.py
3     Unit test of SketchPlugin_ConstraintRadius class
4     
5     SketchPlugin_Constraint
6         static const std::string MY_CONSTRAINT_VALUE("ConstraintValue");
7         static const std::string MY_FLYOUT_VALUE_PNT("ConstraintFlyoutValuePnt");
8         static const std::string MY_ENTITY_A("ConstraintEntityA");
9         static const std::string MY_ENTITY_B("ConstraintEntityB");
10         static const std::string MY_ENTITY_C("ConstraintEntityC");
11         static const std::string MY_ENTITY_D("ConstraintEntityD");
12         
13     SketchPlugin_ConstraintRadius
14         static const std::string MY_CONSTRAINT_RADIUS_ID("SketchConstraintRadius");
15         data()->addAttribute(SketchPlugin_Constraint::VALUE(),    ModelAPI_AttributeDouble::type());
16         data()->addAttribute(SketchPlugin_Constraint::ENTITY_A(), ModelAPI_AttributeRefAttr::type());
17         data()->addAttribute(SketchPlugin_Constraint::FLYOUT_VALUE_PNT(), GeomDataAPI_Point2D::type());
18
19 """
20 from GeomDataAPI import *
21 from ModelAPI import *
22 import math
23 #=========================================================================
24 # Initialization of the test
25 #=========================================================================
26
27 __updated__ = "2014-07-29"
28
29 aPluginManager = ModelAPI_PluginManager.get()
30 aDocument = aPluginManager.rootDocument()
31 #=========================================================================
32 # Creation of a sketch
33 #=========================================================================
34 aDocument.startOperation()
35 aSketchFeature = aDocument.addFeature("Sketch")
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 aDocument.finishOperation()
46 #=========================================================================
47 # Creation of an arc and a circle
48 #=========================================================================
49 aDocument.startOperation()
50 aSketchReflist = aSketchFeatureData.reflist("Features")
51 aSketchArc = aDocument.addFeature("SketchArc")
52 aSketchReflist.append(aSketchArc)
53 aSketchArcData = aSketchArc.data()
54 anArcCentr = geomDataAPI_Point2D(aSketchArcData.attribute("ArcCenter"))
55 anArcCentr.setValue(10., 10.)
56 anArcStartPoint = geomDataAPI_Point2D(
57     aSketchArcData.attribute("ArcStartPoint"))
58 anArcStartPoint.setValue(0., 50.)
59 anArcEndPoint = geomDataAPI_Point2D(aSketchArcData.attribute("ArcEndPoint"))
60 anArcEndPoint.setValue(50., 0.)
61 aDocument.finishOperation()
62 # Circle
63 aDocument.startOperation()
64 aSketchCircle = aDocument.addFeature("SketchCircle")
65 aSketchReflist.append(aSketchCircle)
66 aSketchCircleData = aSketchCircle.data()
67 anCircleCentr = geomDataAPI_Point2D(
68     aSketchCircleData.attribute("CircleCenter"))
69 aCircleRadius = aSketchCircleData.real("CircleRadius")
70 anCircleCentr.setValue(-25., -25)
71 aCircleRadius.setValue(25.)
72 aDocument.finishOperation()
73 #=========================================================================
74 # Make a constraint to keep the radius of the arc
75 #=========================================================================
76 aDocument.startOperation()
77 aConstraint = aDocument.addFeature("SketchConstraintRadius")
78 aSketchReflist.append(aConstraint)
79 aConstraintData = aConstraint.data()
80 aRadius = aConstraintData.real("ConstraintValue")
81 aRefObject = aConstraintData.refattr("ConstraintEntityA")
82 aResult = aSketchArc.firstResult()
83 assert (aResult is not None)
84 aRefObject.setObject(modelAPI_ResultConstruction(aResult))
85 aDocument.finishOperation()
86 assert (aRadius.isInitialized())
87 assert (aRefObject.isInitialized())
88 #=========================================================================
89 # Make a constraint to keep the radius of the circle
90 #=========================================================================
91 aDocument.startOperation()
92 aConstraint = aDocument.addFeature("SketchConstraintRadius")
93 aSketchReflist.append(aConstraint)
94 aConstraintData = aConstraint.data()
95 aRadius = aConstraintData.real("ConstraintValue")
96 aRefObject = aConstraintData.refattr("ConstraintEntityA")
97 aResult = aSketchCircle.firstResult()
98 assert (aResult is not None)
99 aRefObject.setObject(modelAPI_ResultConstruction(aResult))
100 aDocument.finishOperation()
101 assert (aRadius.isInitialized())
102 assert (aRefObject.isInitialized())
103 #=========================================================================
104 # Perform some actions and checks:
105 # 1. Check that constraints does not changes values
106 # 2. Move one point of the arc
107 # 3. Check that second point is moved also
108 #=========================================================================
109 assert (anArcCentr.x() == 10.)
110 assert (anArcCentr.y() == 10.)
111 assert (anArcStartPoint.x() == 0.)
112 assert (anArcStartPoint.y() == 50.)
113 anArcPrevEndPointX = anArcEndPoint.x()
114 anArcPrevEndPointY = anArcEndPoint.y()
115 assert (anArcPrevEndPointX == 50.)
116 assert (anArcPrevEndPointY == 0.)
117 # Move one point of the arc
118 aDocument.startOperation()
119 anArcStartPoint.setValue(0., 60)
120 aDocument.finishOperation()
121 assert (anArcCentr.x() == 10.)
122 assert (anArcCentr.y() == 10.)
123 assert (anArcEndPoint.x() != anArcPrevEndPointX)
124 assert (anArcEndPoint.y() != anArcPrevEndPointY)
125 #=========================================================================
126 # 4. Move the centr or the point of the arc
127 # 5. Check radius is the same
128 #=========================================================================
129 assert (anCircleCentr.x() == -25)
130 assert (anCircleCentr.y() == -25)
131 assert (aCircleRadius.value() == 25)
132 aDocument.startOperation()
133 anCircleCentr.setValue(100., 100.)
134 aDocument.finishOperation()
135 assert (anCircleCentr.x() == 100)
136 assert (anCircleCentr.y() == 100)
137 assert (aCircleRadius.value() == 25)
138 #=========================================================================
139 # End of test
140 #=========================================================================