X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSketchPlugin%2FSketchPlugin_Feature.cpp;h=da25c09994581e44f9153dc447b05979ad525c63;hb=db01498dd5845ccb8d62912ae09aff5669f51a0e;hp=6a7e12f5d83590a12b2f591d48c5de0aa4e4483a;hpb=29dc792755900920f8d355a87dd0c31fd26bfe50;p=modules%2Fshaper.git diff --git a/src/SketchPlugin/SketchPlugin_Feature.cpp b/src/SketchPlugin/SketchPlugin_Feature.cpp index 6a7e12f5d..da25c0999 100644 --- a/src/SketchPlugin/SketchPlugin_Feature.cpp +++ b/src/SketchPlugin/SketchPlugin_Feature.cpp @@ -4,39 +4,28 @@ #include #include #include - -#include -#include -#include +#include SketchPlugin_Feature::SketchPlugin_Feature() { mySketch = 0; } -void SketchPlugin_Feature::setPreview(const boost::shared_ptr& theShape) -{ - myPreview = theShape; -} - -const boost::shared_ptr& SketchPlugin_Feature::getPreview() const -{ - return myPreview; -} - +/* SketchPlugin_Sketch* SketchPlugin_Feature::sketch() { if (!mySketch) { // find sketch that references to this feature - int aSketches = document()->size("Construction"); - for(int a = 0; a < aSketches && !mySketch; a++) { - boost::shared_ptr aSketch = boost:: - dynamic_pointer_cast(document()->feature("Construction", a, true)); + int aSketches = document()->size(ModelAPI_Feature::group()); + for (int a = 0; a < aSketches && !mySketch; a++) { + ObjectPtr anObj = document()->object(ModelAPI_Feature::group(), a); + boost::shared_ptr aSketch = + boost::dynamic_pointer_cast(anObj); if (aSketch) { - std::list aList = - aSketch->data()->reflist(SKETCH_ATTR_FEATURES)->list(); - std::list::iterator aSub = aList.begin(); - for(; aSub != aList.end(); aSub++) { + std::list aList = aSketch->data()->reflist(SketchPlugin_Sketch::FEATURES_ID()) + ->list(); + std::list::iterator aSub = aList.begin(); + for (; aSub != aList.end(); aSub++) { if ((*aSub)->data()->isEqual(data())) { mySketch = aSketch.get(); break; @@ -46,31 +35,21 @@ SketchPlugin_Sketch* SketchPlugin_Feature::sketch() } } return mySketch; -} +}*/ -Handle(AIS_InteractiveObject) SketchPlugin_Feature::getAISShape(Handle(AIS_InteractiveObject) thePrevious) +AISObjectPtr SketchPlugin_Feature::simpleAISObject(boost::shared_ptr theRes, + AISObjectPtr thePrevious) { - boost::shared_ptr aPreview = preview(); - - Handle(AIS_InteractiveObject) anAIS = thePrevious; - const TopoDS_Shape& aShape = aPreview ? aPreview->impl() : TopoDS_Shape(); - if (!anAIS.IsNull()) - { - Handle(AIS_Shape) aShapeAIS = Handle(AIS_Shape)::DownCast(anAIS); - if (!aShapeAIS.IsNull()) { - // if the AIS object is displayed in the opened local context in some mode, additional - // AIS sub objects are created there. They should be rebuild for correct selecting. - // It is possible to correct it by closing local context before the shape set and opening - // after. Another workaround to thrown down the selection and reselecting the AIS. - // If there was a problem here, try the first solution with close/open local context. - - aShapeAIS->Set(aShape); - aShapeAIS->Redisplay(Standard_True); - } - } - else - { - anAIS = new AIS_Shape(aShape); - } - return anAIS; + boost::shared_ptr aConstr = boost::dynamic_pointer_cast< + ModelAPI_ResultConstruction>(theRes); + + boost::shared_ptr aPreview; + if (aConstr) + aPreview = aConstr->shape(); + + AISObjectPtr aResult = thePrevious; + if (!aResult) + aResult = AISObjectPtr(new GeomAPI_AISObject()); + aResult->createShape(aPreview); + return aResult; }