Salome HOME
Issue #3278: Wire disappears from the viewer during 1D-Fillet operation
authorArtem Zhidkov <Artem.Zhidkov@opencascade.com>
Tue, 28 Jul 2020 19:34:56 +0000 (22:34 +0300)
committerArtem Zhidkov <Artem.Zhidkov@opencascade.com>
Tue, 28 Jul 2020 19:34:56 +0000 (22:34 +0300)
Do not set 'isConcealed' flag if the attribute referring to a result is not the case for the current operation.

src/Model/Model_Data.cpp

index b84d441c1c5bcf992285cfbff34731b59a6b9588..4ca69f024c2eba87c005830be800e322f61de481 100644 (file)
@@ -649,8 +649,10 @@ void Model_Data::updateConcealmentFlag()
     if (aRefsIter->get()) {
       FeaturePtr aFeature = std::dynamic_pointer_cast<ModelAPI_Feature>((*aRefsIter)->owner());
       if (aFeature.get() && !aFeature->isDisabled() && aFeature->isStable()) {
-        if (ModelAPI_Session::get()->validators()->isConcealed(
-              aFeature->getKind(), (*aRefsIter)->id())) {
+        ModelAPI_ValidatorsFactory* aValidators = ModelAPI_Session::get()->validators();
+        bool isCase = aValidators->isCase(aFeature, (*aRefsIter)->id());
+        bool isConcealed = aValidators->isConcealed(aFeature->getKind(), (*aRefsIter)->id());
+        if (isCase && isConcealed) {
           std::shared_ptr<ModelAPI_Result> aRes =
             std::dynamic_pointer_cast<ModelAPI_Result>(myObject);
           if (aRes.get()) {