- // 1. check whether the external object can be deleted
- // It should not be deleted if there are references to the object from other features,
- // which are not the sketch or a rigid constraints.
- std::set<FeaturePtr> aRefFeatures;
- aFeature->document()->refsToFeature(aFeature, aRefFeatures, false);
- std::set<FeaturePtr>::const_iterator anIt = aRefFeatures.begin(),
- aLast = aRefFeatures.end();
- bool aReferenceExist = false;
- CompositeFeaturePtr aSketch = sketch();
- for (; anIt != aLast && !aReferenceExist; anIt++) {
- FeaturePtr aFeature = (*anIt);
- aReferenceExist = aFeature != aSketch &&
- aFeature->getKind() != SketchPlugin_ConstraintRigid::ID();
- }
- if (aReferenceExist)
- return;
-
- // 2. delete external object