X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FPartSet%2FPartSet_ExternalObjectsMgr.cpp;h=54608476b671021210654dc4ff9ca73fe3a3b1fc;hb=0d9a107853208317a6352bb7f8c77eb54d5efbe1;hp=2cdcd24bf149c737ff892b8532d21d23684088df;hpb=7fb62fa4f588717eaffdcba56c032fba99def105;p=modules%2Fshaper.git diff --git a/src/PartSet/PartSet_ExternalObjectsMgr.cpp b/src/PartSet/PartSet_ExternalObjectsMgr.cpp old mode 100644 new mode 100755 index 2cdcd24bf..54608476b --- a/src/PartSet/PartSet_ExternalObjectsMgr.cpp +++ b/src/PartSet/PartSet_ExternalObjectsMgr.cpp @@ -42,34 +42,17 @@ bool PartSet_ExternalObjectsMgr::isValidObject(const ObjectPtr& theObject) ObjectPtr PartSet_ExternalObjectsMgr::externalObject(const ObjectPtr& theSelectedObject, const GeomShapePtr& theShape, - const CompositeFeaturePtr& theSketch) + const CompositeFeaturePtr& theSketch, + const bool theTemporary) { - ObjectPtr aSelectedObject = PartSet_Tools::findFixedObjectByExternal(theShape->impl(), - theSelectedObject, theSketch); + ObjectPtr aSelectedObject = PartSet_Tools::findFixedObjectByExternal( + theShape->impl(), theSelectedObject, theSketch); if (!aSelectedObject.get()) { // Processing of external (non-sketch) object aSelectedObject = PartSet_Tools::createFixedObjectByExternal(theShape->impl(), - theSelectedObject, theSketch); - if (aSelectedObject.get()) - myExternalObjects.append(aSelectedObject); - } - return aSelectedObject; -} - -//******************************************************************** -ObjectPtr PartSet_ExternalObjectsMgr::externalObjectValidated(const ObjectPtr& theSelectedObject, - const GeomShapePtr& theShape, - const CompositeFeaturePtr& theSketch) -{ - // TODO(nds): unite with externalObject() - ObjectPtr aSelectedObject = PartSet_Tools::findFixedObjectByExternal(theShape->impl(), - theSelectedObject, theSketch); - if (!aSelectedObject.get()) { - // Processing of external (non-sketch) object - aSelectedObject = PartSet_Tools::createFixedObjectByExternal(theShape->impl(), - theSelectedObject, theSketch); - if (aSelectedObject.get()) - myExternalObjectValidated = aSelectedObject; + theSelectedObject, theSketch, theTemporary); + if (aSelectedObject.get() && theTemporary) + myExternalObjectValidated = aSelectedObject; } return aSelectedObject; } @@ -77,66 +60,15 @@ ObjectPtr PartSet_ExternalObjectsMgr::externalObjectValidated(const ObjectPtr& t //******************************************************************** void PartSet_ExternalObjectsMgr::removeExternal(const CompositeFeaturePtr& theSketch, const FeaturePtr& theFeature, - ModuleBase_IWorkshop* theWorkshop) -{ - QObjectPtrList::const_iterator anIt = myExternalObjects.begin(), aLast = myExternalObjects.end(); - for (; anIt != aLast; anIt++) { - ObjectPtr anObject = *anIt; - if (anObject.get()) { - DocumentPtr aDoc = anObject->document(); - FeaturePtr aFeature = ModelAPI_Feature::feature(anObject); - 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 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); - } - } - //removeExternalObject(anObject, theSketch, theFeature); - } - myExternalObjects.clear(); -} - -//******************************************************************** -void PartSet_ExternalObjectsMgr::removeUnusedExternalObjects(const QObjectPtrList& theIgnoreObjects, - const CompositeFeaturePtr& theSketch, - const FeaturePtr& theFeature) -{ - /* - // TODO(nds): unite with removeExternal(), remove parameters - QObjectPtrList aUsedExternalObjects; - - QObjectPtrList::const_iterator anIt = myExternalObjects.begin(), aLast = myExternalObjects.end(); - for (; anIt != aLast; anIt++) { - ObjectPtr anObject = *anIt; - if (theIgnoreObjects.contains(anObject)) - aUsedExternalObjects.append(anObject); - else - removeExternalObject(anObject, theSketch, theFeature); - }*/ - myExternalObjects.clear(); - //if (!aUsedExternalObjects.empty()) - // myExternalObjects = aUsedExternalObjects; -} - -//******************************************************************** -void PartSet_ExternalObjectsMgr::removeExternalValidated(const CompositeFeaturePtr& theSketch, - const FeaturePtr& theFeature, - ModuleBase_IWorkshop* theWorkshop) + ModuleBase_IWorkshop* theWorkshop, + const bool theTemporary) { - // TODO(nds): unite with removeExternal(), remove parameters - removeExternalObject(myExternalObjectValidated, theSketch, theFeature, theWorkshop); - myExternalObjectValidated = ObjectPtr(); + if (theTemporary) + removeExternalObject(myExternalObjectValidated, theSketch, theFeature, theWorkshop); } void PartSet_ExternalObjectsMgr::removeExternalObject(const ObjectPtr& theObject, - const CompositeFeaturePtr& theSketch, + const CompositeFeaturePtr& /*theSketch*/, const FeaturePtr& theFeature, ModuleBase_IWorkshop* theWorkshop) {