X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSketchPlugin%2FTest%2FTestConstraintAngle.py;h=ebe140d075b594f83faaf18fd62d60ead440c8d5;hb=06e7f5859095193fc7f498bd89a7d28009794f53;hp=bc0214d2b8de10b11bd69502c683123eab18ea3c;hpb=ad84ec41d7f40729d3aef2a1a3fdb4e102d84b82;p=modules%2Fshaper.git diff --git a/src/SketchPlugin/Test/TestConstraintAngle.py b/src/SketchPlugin/Test/TestConstraintAngle.py index bc0214d2b..ebe140d07 100644 --- a/src/SketchPlugin/Test/TestConstraintAngle.py +++ b/src/SketchPlugin/Test/TestConstraintAngle.py @@ -1,20 +1,39 @@ +# Copyright (C) 2014-2023 CEA, EDF +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + """ TestConstraintAngle.py Unit test of SketchPlugin_ConstraintAngle class - + SketchPlugin_ConstraintAngle static const std::string MY_CONSTRAINT_ANGLE_ID("SketchConstraintAngle"); data()->addAttribute(SketchPlugin_Constraint::VALUE(), ModelAPI_AttributeDouble::typeId()); data()->addAttribute(SketchPlugin_Constraint::ENTITY_A(), ModelAPI_AttributeRefAttr::typeId()); data()->addAttribute(SketchPlugin_Constraint::ENTITY_B(), ModelAPI_AttributeRefAttr::typeId()); data()->addAttribute(SketchPlugin_Constraint::FLYOUT_VALUE_PNT(), GeomDataAPI_Point2D::typeId()); - - + + """ from GeomDataAPI import * from ModelAPI import * -import os import math +from salome.shaper import model #========================================================================= # Auxiliary functions @@ -26,16 +45,16 @@ def angle(theLine1, theLine2): aEndPoint1 = geomDataAPI_Point2D(theLine1.attribute("EndPoint")) aStartPoint2 = geomDataAPI_Point2D(theLine2.attribute("StartPoint")) aEndPoint2 = geomDataAPI_Point2D(theLine2.attribute("EndPoint")) - + aDirX1 = aEndPoint1.x() - aStartPoint1.x() aDirY1 = aEndPoint1.y() - aStartPoint1.y() aLen1 = math.hypot(aDirX1, aDirY1) aDirX2 = aEndPoint2.x() - aStartPoint2.x() aDirY2 = aEndPoint2.y() - aStartPoint2.y() aLen2 = math.hypot(aDirX2, aDirY2) - + aDot = aDirX1 * aDirX2 + aDirY1 * aDirY2 - + anAngle = math.acos(aDot / aLen1 / aLen2) return round(anAngle * 180. / math.pi, 6) @@ -78,9 +97,10 @@ aEndPoint.setValue(100., 25.) aSketchLineB = aSketchFeature.addFeature("SketchLine") aStartPoint = geomDataAPI_Point2D(aSketchLineB.attribute("StartPoint")) aEndPoint = geomDataAPI_Point2D(aSketchLineB.attribute("EndPoint")) -aStartPoint.setValue(-20., 15.) +aStartPoint.setValue(-10., 15.) aEndPoint.setValue(80., 50.) aSession.finishOperation() +assert (model.dof(aSketchFeature) == 8) #========================================================================= # Make a constraint to keep the angle #========================================================================= @@ -99,19 +119,26 @@ refattrB.setObject(aSketchLineB.firstResult()) anAngleVal.setValue(ANGLE_DEGREE) aConstraint.execute() aSession.finishOperation() +aSession.startOperation() +aFlyoutPoint = geomDataAPI_Point2D(aConstraint.attribute("ConstraintFlyoutValuePnt")) +aFlyoutPoint.setValue(50.0, 100.0) +aSession.finishOperation() +aSession.abortOperation() assert (anAngleVal.isInitialized()) assert (refattrA.isInitialized()) assert (refattrB.isInitialized()) assert (angle(aSketchLineA, aSketchLineB) == ANGLE_DEGREE) +assert (model.dof(aSketchFeature) == 7) #========================================================================= # Move line, check that angle is constant #========================================================================= aSession.startOperation() aStartPoint = geomDataAPI_Point2D(aSketchLineA.attribute("StartPoint")) -aStartPoint.setValue(0., 30.) +aStartPoint.setValue(0., -30.) aConstraint.execute() aSession.finishOperation() assert (angle(aSketchLineA, aSketchLineB) == ANGLE_DEGREE) +assert (model.dof(aSketchFeature) == 7) #========================================================================= # Change angle value and check the lines are moved #========================================================================= @@ -121,6 +148,7 @@ anAngleVal.setValue(NEW_ANGLE_DEGREE) aConstraint.execute() aSession.finishOperation() assert (angle(aSketchLineA, aSketchLineB) == NEW_ANGLE_DEGREE) +assert (model.dof(aSketchFeature) == 7) #========================================================================= # Change angle type #========================================================================= @@ -132,14 +160,21 @@ aSession.startOperation() aConstraint.integer("AngleType").setValue(ANGLE_BACKWARD) aSession.finishOperation() assert (angle(aSketchLineA, aSketchLineB) == NEW_ANGLE_DEGREE) +assert (model.dof(aSketchFeature) == 7) #========================================================================= -# TODO: improve test -# 1. remove constraint, move line's start point to -# check that constraint are not applied -# 2. check constrained distance between: -# * point and line -# * two lines +# Remove constraint, move line's point to check the constraint is not applied #========================================================================= +aSession.startOperation() +aDocument.removeFeature(aConstraint) +aSession.finishOperation() +assert (model.dof(aSketchFeature) == 8) +aSession.startOperation() +aStartPoint.setValue(-30., 0.) +aSession.finishOperation() +assert (angle(aSketchLineA, aSketchLineB) != NEW_ANGLE_DEGREE) +assert (model.dof(aSketchFeature) == 8) #========================================================================= # End of test #========================================================================= + +assert(model.checkPythonDump())