X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSketchPlugin%2FTest%2FTestConstraintRadius.py;h=9ba906752f4c4210ffdc93479bae3e83d25752ae;hb=28aeea8f3f5a816ac821a6ff4dc2f98fbd2c99dd;hp=885c385d7070a51b96ef48ef6f513a6978d4768a;hpb=4d17967148788d2336a0f10530bc5eb739ae4ef1;p=modules%2Fshaper.git diff --git a/src/SketchPlugin/Test/TestConstraintRadius.py b/src/SketchPlugin/Test/TestConstraintRadius.py index 885c385d7..9ba906752 100644 --- a/src/SketchPlugin/Test/TestConstraintRadius.py +++ b/src/SketchPlugin/Test/TestConstraintRadius.py @@ -12,116 +12,137 @@ SketchPlugin_ConstraintRadius static const std::string MY_CONSTRAINT_RADIUS_ID("SketchConstraintRadius"); - data()->addAttribute(SketchPlugin_Constraint::VALUE(), ModelAPI_AttributeDouble::type()); - data()->addAttribute(SketchPlugin_Constraint::ENTITY_A(), ModelAPI_AttributeRefAttr::type()); - data()->addAttribute(SketchPlugin_Constraint::FLYOUT_VALUE_PNT(), GeomDataAPI_Point2D::type()); + data()->addAttribute(SketchPlugin_Constraint::VALUE(), ModelAPI_AttributeDouble::typeId()); + data()->addAttribute(SketchPlugin_Constraint::ENTITY_A(), ModelAPI_AttributeRefAttr::typeId()); + data()->addAttribute(SketchPlugin_Constraint::FLYOUT_VALUE_PNT(), GeomDataAPI_Point2D::typeId()); """ from GeomDataAPI import * from ModelAPI import * import math +from salome.shaper import model + #========================================================================= # Initialization of the test #========================================================================= -__updated__ = "2014-07-29" +__updated__ = "2014-10-28" + +def distancePointPoint(pointA, pointB): + """ + subroutine to calculate distance between two points + result of calculated distance is has 10**-5 precision + """ + xdiff = math.pow((pointA.x() - pointB.x()), 2) + ydiff = math.pow((pointA.y() - pointB.y()), 2) + return round(math.sqrt(xdiff + ydiff), 5) + -aPluginManager = ModelAPI_PluginManager.get() -aDocument = aPluginManager.rootDocument() +aSession = ModelAPI_Session.get() +aDocument = aSession.moduleDocument() #========================================================================= # Creation of a sketch #========================================================================= -aDocument.startOperation() -aSketchFeature = aDocument.addFeature("Sketch") -aSketchFeatureData = aSketchFeature.data() -origin = geomDataAPI_Point(aSketchFeatureData.attribute("Origin")) +aSession.startOperation() +aSketchCommonFeature = aDocument.addFeature("Sketch") +aSketchFeature = featureToCompositeFeature(aSketchCommonFeature) +origin = geomDataAPI_Point(aSketchFeature.attribute("Origin")) origin.setValue(0, 0, 0) -dirx = geomDataAPI_Dir(aSketchFeatureData.attribute("DirX")) +dirx = geomDataAPI_Dir(aSketchFeature.attribute("DirX")) dirx.setValue(1, 0, 0) -diry = geomDataAPI_Dir(aSketchFeatureData.attribute("DirY")) -diry.setValue(0, 1, 0) -norm = geomDataAPI_Dir(aSketchFeatureData.attribute("Norm")) +norm = geomDataAPI_Dir(aSketchFeature.attribute("Norm")) norm.setValue(0, 0, 1) -aDocument.finishOperation() +aSession.finishOperation() #========================================================================= # Creation of an arc and a circle #========================================================================= -aDocument.startOperation() -aSketchReflist = aSketchFeatureData.reflist("Features") -aSketchArc = aDocument.addFeature("SketchArc") -aSketchReflist.append(aSketchArc) -aSketchArcData = aSketchArc.data() -anArcCentr = geomDataAPI_Point2D(aSketchArcData.attribute("ArcCenter")) +aSession.startOperation() +aSketchArc = aSketchFeature.addFeature("SketchArc") +anArcCentr = geomDataAPI_Point2D(aSketchArc.attribute("ArcCenter")) anArcCentr.setValue(10., 10.) -anArcStartPoint = geomDataAPI_Point2D( - aSketchArcData.attribute("ArcStartPoint")) +anArcStartPoint = geomDataAPI_Point2D(aSketchArc.attribute("ArcStartPoint")) anArcStartPoint.setValue(0., 50.) -anArcEndPoint = geomDataAPI_Point2D(aSketchArcData.attribute("ArcEndPoint")) +anArcEndPoint = geomDataAPI_Point2D(aSketchArc.attribute("ArcEndPoint")) anArcEndPoint.setValue(50., 0.) -aDocument.finishOperation() +aSession.finishOperation() +assert (model.dof(aSketchFeature) == 5) +# Test changing the arc start/end point +aSession.startOperation() +anArcStartPoint.setValue(anArcStartPoint.x(), 40.) +anArcStartPoint.setValue(0., 50.) +assert (math.hypot(anArcStartPoint.x() - 0., anArcStartPoint.y() - 50.) < 1.e-10) +aSession.finishOperation() +aSession.startOperation() +anArcEndPoint.setValue(40., anArcEndPoint.y()) +anArcEndPoint.setValue(50., 0.) +assert (math.hypot(anArcEndPoint.x() - 50., anArcEndPoint.y() - 0.) < 1.e-10) +aSession.finishOperation() +assert (model.dof(aSketchFeature) == 5) # Circle -aDocument.startOperation() -aSketchCircle = aDocument.addFeature("SketchCircle") -aSketchReflist.append(aSketchCircle) -aSketchCircleData = aSketchCircle.data() -anCircleCentr = geomDataAPI_Point2D( - aSketchCircleData.attribute("CircleCenter")) -aCircleRadius = aSketchCircleData.real("CircleRadius") +aSession.startOperation() +aSketchCircle = aSketchFeature.addFeature("SketchCircle") +anCircleCentr = geomDataAPI_Point2D(aSketchCircle.attribute("CircleCenter")) +aCircleRadius = aSketchCircle.real("CircleRadius") anCircleCentr.setValue(-25., -25) aCircleRadius.setValue(25.) -aDocument.finishOperation() +aSession.finishOperation() +assert (model.dof(aSketchFeature) == 8) +# Change the radius of the arc +aSession.startOperation() +RADIUS = 40 +anArcRadius = aSketchArc.real("ArcRadius") +anArcRadius.setValue(RADIUS) +aSession.finishOperation() +assert (model.dof(aSketchFeature) == 8) #========================================================================= # Make a constraint to keep the radius of the arc #========================================================================= -aDocument.startOperation() -aConstraint = aDocument.addFeature("SketchConstraintRadius") -aSketchReflist.append(aConstraint) -aConstraintData = aConstraint.data() -aRadius = aConstraintData.real("ConstraintValue") -aRefObject = aConstraintData.refattr("ConstraintEntityA") -aResult = aSketchArc.firstResult() +aSession.startOperation() +aConstraint = aSketchFeature.addFeature("SketchConstraintRadius") +aRadius = aConstraint.real("ConstraintValue") +aRefObject = aConstraint.refattr("ConstraintEntityA") +aResult = aSketchArc.lastResult() assert (aResult is not None) aRefObject.setObject(modelAPI_ResultConstruction(aResult)) -aDocument.finishOperation() +aConstraint.execute() +aSession.finishOperation() assert (aRadius.isInitialized()) assert (aRefObject.isInitialized()) +assert (model.dof(aSketchFeature) == 7) #========================================================================= # Make a constraint to keep the radius of the circle #========================================================================= -aDocument.startOperation() -aConstraint = aDocument.addFeature("SketchConstraintRadius") -aSketchReflist.append(aConstraint) -aConstraintData = aConstraint.data() -aRadius = aConstraintData.real("ConstraintValue") -aRefObject = aConstraintData.refattr("ConstraintEntityA") -aResult = aSketchCircle.firstResult() +aSession.startOperation() +aConstraint = aSketchFeature.addFeature("SketchConstraintRadius") +aRadius = aConstraint.real("ConstraintValue") +aRefObject = aConstraint.refattr("ConstraintEntityA") +aResult = aSketchCircle.lastResult() assert (aResult is not None) aRefObject.setObject(modelAPI_ResultConstruction(aResult)) -aDocument.finishOperation() +aConstraint.execute() +aSession.finishOperation() assert (aRadius.isInitialized()) assert (aRefObject.isInitialized()) +assert (model.dof(aSketchFeature) == 6) #========================================================================= # Perform some actions and checks: # 1. Check that constraints does not changes values # 2. Move one point of the arc # 3. Check that second point is moved also #========================================================================= -assert (anArcCentr.x() == 10.) -assert (anArcCentr.y() == 10.) -assert (anArcStartPoint.x() == 0.) -assert (anArcStartPoint.y() == 50.) +assert (math.fabs(distancePointPoint(anArcCentr, anArcStartPoint) - RADIUS) < 1.e-10) +assert (math.fabs(distancePointPoint(anArcCentr, anArcEndPoint) - RADIUS) < 1.e-10) anArcPrevEndPointX = anArcEndPoint.x() anArcPrevEndPointY = anArcEndPoint.y() -assert (anArcPrevEndPointX == 50.) -assert (anArcPrevEndPointY == 0.) # Move one point of the arc -aDocument.startOperation() -anArcStartPoint.setValue(0., 60) -aDocument.finishOperation() -assert (anArcCentr.x() == 10.) -assert (anArcCentr.y() == 10.) +aSession.startOperation() +anArcStartPoint.setValue(0, 60) +aSession.finishOperation() assert (anArcEndPoint.x() != anArcPrevEndPointX) assert (anArcEndPoint.y() != anArcPrevEndPointY) +assert (math.fabs(distancePointPoint(anArcCentr, anArcStartPoint) - RADIUS) < 1.e-10) +assert (math.fabs(distancePointPoint(anArcCentr, anArcEndPoint) - RADIUS) < 1.e-10) +assert (model.dof(aSketchFeature) == 6) #========================================================================= # 4. Move the centr or the point of the arc # 5. Check radius is the same @@ -129,12 +150,15 @@ assert (anArcEndPoint.y() != anArcPrevEndPointY) assert (anCircleCentr.x() == -25) assert (anCircleCentr.y() == -25) assert (aCircleRadius.value() == 25) -aDocument.startOperation() +aSession.startOperation() anCircleCentr.setValue(100., 100.) -aDocument.finishOperation() +aSession.finishOperation() assert (anCircleCentr.x() == 100) assert (anCircleCentr.y() == 100) assert (aCircleRadius.value() == 25) +assert (model.dof(aSketchFeature) == 6) #========================================================================= # End of test #========================================================================= + +assert(model.checkPythonDump())