{
ObjectPtr aSelectedObject = PartSet_Tools::findFixedObjectByExternal(
theShape->impl<TopoDS_Shape>(), theSelectedObject, theSketch);
+ FeaturePtr aFeature = ModelAPI_Feature::feature(aSelectedObject);
+ if (aFeature.get()) {
+ std::shared_ptr<SketchPlugin_Feature> aSketchFeature =
+ std::dynamic_pointer_cast<SketchPlugin_Feature>(aFeature);
+ /// some sketch entities should be never shown, e.g. projection feature
+ /// such external features should not be used in selection
+ if (aSketchFeature.get() && !aSketchFeature->canBeDisplayed())
+ return ObjectPtr();
+ }
+
if (!aSelectedObject.get()) {
// Processing of external (non-sketch) object
aSelectedObject = PartSet_Tools::createFixedObjectByExternal(theShape->impl<TopoDS_Shape>(),
if (aFeature.get() != NULL) {
QObjectPtrList anObjects;
anObjects.append(aFeature);
- // the external feature should be removed with all references, sketch feature should be ignored
- std::set<FeaturePtr> anIgnoredFeatures;
- // the current feature should be ignored, because it can use the external feature in the
- // attributes and, therefore have a references to it. So, the delete functionality tries
- // to delete this feature. Test case is creation of a constraint on external point,
- // use in this control after an external point, the point of the sketch.
- anIgnoredFeatures.insert(theFeature);
- workshop(theWorkshop)->deleteFeatures(anObjects, anIgnoredFeatures);
+ // the external feature should be removed with all references, composite sketch feature will be ignored
+ workshop(theWorkshop)->deleteFeatures(anObjects);
}
}
}