- std::shared_ptr<ModelAPI_AttributeReference> aRefPreviewAttr =
- std::dynamic_pointer_cast<ModelAPI_AttributeReference>(
- feature()->data()->attribute(myPreviewObjectAttribute));
- ObjectPtr aPreviewObject = aRefPreviewAttr->value();
+ ModuleBase_ISelection* aSelection = myWorkshop->selection();
+ QList<ModuleBase_ViewerPrsPtr> aSelected =
+ aSelection->getSelected(ModuleBase_ISelection::Viewer);
+
+ ModuleBase_ViewerPrsPtr aPrs =
+ !aSelected.empty() ? aSelected.first() : ModuleBase_ViewerPrsPtr();
+ if (aPrs.get() && aPrs->object().get()) {
+ myPreviewObject = aSelection->getResult(aPrs);
+ GeomShapePtr aShape = aSelection->getShape(aPrs);
+ myExternalObjectMgr->getGeomSelection(aPrs, myPreviewObject, aShape,
+ myWorkshop, sketch(), true);
+ }
+ myPreviewPoint = PartSet_Tools::getPnt2d(theEvent, theWindow, mySketch);
+
+ ObjectPtr aPreviewObject;
+ GeomPnt2dPtr aPreviewPoint;
+ if (myHasPreview) {
+ std::shared_ptr<ModelAPI_AttributeReference> aRefPreviewAttr =
+ std::dynamic_pointer_cast<ModelAPI_AttributeReference>(
+ feature()->data()->attribute(myPreviewObjectAttribute));
+ aPreviewObject = aRefPreviewAttr->value();
+
+ std::shared_ptr<GeomDataAPI_Point2D> aPointPreviewAttr =
+ std::dynamic_pointer_cast<GeomDataAPI_Point2D>(
+ feature()->data()->attribute(myPreviewPointAttribute));
+ aPreviewPoint = aPointPreviewAttr->pnt();
+ }
+ else {
+ aPreviewObject = myPreviewObject;
+ aPreviewPoint = myPreviewPoint;
+ }
+