X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSketchPlugin%2FSketchPlugin_ConstraintDistance.cpp;h=7eeee42670cd1c92051ff22e969147ea675eb403;hb=64fc7e4fdd63997ec7a502b233ef5f88186d5bbb;hp=3891a2c6cc5eed9a0a013533322e3f5280036d11;hpb=21c6bdfc12eeaf908253e6f9504dc05450fb55ad;p=modules%2Fshaper.git diff --git a/src/SketchPlugin/SketchPlugin_ConstraintDistance.cpp b/src/SketchPlugin/SketchPlugin_ConstraintDistance.cpp index 3891a2c6c..7eeee4267 100644 --- a/src/SketchPlugin/SketchPlugin_ConstraintDistance.cpp +++ b/src/SketchPlugin/SketchPlugin_ConstraintDistance.cpp @@ -80,10 +80,11 @@ bool SketchPlugin_ConstraintDistance::compute(const std::string& theAttributeId) return false; DataPtr aData = data(); + std::shared_ptr aPlane = SketchPlugin_Sketch::plane(sketch()); std::shared_ptr aPoint_A = SketcherPrs_Tools::getFeaturePoint( - aData, SketchPlugin_Constraint::ENTITY_A()); + aData, SketchPlugin_Constraint::ENTITY_A(), aPlane); std::shared_ptr aPoint_B = SketcherPrs_Tools::getFeaturePoint( - aData, SketchPlugin_Constraint::ENTITY_B()); + aData, SketchPlugin_Constraint::ENTITY_B(), aPlane); std::shared_ptr aPnt_A; std::shared_ptr aPnt_B; @@ -133,8 +134,6 @@ AISObjectPtr SketchPlugin_ConstraintDistance::getAISObject(AISObjectPtr thePrevi if (!anAIS) { anAIS = SketcherPrs_Factory::lengthDimensionConstraint(this, sketch()->coordinatePlane()); } - - // Set color from preferences std::vector aRGB = Config_PropManager::color("Visualization", "sketch_dimension_color", SKETCH_DIMENSION_COLOR); anAIS->setColor(aRGB[0], aRGB[1], aRGB[2]); @@ -150,10 +149,11 @@ void SketchPlugin_ConstraintDistance::move(double theDeltaX, double theDeltaY) // Recalculate a shift of flyout point in terms of local coordinates std::shared_ptr aDir(new GeomAPI_XY(theDeltaX, theDeltaY)); + std::shared_ptr aPlane = SketchPlugin_Sketch::plane(sketch()); std::shared_ptr aPointA = SketcherPrs_Tools::getFeaturePoint( - data(), SketchPlugin_Constraint::ENTITY_A()); + data(), SketchPlugin_Constraint::ENTITY_A(), aPlane); std::shared_ptr aPointB = SketcherPrs_Tools::getFeaturePoint( - data(), SketchPlugin_Constraint::ENTITY_B()); + data(), SketchPlugin_Constraint::ENTITY_B(), aPlane); std::shared_ptr aStartPnt; std::shared_ptr aEndPnt; @@ -190,15 +190,16 @@ void SketchPlugin_ConstraintDistance::move(double theDeltaX, double theDeltaY) myFlyoutUpdate = false; } -double SketchPlugin_ConstraintDistance::calculateCurrentDistance() const +double SketchPlugin_ConstraintDistance::calculateCurrentDistance() { double aDistance = -1.; std::shared_ptr aData = data(); + std::shared_ptr aPlane = SketchPlugin_Sketch::plane(sketch()); std::shared_ptr aPointA = - SketcherPrs_Tools::getFeaturePoint(aData, SketchPlugin_Constraint::ENTITY_A()); + SketcherPrs_Tools::getFeaturePoint(aData, SketchPlugin_Constraint::ENTITY_A(), aPlane); std::shared_ptr aPointB = - SketcherPrs_Tools::getFeaturePoint(aData, SketchPlugin_Constraint::ENTITY_B()); + SketcherPrs_Tools::getFeaturePoint(aData, SketchPlugin_Constraint::ENTITY_B(), aPlane); if (aPointA.get() && aPointB.get()) { // both points aDistance = aPointA->pnt()->distance(aPointB->pnt()); @@ -246,10 +247,11 @@ void SketchPlugin_ConstraintDistance::attributeChanged(const std::string& theID) attribute(SketchPlugin_Constraint::FLYOUT_VALUE_PNT())); std::shared_ptr aFlyoutPnt = aFlyoutAttr->pnt(); + std::shared_ptr aPlane = SketchPlugin_Sketch::plane(sketch()); std::shared_ptr aPointA = SketcherPrs_Tools::getFeaturePoint( - data(), SketchPlugin_Constraint::ENTITY_A()); + data(), SketchPlugin_Constraint::ENTITY_A(), aPlane); std::shared_ptr aPointB = SketcherPrs_Tools::getFeaturePoint( - data(), SketchPlugin_Constraint::ENTITY_B()); + data(), SketchPlugin_Constraint::ENTITY_B(), aPlane); std::shared_ptr aStartPnt; std::shared_ptr aEndPnt; @@ -275,6 +277,9 @@ void SketchPlugin_ConstraintDistance::attributeChanged(const std::string& theID) } else return; + if (aEndPnt->distance(aStartPnt) < tolerance) + return; + std::shared_ptr aLineDir(new GeomAPI_Dir2d(aEndPnt->decreased(aStartPnt))); std::shared_ptr aFlyoutDir = aFlyoutPnt->xy()->decreased(aStartPnt);