X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSketchPlugin%2FSketchPlugin_ConstraintRigid.cpp;h=8867e16d55932720530b9e6e0ea9dde72eeb88b6;hb=d4ec34025812615d1aa16679db0c5a151b2a2abe;hp=7653eb59ba4575ff1c2ebd1edd754a5f724ae22a;hpb=9e869ede4d8c56262bb20534543c2bf56cd6a91b;p=modules%2Fshaper.git diff --git a/src/SketchPlugin/SketchPlugin_ConstraintRigid.cpp b/src/SketchPlugin/SketchPlugin_ConstraintRigid.cpp index 7653eb59b..8867e16d5 100644 --- a/src/SketchPlugin/SketchPlugin_ConstraintRigid.cpp +++ b/src/SketchPlugin/SketchPlugin_ConstraintRigid.cpp @@ -1,8 +1,14 @@ +// Copyright (C) 2014-20xx CEA/DEN, EDF R&D --> + // File: SketchPlugin_ConstraintRigid.cpp // Created: 13 Oct 2014 // Author: Artem ZHIDKOV #include "SketchPlugin_ConstraintRigid.h" +#include "SketchPlugin_ConstraintParallel.h" +#include "SketchPlugin_Feature.h" + +#include #include #include @@ -16,7 +22,7 @@ SketchPlugin_ConstraintRigid::SketchPlugin_ConstraintRigid() void SketchPlugin_ConstraintRigid::initAttributes() { - data()->addAttribute(SketchPlugin_Constraint::ENTITY_A(), ModelAPI_AttributeRefAttr::type()); + data()->addAttribute(SketchPlugin_Constraint::ENTITY_A(), ModelAPI_AttributeRefAttr::typeId()); } void SketchPlugin_ConstraintRigid::execute() @@ -28,42 +34,20 @@ AISObjectPtr SketchPlugin_ConstraintRigid::getAISObject(AISObjectPtr thePrevious if (!sketch()) return thePrevious; - std::shared_ptr aData = data(); - std::shared_ptr anAttr = std::dynamic_pointer_cast< - ModelAPI_AttributeRefAttr>(aData->attribute(SketchPlugin_Constraint::ENTITY_A())); - if (!anAttr /*|| !anAttr->isObject()*/) - return thePrevious; - - std::shared_ptr aShape; - - if (anAttr->isObject()) { - std::shared_ptr aConst; - aConst = std::dynamic_pointer_cast(anAttr->object()); - - if (!aConst) - return thePrevious; - aShape = aConst->shape(); - } - else { - std::shared_ptr aPointAttr = - std::dynamic_pointer_cast(anAttr->attr()); - if (!aPointAttr) - return thePrevious; - std::shared_ptr aPoint(sketch()->to3D(aPointAttr->x(), aPointAttr->y())); - aShape = GeomAlgoAPI_PointBuilder::point(aPoint); - } - AISObjectPtr anAIS = thePrevious; - if (!anAIS) - anAIS = AISObjectPtr(new GeomAPI_AISObject); - - std::shared_ptr aPlane = sketch()->plane(); - anAIS->createFixed(aShape, aPlane); - - // Set color from preferences - std::vector aRGB = Config_PropManager::color("Visualization", "fixing_color", - FIXING_COLOR); - anAIS->setColor(aRGB[0], aRGB[1], aRGB[2]); + 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()); + } + } return anAIS; } \ No newline at end of file