X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FPartSet%2FPartSet_SketcherMgr.cpp;h=7937a60c337249dc43e58308367d78e723b3951f;hb=e6655db718a3c9dad621d3990d9ff4c833ac1532;hp=2b0b5e121add5cc6b41947ac186b9c5bd742a334;hpb=d0ae3d1c1788330238fa4acfc35790e0ee0e0ab0;p=modules%2Fshaper.git diff --git a/src/PartSet/PartSet_SketcherMgr.cpp b/src/PartSet/PartSet_SketcherMgr.cpp index 2b0b5e121..7937a60c3 100644 --- a/src/PartSet/PartSet_SketcherMgr.cpp +++ b/src/PartSet/PartSet_SketcherMgr.cpp @@ -6,7 +6,7 @@ #include "PartSet_SketcherMgr.h" #include "PartSet_Module.h" -#include "PartSet_WidgetPoint2D.h" +#include "PartSet_WidgetPoint2d.h" #include "PartSet_Tools.h" #include @@ -436,16 +436,26 @@ void PartSet_SketcherMgr::startSketch(ModuleBase_Operation* theOperation) void PartSet_SketcherMgr::stopSketch(ModuleBase_Operation* theOperation) { + XGUI_ModuleConnector* aConnector = dynamic_cast(myModule->workshop()); + XGUI_Displayer* aDisplayer = aConnector->workshop()->displayer(); + DataPtr aData = myCurrentSketch->data(); if ((!aData) || (!aData->isValid())) { // The sketch was aborted myCurrentSketch = CompositeFeaturePtr(); myModule->workshop()->viewer()->removeSelectionFilter(myPlaneFilter); + + // Erase all sketcher objects + QStringList aSketchIds = sketchOperationIdList(); + QObjectPtrList aObjects = aDisplayer->displayedObjects(); + foreach (ObjectPtr aObj, aObjects) { + DataPtr aObjData = aObj->data(); + if ((!aObjData) || (!aObjData->isValid())) + aDisplayer->erase(aObj); + } return; } // Hide all sketcher sub-Objects - XGUI_ModuleConnector* aConnector = dynamic_cast(myModule->workshop()); - XGUI_Displayer* aDisplayer = aConnector->workshop()->displayer(); for (int i = 0; i < myCurrentSketch->numberOfSubs(); i++) { FeaturePtr aFeature = myCurrentSketch->subFeature(i); std::list aResults = aFeature->results(); @@ -520,6 +530,9 @@ void PartSet_SketcherMgr::getCurrentSelection(const FeaturePtr& theFeature, continue; Handle(AIS_InteractiveObject) anIO = Handle(AIS_InteractiveObject)::DownCast( aBRepOwner->Selectable()); + if (anIO != anAISIO) + continue; + if (aBRepOwner->HasShape()) { const TopoDS_Shape& aShape = aBRepOwner->Shape(); TopAbs_ShapeEnum aShapeType = aShape.ShapeType(); @@ -542,8 +555,6 @@ void PartSet_SketcherMgr::getCurrentSelection(const FeaturePtr& theFeature, void PartSet_SketcherMgr::getSelectionOwners(const FeaturePtr& theFeature, const FeaturePtr& theSketch, ModuleBase_IWorkshop* theWorkshop, - //const std::set& theSelectedAttributes, - //const std::set& theSelectedResults, const FeatureToSelectionMap& theSelection, SelectMgr_IndexedMapOfOwner& anOwnersToSelect) {