]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Provide selection of features for invisible objects
authorvsv <vsv@opencascade.com>
Wed, 9 Oct 2019 08:53:51 +0000 (11:53 +0300)
committervsv <vsv@opencascade.com>
Wed, 9 Oct 2019 08:53:51 +0000 (11:53 +0300)
src/ModuleBase/ModuleBase_ISelection.cpp

index 73999c6011f5549c3cdab609edfd8b749720be8c..635991721be9e7b932cd8e82097bb06b396416fe 100644 (file)
@@ -20,6 +20,7 @@
 #include "ModuleBase_ISelection.h"
 
 #include "ModuleBase_ViewerPrs.h"
+#include "ModelAPI_Feature.h"
 
 #include <StdSelect_BRepOwner.hxx>
 #include <TopoDS_Vertex.hxx>
@@ -53,8 +54,16 @@ ResultPtr ModuleBase_ISelection::getResult(const ModuleBase_ViewerPrsPtr& thePrs
 {
   ResultPtr aResult;
 
-  if (thePrs->object().get())
-    aResult = std::dynamic_pointer_cast<ModelAPI_Result>(thePrs->object());
+  if (thePrs->object().get()) {
+    ObjectPtr aObject = thePrs->object();
+    aResult = std::dynamic_pointer_cast<ModelAPI_Result>(aObject);
+    if (!aResult.get()) {
+      FeaturePtr aFeature = std::dynamic_pointer_cast<ModelAPI_Feature>(aObject);
+      if (aFeature.get()) {
+        aResult = aFeature->firstResult();
+      }
+    }
+  }
   else if (!thePrs->owner().IsNull()) {
     ObjectPtr anObject = getSelectableObject(thePrs->owner());
     aResult = std::dynamic_pointer_cast<ModelAPI_Result>(anObject);