- //NCollection_List<TopoDS_Shape> aShapes;
- //std::list<ObjectPtr> aObjects;
- //aSelection->selectedShapes(aShapes, aObjects);
- //if (aShapes.Extent() > 0) {
- // TopoDS_Shape aShape = aShapes.First();
- // double aX, aY;
- // if (getPoint2d(theWnd->v3dView(), aShape, aX, aY)) {
- // setPoint(aX, aY);
-
- // PartSet_Tools::setConstraints(mySketch, feature(), attributeID(),aX, aY);
- // emit vertexSelected(aObjects.front(), aShape);
- // emit focusOutWidget(this);
- // return;
- // }
- //}
+ NCollection_List<TopoDS_Shape> aShapes;
+ std::list<ObjectPtr> aObjects;
+ aSelection->selectedShapes(aShapes, aObjects);
+ // if we have selection
+ if (aShapes.Extent() > 0) {
+ TopoDS_Shape aShape = aShapes.First();
+ ObjectPtr aObject = aObjects.front();
+ FeaturePtr aSelectedFeature = ModelAPI_Feature::feature(aObject);
+ if (aSelectedFeature.get() != NULL) {
+ std::shared_ptr<SketchPlugin_Feature> aSPFeature =
+ std::dynamic_pointer_cast<SketchPlugin_Feature>(aSelectedFeature);
+ if ((!aSPFeature) && (!aShape.IsNull())) {
+ ResultPtr aFixedObject = PartSet_Tools::findFixedObjectByExternal(aShape, aObject, mySketch);
+ if (!aFixedObject.get())
+ aFixedObject = PartSet_Tools::createFixedObjectByExternal(aShape, aObject, mySketch);
+ }
+ }
+ double aX, aY;
+ if (getPoint2d(aView, aShape, aX, aY)) {
+ setPoint(aX, aY);
+
+ PartSet_Tools::setConstraints(mySketch, feature(), attributeID(),aX, aY);
+ emit vertexSelected();
+ emit focusOutWidget(this);
+ return;
+ }
+ }