Salome HOME
Merge branch 'Dev_1.1.0' of newgeom:newgeom into Dev_1.1.0
[modules/shaper.git] / src / PartSet / PartSet_SketcherMgr.cpp
index 3a9487469f07de79def7b3e2e62f6b474d7a7c5a..2634dd7a3a7b825e9f388080ade8a2c29d3baeb3 100644 (file)
@@ -318,24 +318,25 @@ void PartSet_SketcherMgr::onMousePressed(ModuleBase_IViewWindow* theWnd, QMouseE
           aOperation->abort();
       return;
     }
+    // Init flyout point for radius rotation
+    FeaturePtr aFeature = myCurrentSelection.begin().key();
 
     if (isSketcher) {
       myIsDragging = true;
       get2dPoint(theWnd, theEvent, myCurrentPoint);
       myDragDone = false;
       launchEditing();
-      // Init flyout point for radius rotation
-      FeaturePtr aFeature = myCurrentSelection.begin().key();
-      std::shared_ptr<SketchPlugin_Feature> aSPFeature = 
-                std::dynamic_pointer_cast<SketchPlugin_Feature>(aFeature);
+      if (aFeature.get() != NULL) {
+        std::shared_ptr<SketchPlugin_Feature> aSPFeature = 
+                  std::dynamic_pointer_cast<SketchPlugin_Feature>(aFeature);
       if (aSPFeature.get() && aSPFeature->getKind() == SketchPlugin_ConstraintRadius::ID()) {
-        DataPtr aData = aSPFeature->data();
-        AttributePtr aAttr = aData->attribute(SketchPlugin_Constraint::FLYOUT_VALUE_PNT());
-        std::shared_ptr<GeomDataAPI_Point2D> aFPAttr = 
-          std::dynamic_pointer_cast<GeomDataAPI_Point2D>(aAttr);
-        aFPAttr->setValue(myCurrentPoint.myCurX, myCurrentPoint.myCurY);
+          DataPtr aData = aSPFeature->data();
+          AttributePtr aAttr = aData->attribute(SketchPlugin_Constraint::FLYOUT_VALUE_PNT());
+          std::shared_ptr<GeomDataAPI_Point2D> aFPAttr = 
+            std::dynamic_pointer_cast<GeomDataAPI_Point2D>(aAttr);
+          aFPAttr->setValue(myCurrentPoint.myCurX, myCurrentPoint.myCurY);
+        }
       }
-
     } else if (isSketchOpe && isEditing) {
       // If selected another object commit current result
       aOperation->commit();