X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FPartSet%2FPartSet_ExternalObjectsMgr.cpp;h=54608476b671021210654dc4ff9ca73fe3a3b1fc;hb=031179ada6681b874314c450eeda806f9f8abd28;hp=9c3e4105d942d5a35b2e153c57763e75881b8aa5;hpb=712106d47166b3e14b11494b07d112fd35d4e65a;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 9c3e4105d..54608476b --- a/src/PartSet/PartSet_ExternalObjectsMgr.cpp +++ b/src/PartSet/PartSet_ExternalObjectsMgr.cpp @@ -8,6 +8,7 @@ #include "PartSet_Tools.h" #include +#include #include @@ -41,101 +42,35 @@ 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; } //******************************************************************** void PartSet_ExternalObjectsMgr::removeExternal(const CompositeFeaturePtr& theSketch, - const FeaturePtr& theFeature) -{ - 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; - anIgnoredFeatures.insert(theSketch); - // 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); - XGUI_Workshop::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) + const FeaturePtr& theFeature, + ModuleBase_IWorkshop* theWorkshop, + const bool theTemporary) { - // TODO(nds): unite with removeExternal(), remove parameters - removeExternalObject(myExternalObjectValidated, theSketch, theFeature); - myExternalObjectValidated = ObjectPtr(); + if (theTemporary) + removeExternalObject(myExternalObjectValidated, theSketch, theFeature, theWorkshop); } void PartSet_ExternalObjectsMgr::removeExternalObject(const ObjectPtr& theObject, - const CompositeFeaturePtr& theSketch, - const FeaturePtr& theFeature) + const CompositeFeaturePtr& /*theSketch*/, + const FeaturePtr& theFeature, + ModuleBase_IWorkshop* theWorkshop) { if (theObject.get()) { DocumentPtr aDoc = theObject->document(); @@ -145,13 +80,18 @@ void PartSet_ExternalObjectsMgr::removeExternalObject(const ObjectPtr& theObject anObjects.append(aFeature); // the external feature should be removed with all references, sketch feature should be ignored std::set anIgnoredFeatures; - anIgnoredFeatures.insert(theSketch); // 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); - XGUI_Workshop::deleteFeatures(anObjects, anIgnoredFeatures); + workshop(theWorkshop)->deleteFeatures(anObjects, anIgnoredFeatures); } } } + +XGUI_Workshop* PartSet_ExternalObjectsMgr::workshop(ModuleBase_IWorkshop* theWorkshop) +{ + XGUI_ModuleConnector* aConnector = dynamic_cast(theWorkshop); + return aConnector->workshop(); +}