]> SALOME platform Git repositories - modules/shaper.git/blobdiff - src/SketchPlugin/SketchPlugin_Feature.cpp
Salome HOME
Changes in the presentations of features
[modules/shaper.git] / src / SketchPlugin / SketchPlugin_Feature.cpp
index 6a7e12f5d83590a12b2f591d48c5de0aa4e4483a..4404ea1b80cb0fa5947abf5c718c5d99037bcfaf 100644 (file)
@@ -5,10 +5,6 @@
 #include <ModelAPI_Object.h>
 #include <ModelAPI_AttributeRefList.h>
 
-#include <AIS_InteractiveObject.hxx>
-#include <AIS_Shape.hxx>
-#include <TopoDS_Shape.hxx>
-
 SketchPlugin_Feature::SketchPlugin_Feature()
 {
   mySketch = 0;
@@ -48,29 +44,13 @@ SketchPlugin_Sketch* SketchPlugin_Feature::sketch()
   return mySketch;
 }
 
-Handle(AIS_InteractiveObject) SketchPlugin_Feature::getAISShape(Handle(AIS_InteractiveObject) thePrevious)
+boost::shared_ptr<GeomAPI_AISObject> SketchPlugin_Feature::prepareAISShape(
+                        boost::shared_ptr<GeomAPI_AISObject> thePrevious)
 {
   boost::shared_ptr<GeomAPI_Shape> aPreview = preview();
-
-  Handle(AIS_InteractiveObject) anAIS = thePrevious;
-  const TopoDS_Shape& aShape = aPreview ? aPreview->impl<TopoDS_Shape>() : 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<GeomAPI_AISObject> aResult = thePrevious;
+  if (!aResult)
+    aResult = boost::shared_ptr<GeomAPI_AISObject>(new GeomAPI_AISObject());
+  aResult->createShape(aPreview);
+  return aResult;
 }