X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSketchPlugin%2FSketchPlugin_ConstraintRigid.cpp;h=418c0dd53a523e12590e40f59cc392df7b5b4b1f;hb=c5b71f05b19e8b0e3588b4b1778f0e9f256dcf17;hp=8867e16d55932720530b9e6e0ea9dde72eeb88b6;hpb=33b3a43ad2266cb044e4232c902344842adbba7c;p=modules%2Fshaper.git diff --git a/src/SketchPlugin/SketchPlugin_ConstraintRigid.cpp b/src/SketchPlugin/SketchPlugin_ConstraintRigid.cpp index 8867e16d5..418c0dd53 100644 --- a/src/SketchPlugin/SketchPlugin_ConstraintRigid.cpp +++ b/src/SketchPlugin/SketchPlugin_ConstraintRigid.cpp @@ -35,19 +35,23 @@ AISObjectPtr SketchPlugin_ConstraintRigid::getAISObject(AISObjectPtr thePrevious return thePrevious; AISObjectPtr anAIS = thePrevious; - if (anAIS.get() == NULL) { - std::shared_ptr aData = data(); - std::shared_ptr anAttr = - std::dynamic_pointer_cast(aData->attribute(SketchPlugin_Constraint::ENTITY_A())); - ObjectPtr aObj = anAttr->object(); - if (aObj.get() != NULL) { - FeaturePtr aFeature = ModelAPI_Feature::feature(aObj); - std::shared_ptr aSkFea = - std::dynamic_pointer_cast(aFeature); - if (!aSkFea->isExternal()) - anAIS = SketcherPrs_Factory::rigidConstraint(this, sketch()->coordinatePlane()); - } + + bool isValidRigid = false; + std::shared_ptr aData = data(); + AttributeRefAttrPtr anAttr = aData->refattr(SketchPlugin_Constraint::ENTITY_A()); + ObjectPtr aObj = anAttr->object(); + if (aObj.get() != NULL) { + FeaturePtr aFeature = ModelAPI_Feature::feature(aObj); + std::shared_ptr aSkFea = + std::dynamic_pointer_cast(aFeature); + if (!aSkFea->isExternal()) + isValidRigid = true; } + if (isValidRigid) + anAIS = SketcherPrs_Factory::rigidConstraint(this, sketch()->coordinatePlane(), thePrevious); + else + anAIS = AISObjectPtr(); + return anAIS; } \ No newline at end of file