Salome HOME
Fix compilation errors (part 2)
[modules/shaper.git] / src / SketchPlugin / Test / TestConstraintRigid.py
1 """
2     TestConstraintRigid.py
3     Unit test of SketchPlugin_ConstraintRigid 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_ConstraintRigid
14         static const std::string MY_CONSTRAINT_RIGID_ID("SketchConstraintRigid");
15         data()->addAttribute(SketchPlugin_Constraint::ENTITY_A(), ModelAPI_AttributeRefAttr::typeId());
16
17 """
18 from GeomDataAPI import *
19 from ModelAPI import *
20 from GeomAPI import *
21 #=========================================================================
22 # Initialization of the test
23 #=========================================================================
24
25 __updated__ = "2014-11-21"
26
27 aSession = ModelAPI_Session.get()
28 aDocument = aSession.moduleDocument()
29 #=========================================================================
30 # Creation of a sketch
31 #=========================================================================
32 aSession.startOperation()
33 aSketchCommonFeature = aDocument.addFeature("Sketch")
34 aSketchFeature = featureToCompositeFeature(aSketchCommonFeature)
35 origin = geomDataAPI_Point(aSketchFeature.attribute("Origin"))
36 origin.setValue(0, 0, 0)
37 dirx = geomDataAPI_Dir(aSketchFeature.attribute("DirX"))
38 dirx.setValue(1, 0, 0)
39 norm = geomDataAPI_Dir(aSketchFeature.attribute("Norm"))
40 norm.setValue(0, 0, 1)
41 aSession.finishOperation()
42 #=========================================================================
43 # Create a triangle ABC
44 #=========================================================================
45 aSession.startOperation()
46 aSketchLineA = aSketchFeature.addFeature("SketchLine")
47 aSketchLineB = aSketchFeature.addFeature("SketchLine")
48 aSketchLineC = aSketchFeature.addFeature("SketchLine")
49 aLineAStartPoint = geomDataAPI_Point2D(aSketchLineA.attribute("StartPoint"))
50 aLineAEndPoint = geomDataAPI_Point2D(aSketchLineA.attribute("EndPoint"))
51 aLineBStartPoint = geomDataAPI_Point2D(aSketchLineB.attribute("StartPoint"))
52 aLineBEndPoint = geomDataAPI_Point2D(aSketchLineB.attribute("EndPoint"))
53 aLineCStartPoint = geomDataAPI_Point2D(aSketchLineC.attribute("StartPoint"))
54 aLineCEndPoint = geomDataAPI_Point2D(aSketchLineC.attribute("EndPoint"))
55 aLineAStartPoint.setValue(25., 25.)
56 aLineAEndPoint.setValue(100., 25.)
57 aLineBStartPoint.setValue(100., 25.)
58 aLineBEndPoint.setValue(60., 75.)
59 aLineCStartPoint.setValue(60., 75.)
60 aLineCEndPoint.setValue(25., 25.)
61 aSession.finishOperation()
62 # Store initial values of lines
63 kLineAStart = (aLineAStartPoint.x(), aLineAStartPoint.y())
64 kLineAEnd = (aLineAEndPoint.x(),   aLineAEndPoint.y())
65 kLineBStart = (aLineBStartPoint.x(), aLineBStartPoint.y())
66 kLineBEnd = (aLineBEndPoint.x(),   aLineBEndPoint.y())
67 kLineCStart = (aLineCStartPoint.x(), aLineCStartPoint.y())
68 kLineCEnd = (aLineCEndPoint.x(),   aLineCEndPoint.y())
69 #=========================================================================
70 # Link triange lines with concidence
71 #=========================================================================
72 concidenceLinks = zip([aLineBStartPoint, aLineCStartPoint, aLineAStartPoint],
73                       [aLineAEndPoint, aLineBEndPoint, aLineCEndPoint])
74 aSession.startOperation()
75 for eachLink in concidenceLinks:
76     aConstraint = aSketchFeature.addFeature("SketchConstraintCoincidence")
77     reflistA = aConstraint.refattr("ConstraintEntityA")
78     reflistB = aConstraint.refattr("ConstraintEntityB")
79     reflistA.setAttr(eachLink[0])
80     reflistB.setAttr(eachLink[1])
81     aConstraint.execute()
82 aSession.finishOperation()
83
84 # Check that constarints doesn't affected lines' values
85 assert (kLineAStart == (aLineAStartPoint.x(), aLineAStartPoint.y()))
86 assert (kLineAEnd == (aLineAEndPoint.x(),   aLineAEndPoint.y()))
87 assert (kLineBStart == (aLineBStartPoint.x(), aLineBStartPoint.y()))
88 assert (kLineBEnd == (aLineBEndPoint.x(),   aLineBEndPoint.y()))
89 assert (kLineCStart == (aLineCStartPoint.x(), aLineCStartPoint.y()))
90 assert (kLineCEnd == (aLineCEndPoint.x(),   aLineCEndPoint.y()))
91 #=========================================================================
92 # Make line A rigid
93 #=========================================================================
94 aSession.startOperation()
95 aRigidConstraint = aSketchFeature.addFeature("SketchConstraintRigid")
96 eachRefattr = aRigidConstraint.refattr("ConstraintEntityA")
97 lineResults = aSketchLineA.results()
98 for eachResult in lineResults:
99     if eachResult.shape().isEdge():
100         break
101 aResult = modelAPI_ResultConstruction(eachResult)
102 assert (aResult is not None)
103 eachRefattr.setObject(aResult)
104 # aRigidConstraint.execute()
105 aSession.finishOperation()
106
107 # Check that constarints doesn't affected lines' values
108 assert ((aLineAStartPoint.x(), aLineAStartPoint.y()) == (aLineCEndPoint.x(), aLineCEndPoint.y()))
109 assert ((aLineBStartPoint.x(), aLineBStartPoint.y()) == (aLineAEndPoint.x(), aLineAEndPoint.y()))
110 assert ((aLineCStartPoint.x(), aLineCStartPoint.y()) == (aLineBEndPoint.x(), aLineBEndPoint.y()))
111 #=========================================================================
112 # Check that moving line A does not affect lines
113 #=========================================================================
114 aSession.startOperation()
115 aLineAEndPoint.setValue(90., 0.)
116 aSession.finishOperation()
117 # Check that constarint keep features' values
118 assert ((aLineAStartPoint.x(), aLineAStartPoint.y()) == (aLineCEndPoint.x(), aLineCEndPoint.y()))
119 assert ((aLineBStartPoint.x(), aLineBStartPoint.y()) == (aLineAEndPoint.x(), aLineAEndPoint.y()))
120 assert ((aLineCStartPoint.x(), aLineCStartPoint.y()) == (aLineBEndPoint.x(), aLineBEndPoint.y()))
121 #=========================================================================
122 # Check that moving line B does not affect lines
123 #=========================================================================
124 aSession.startOperation()
125 aLineBEndPoint.setValue(90., 150.)
126 aSession.finishOperation()
127 # Check that constarint keep features' values
128 assert ((aLineAStartPoint.x(), aLineAStartPoint.y()) == (aLineCEndPoint.x(), aLineCEndPoint.y()))
129 assert ((aLineBStartPoint.x(), aLineBStartPoint.y()) == (aLineAEndPoint.x(), aLineAEndPoint.y()))
130 assert ((aLineCStartPoint.x(), aLineCStartPoint.y()) == (aLineBEndPoint.x(), aLineBEndPoint.y()))
131 #=========================================================================
132 # TODO: improve test
133 # 1. remove constraint, move line to check that constraint are not applied
134 #=========================================================================
135 #=========================================================================
136 # End of test
137 #=========================================================================
138
139 from salome.shaper import model
140 assert(model.checkPythonDump())