From 12385f8af09b5ffbdf68bb42124ef76f1d034957 Mon Sep 17 00:00:00 2001 From: nds Date: Thu, 26 Feb 2015 11:05:47 +0300 Subject: [PATCH] Issue #391 Selection restore problem for sketch constraints --- src/PartSet/PartSet_SketcherMgr.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/PartSet/PartSet_SketcherMgr.cpp b/src/PartSet/PartSet_SketcherMgr.cpp index db967f651..30f1523b9 100644 --- a/src/PartSet/PartSet_SketcherMgr.cpp +++ b/src/PartSet/PartSet_SketcherMgr.cpp @@ -795,6 +795,21 @@ void PartSet_SketcherMgr::getSelectionOwners(const FeaturePtr& theFeature, XGUI_ModuleConnector* aConnector = dynamic_cast(theWorkshop); XGUI_Displayer* aDisplayer = aConnector->workshop()->displayer(); + // 1. found the feature's owners. Check the AIS objects of the constructions + AISObjectPtr aAISObj = aDisplayer->getAISObject(theFeature); + if (aAISObj.get() != NULL && aSelectedAttributes.empty() && aSelectedResults.empty()) { + Handle(AIS_InteractiveObject) anAISIO = aAISObj->impl(); + + SelectMgr_IndexedMapOfOwner aSelectedOwners; + aConnector->workshop()->selector()->selection()->entityOwners(anAISIO, aSelectedOwners); + for (Standard_Integer i = 1, n = aSelectedOwners.Extent(); i <= n; i++) { + Handle(SelectMgr_EntityOwner) anOwner = aSelectedOwners(i); + if (!anOwner.IsNull()) + anOwnersToSelect.Add(anOwner); + } + } + + // 2. found the feature results's owners std::list aResults = theFeature->results(); std::list::const_iterator aIt; for (aIt = aResults.begin(); aIt != aResults.end(); ++aIt) -- 2.39.2