]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Do not show Rigid symbol on external objects
authorvsv <vitaly.smetannikov@opencascade.com>
Mon, 6 Apr 2015 13:30:39 +0000 (16:30 +0300)
committervsv <vitaly.smetannikov@opencascade.com>
Mon, 6 Apr 2015 13:30:39 +0000 (16:30 +0300)
src/SketchPlugin/SketchPlugin_ConstraintRigid.cpp
src/XGUI/XGUI_Displayer.cpp

index 741674a5b9429e461ffa6cf1da6bbca6f7d00029..8867e16d55932720530b9e6e0ea9dde72eeb88b6 100644 (file)
@@ -6,6 +6,7 @@
 
 #include "SketchPlugin_ConstraintRigid.h"
 #include "SketchPlugin_ConstraintParallel.h"
+#include "SketchPlugin_Feature.h"
 
 #include <SketcherPrs_Factory.h>
 
@@ -34,8 +35,18 @@ AISObjectPtr SketchPlugin_ConstraintRigid::getAISObject(AISObjectPtr thePrevious
     return thePrevious;
 
   AISObjectPtr anAIS = thePrevious;
-  if (!anAIS) {
-    anAIS = SketcherPrs_Factory::rigidConstraint(this, sketch()->coordinatePlane());
+  if (anAIS.get() == NULL) {
+    std::shared_ptr<ModelAPI_Data> aData = data();
+    std::shared_ptr<ModelAPI_AttributeRefAttr> anAttr = 
+      std::dynamic_pointer_cast<ModelAPI_AttributeRefAttr>(aData->attribute(SketchPlugin_Constraint::ENTITY_A()));
+    ObjectPtr aObj = anAttr->object();
+    if (aObj.get() != NULL) {
+      FeaturePtr aFeature = ModelAPI_Feature::feature(aObj);
+      std::shared_ptr<SketchPlugin_Feature> aSkFea = 
+        std::dynamic_pointer_cast<SketchPlugin_Feature>(aFeature);
+      if (!aSkFea->isExternal()) 
+        anAIS = SketcherPrs_Factory::rigidConstraint(this, sketch()->coordinatePlane());
+    }
   }
 
   return anAIS;
index e772476290a3ee4d0875e1eb0eae4f3759bdcf14..cbe4bb8fe0235dcd4033d554b039711c6eae0132 100644 (file)
@@ -103,7 +103,7 @@ void XGUI_Displayer::display(ObjectPtr theObject, bool isUpdateViewer)
     GeomPresentablePtr aPrs = std::dynamic_pointer_cast<GeomAPI_IPresentable>(theObject);
     bool isShading = false;
     if (aPrs.get() != NULL) {
-      anAIS = aPrs->getAISObject(AISObjectPtr());
+      anAIS = aPrs->getAISObject(anAIS);
     } else {
       ResultPtr aResult = std::dynamic_pointer_cast<ModelAPI_Result>(theObject);
       if (aResult.get() != NULL) {