1 # Copyright (C) 2014-2019 CEA/DEN, EDF R&D
3 # This library is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU Lesser General Public
5 # License as published by the Free Software Foundation; either
6 # version 2.1 of the License, or (at your option) any later version.
8 # This library is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 # Lesser General Public License for more details.
13 # You should have received a copy of the GNU Lesser General Public
14 # License along with this library; if not, write to the Free Software
15 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 TestConstraintHorizontal.py
22 Unit test of SketchPlugin_ConstraintHorizontal class
24 SketchPlugin_ConstraintHorizontal
25 static const std::string MY_CONSTRAINT_HORIZONTAL_ID("SketchConstraintHorizontal");
26 data()->addAttribute(SketchPlugin_Constraint::ENTITY_A(), ModelAPI_AttributeRefAttr::typeId());
29 from GeomDataAPI import *
30 from ModelAPI import *
31 from salome.shaper import model
33 #=========================================================================
34 # Initialization of the test
35 #=========================================================================
37 __updated__ = "2015-03-16"
39 aSession = ModelAPI_Session.get()
40 aDocument = aSession.moduleDocument()
41 #=========================================================================
42 # Creation of a sketch
43 #=========================================================================
44 aSession.startOperation()
45 aSketchCommonFeature = aDocument.addFeature("Sketch")
46 aSketchFeature = featureToCompositeFeature(aSketchCommonFeature)
47 origin = geomDataAPI_Point(aSketchFeature.attribute("Origin"))
48 origin.setValue(0, 0, 0)
49 dirx = geomDataAPI_Dir(aSketchFeature.attribute("DirX"))
50 dirx.setValue(1, 0, 0)
51 norm = geomDataAPI_Dir(aSketchFeature.attribute("Norm"))
52 norm.setValue(0, 0, 1)
53 aSession.finishOperation()
54 #=========================================================================
55 # Create non-horizontal line
56 #=========================================================================
57 aSession.startOperation()
58 aSketchLine = aSketchFeature.addFeature("SketchLine")
59 aLineStartPoint = geomDataAPI_Point2D(aSketchLine.attribute("StartPoint"))
60 aLineEndPoint = geomDataAPI_Point2D(aSketchLine.attribute("EndPoint"))
61 aLineStartPoint.setValue(0., 15.)
62 aLineEndPoint.setValue(20., 25.)
63 aSession.finishOperation()
64 assert(model.dof(aSketchFeature) == 4)
65 #=========================================================================
66 # Assign horizontal constraint for a line
67 #=========================================================================
68 aSession.startOperation()
69 aHorizontalConstraint = aSketchFeature.addFeature("SketchConstraintHorizontal")
70 refattrA = aHorizontalConstraint.refattr("ConstraintEntityA")
71 aResult = modelAPI_ResultConstruction(aSketchLine.firstResult())
72 assert (aResult is not None)
73 refattrA.setObject(aResult)
74 aHorizontalConstraint.execute()
75 aSession.finishOperation()
76 assert(aLineStartPoint.y() == aLineEndPoint.y())
77 assert(model.dof(aSketchFeature) == 3)
78 #=========================================================================
79 # Move one of boundary points of a line
80 #=========================================================================
82 aSession.startOperation()
83 aLineStartPoint.setValue(aLineStartPoint.x() + deltaX,
84 aLineStartPoint.y() + deltaY)
85 aSession.finishOperation()
86 assert(aLineStartPoint.y() == aLineEndPoint.y())
87 assert(model.dof(aSketchFeature) == 3)
88 #=========================================================================
89 # Move other boundary point of a line
90 #=========================================================================
93 aSession.startOperation()
94 aLineEndPoint.setValue(aLineEndPoint.x() + deltaX,
95 aLineEndPoint.y() + deltaY)
96 aSession.finishOperation()
97 assert(aLineStartPoint.y() == aLineEndPoint.y())
98 assert(model.dof(aSketchFeature) == 3)
99 #=========================================================================
101 #=========================================================================
103 assert(model.checkPythonDump())