]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Make wires selection on sketch result updated correctly
authormpv <mpv@opencascade.com>
Fri, 25 Mar 2016 14:02:32 +0000 (17:02 +0300)
committerdbv <dbv@opencascade.com>
Fri, 25 Mar 2016 15:50:21 +0000 (18:50 +0300)
src/Model/Model_AttributeSelection.cpp

index 1b7f8c6ebea2575d144d054d109d92009f5aee41..3291d0c1bd45711bb05c97b7c654187d89386514 100644 (file)
@@ -470,7 +470,7 @@ bool Model_AttributeSelection::update()
         return setInvalidIfFalse(aSelLab, false);
       }
 
-      if (aShapeType == TopAbs_FACE) { // compound is for the whole sketch selection
+      if (aShapeType == TopAbs_FACE || aShapeType == TopAbs_WIRE) { // compound is for the whole sketch selection
         // If this is a wire with plane defined thin it is a sketch-like object
         if (!aConstructionContext->facesNum()) // no faces, update can not work correctly
           return setInvalidIfFalse(aSelLab, false);
@@ -548,6 +548,13 @@ bool Model_AttributeSelection::update()
           }
         }
         if (aNewSelected) { // store this new selection
+          if (aShapeType == TopAbs_WIRE) { // just get a wire from face to have wire
+            TopExp_Explorer aWireExp(aNewSelected->impl<TopoDS_Shape>(), TopAbs_WIRE);
+            if (aWireExp.More()) {
+              aNewSelected.reset(new GeomAPI_Shape);
+              aNewSelected->setImpl<TopoDS_Shape>(new TopoDS_Shape(aWireExp.Current()));
+            }
+          }
           selectConstruction(aContext, aNewSelected);
           owner()->data()->sendAttributeUpdated(this);
           return setInvalidIfFalse(aSelLab, true);