NCollection_List<TopoDS_Shape> aShapes;
std::list<ObjectPtr> aObjects;
aSelection->selectedShapes(aShapes, aObjects);
- // if we have selection
- if (aShapes.Extent() > 0) {
+ // if we have selection and use it
+ if (aShapes.Extent() > 0 && useSelectedShapes()) {
TopoDS_Shape aShape = aShapes.First();
ObjectPtr aObject = aObjects.front();
FeaturePtr aSelectedFeature = ModelAPI_Feature::feature(aObject);
std::shared_ptr<SketchPlugin_Feature> aSPFeature;
if (aSelectedFeature.get() != NULL)
aSPFeature = std::dynamic_pointer_cast<SketchPlugin_Feature>(aSelectedFeature);
- if ((!aSPFeature) && (!aShape.IsNull())) {
+ if ((!aSPFeature && !aShape.IsNull()) ||
+ (aSPFeature.get() && aSPFeature->isExternal())) {
anExternal = true;
ResultPtr aFixedObject = PartSet_Tools::findFixedObjectByExternal(aShape, aObject, mySketch);
if (!aFixedObject.get())
aObject = PartSet_Tools::createFixedObjectByExternal(aShape, aObject, mySketch);
+ else
+ aObject = aFixedObject;
double aX, aY;
if (getPoint2d(aView, aShape, aX, aY) && isFeatureContainsPoint(myFeature, aX, aY)) {
return isModified;
}
+bool PartSet_WidgetPoint2D::useSelectedShapes() const
+{
+ return true;
+}
+
bool PartSet_WidgetPoint2D::isOrphanPoint(const FeaturePtr& theFeature,
const CompositeFeaturePtr& theSketch,
double theX, double theY)