From de068c508b401849ac2a3f363ffa43396126c219 Mon Sep 17 00:00:00 2001 From: vsv Date: Wed, 6 Apr 2016 17:27:35 +0300 Subject: [PATCH] Issue #1306: Find Feature by history from result and shape --- src/XGUI/XGUI_SelectionMgr.cpp | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/XGUI/XGUI_SelectionMgr.cpp b/src/XGUI/XGUI_SelectionMgr.cpp index 11e2e76fc..fd7729f03 100644 --- a/src/XGUI/XGUI_SelectionMgr.cpp +++ b/src/XGUI/XGUI_SelectionMgr.cpp @@ -120,25 +120,26 @@ void XGUI_SelectionMgr::onObjectBrowserSelection() //************************************************************** void XGUI_SelectionMgr::onViewerSelection() { + SessionPtr aMgr = ModelAPI_Session::get(); + DocumentPtr anActiveDocument = aMgr->activeDocument(); QObjectPtrList aFeatures; + ResultPtr aResult; + FeaturePtr aFeature; Handle(AIS_InteractiveContext) aContext = myWorkshop->viewer()->AISContext(); if (!aContext.IsNull()) { QList aPresentations = selection()->getSelected(ModuleBase_ISelection::Viewer); foreach(ModuleBase_ViewerPrs aPrs, aPresentations) { - if (aPrs.object().get()) + if (aPrs.object().get()) { aFeatures.append(aPrs.object()); - } - } - // Add features by selected results - QObjectPtrList aTmpList = aFeatures; - ResultPtr aResult; - FeaturePtr aFeature; - foreach(ObjectPtr aObj, aTmpList) { - aResult = std::dynamic_pointer_cast(aObj); - if (aResult.get()) { - aFeature = ModelAPI_Feature::feature(aResult); - if (aFeature.get() && (!aFeatures.contains(aFeature))) - aFeatures.append(aFeature); + if (aPrs.shape().get()) { + aResult = std::dynamic_pointer_cast(aPrs.object()); + if (aResult.get()) { + aFeature = anActiveDocument->producedByFeature(aResult, aPrs.shape()); + if (aFeature.get() && (!aFeatures.contains(aFeature))) + aFeatures.append(aFeature); + } + } + } } } bool aBlocked = myWorkshop->objectBrowser()->blockSignals(true); -- 2.39.2