2 TestParameterCreation.py
4 class ParametersPlugin_Parameter
5 static const std::string MY_PARAMETER_ID("Parameter");
6 static const std::string MY_VARIABLE_ID("variable");
7 static const std::string MY_EXPRESSION_ID("expression");
9 data()->addAttribute(ParametersPlugin_Parameter::VARIABLE_ID(),
10 ModelAPI_AttributeString::typeId());
11 data()->addAttribute(ParametersPlugin_Parameter::EXPRESSION_ID(),
12 ModelAPI_AttributeString::typeId());
14 class ModelAPI_ResultParameter
15 static const std::string MY_VALUE_ID("Value");
16 static const std::string MY_VALUE_ID("State");
19 #=========================================================================
20 # Initialization of the test
21 #=========================================================================
22 from GeomDataAPI import *
23 from ModelAPI import *
26 from salome.shaper import model
28 __updated__ = "2015-04-27"
30 #=========================================================================
31 # Create several parameters and a feature.
32 # 1. Basic parameter definition:
33 # x1 = 150.0, y1 = 200.0
34 # 2. Referencing between parameters:
35 # x2 = x1 + y1 + 100.0
36 # 3. Referencing in feature SketchCircle
37 # CircleCenter = (x1 + 10.0, x1 + 20.0), CircleRadius = x1
40 #=========================================================================
41 class TestParameterRename(unittest.TestCase):
43 self.aSession = ModelAPI_Session.get()
44 self.aDocument = self.aSession.moduleDocument()
45 self.createParameters()
49 assert(model.checkPythonDump())
50 self.aSession.closeAll()
52 def createParameters(self):
53 ltNames = ["x1", "y1", "x2"]
54 ltExpressions = ["150.", "200.", "x1 + y1 + 100.0"]
56 for name, expr in zip(ltNames, ltExpressions):
57 self.aSession.startOperation()
58 aParam = self.aDocument.addFeature("Parameter")
59 aParamName = aParam.string("variable")
60 aParamName.setValue(name)
61 aParamExpr = aParam.string("expression")
62 aParamExpr.setValue(expr)
63 self.dtParams[name] = aParam
64 self.aSession.finishOperation()
65 self.assertEqual(len(self.dtParams), len(ltNames))
67 aParam = self.dtParams["x2"]
68 aResultAttr = modelAPI_ResultParameter(aParam.firstResult())
69 self.assertEqual(aResultAttr.data().real("Value").value(), 450.)
71 def createFeature(self):
72 self.aSession.startOperation()
73 aSketchCommonFeature = self.aDocument.addFeature("Sketch")
74 aSketchFeature = featureToCompositeFeature(aSketchCommonFeature)
75 origin = geomDataAPI_Point(aSketchFeature.attribute("Origin"))
76 origin.setValue(0, 0, 0)
77 dirx = geomDataAPI_Dir(aSketchFeature.attribute("DirX"))
78 dirx.setValue(1, 0, 0)
79 norm = geomDataAPI_Dir(aSketchFeature.attribute("Norm"))
80 norm.setValue(0, 0, 1)
81 aSketchCircle = aSketchFeature.addFeature("SketchCircle")
82 anCircleCentr = geomDataAPI_Point2D(aSketchCircle.attribute("circle_center"))
83 aRadiusAttr = aSketchCircle.real("circle_radius")
84 anCircleCentr.setValue(10., 20.)
85 aRadiusAttr.setValue(10.)
86 self.aSession.finishOperation()
88 self.anCircleCentr = anCircleCentr
89 self.aRadiusAttr = aRadiusAttr
91 # constraints to fix circle position and radius
92 self.aSession.startOperation()
94 aDistanceConstraint1 = aSketchFeature.addFeature("SketchConstraintDistance")
95 refattrA = aDistanceConstraint1.refattr("ConstraintEntityA")
96 refattrA.setAttr(anCircleCentr)
97 refattrB = aDistanceConstraint1.refattr("ConstraintEntityB")
98 anOY = aSketchFeature.addFeature("SketchLine")
99 aStartPoint = geomDataAPI_Point2D(anOY.attribute("StartPoint"))
100 anEndPoint = geomDataAPI_Point2D(anOY.attribute("EndPoint"))
101 aStartPoint.setValue(0., 0.)
102 anEndPoint.setValue(0., 100.)
103 anOYRes = modelAPI_Result(self.aDocument.objectByName("Construction", "OY"))
104 anOY.selection("External").setValue(anOYRes, anOYRes.shape())
106 refattrB.setObject(modelAPI_ResultConstruction(anOY.firstResult()))
107 value = aDistanceConstraint1.real("ConstraintValue")
108 value.setText("x1 + 10.0")
109 aDistanceConstraint1.execute();
111 aDistanceConstraint2 = aSketchFeature.addFeature("SketchConstraintDistance")
112 refattrA = aDistanceConstraint2.refattr("ConstraintEntityA")
113 refattrA.setAttr(anCircleCentr)
114 refattrB = aDistanceConstraint2.refattr("ConstraintEntityB")
115 anOX = aSketchFeature.addFeature("SketchLine")
116 aStartPoint = geomDataAPI_Point2D(anOX.attribute("StartPoint"))
117 anEndPoint = geomDataAPI_Point2D(anOX.attribute("EndPoint"))
118 aStartPoint.setValue(0., 0.)
119 anEndPoint.setValue(100., 0.)
120 anOXRes = modelAPI_Result(self.aDocument.objectByName("Construction", "OX"))
121 anOX.selection("External").setValue(anOXRes, anOXRes.shape())
123 refattrB.setObject(modelAPI_ResultConstruction(anOX.firstResult()))
124 value = aDistanceConstraint2.real("ConstraintValue")
125 value.setText("x1 + 20.0")
126 aDistanceConstraint2.execute();
128 aRadiusConstraint = aSketchFeature.addFeature("SketchConstraintRadius")
129 refattrA = aRadiusConstraint.refattr("ConstraintEntityA")
130 refattrA.setObject(modelAPI_ResultConstruction(aSketchCircle.lastResult()))
131 aRadiusConstrAttr = aRadiusConstraint.real("ConstraintValue")
132 aRadiusConstrAttr.setText("x1")
133 aRadiusConstraint.execute()
134 self.aSession.finishOperation()
136 self.assertEqual(self.anCircleCentr.x(), 160.)
137 self.assertEqual(self.anCircleCentr.y(), 170.)
138 self.assertEqual(aRadiusAttr.value(), 150.)
140 def test_change_value(self):
141 aParam = self.dtParams["x1"]
142 aResultAttr = modelAPI_ResultParameter(aParam.firstResult())
143 self.aSession.startOperation()
144 aParam.string("expression").setValue("200.0")
145 self.aSession.finishOperation()
147 # Check value of the parameter
148 self.assertEqual(aResultAttr.data().real("Value").value(), 200.)
149 # Check value of references
150 aParam = self.dtParams["x2"]
151 aResultAttr = modelAPI_ResultParameter(aParam.firstResult())
152 self.assertEqual(aResultAttr.data().real("Value").value(), 500.)
153 # Check value in the feature
154 self.assertEqual(self.anCircleCentr.x(), 210.)
155 self.assertEqual(self.anCircleCentr.y(), 220.)
156 self.assertEqual(self.aRadiusAttr.value(), 200.)
158 if __name__ == '__main__':
160 #=========================================================================
162 #=========================================================================