]> SALOME platform Git repositories - modules/shaper.git/blob - src/PartSetPlugin/PartSetPlugin_Remove.cpp
Salome HOME
56881ca51238c578361d7126271ac2b3127684bb
[modules/shaper.git] / src / PartSetPlugin / PartSetPlugin_Remove.cpp
1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D
2
3 // File:        PartSetPlugin_Remove.cxx
4 // Created:     20 May 2014
5 // Author:      Mikhail PONIKAROV
6
7 #include "PartSetPlugin_Remove.h"
8 #include "PartSetPlugin_Part.h"
9 #include <ModelAPI_Document.h>
10 #include <ModelAPI_Data.h>
11 #include <ModelAPI_AttributeDocRef.h>
12 #include <ModelAPI_ResultPart.h>
13 #include <ModelAPI_Session.h>
14 #include <ModelAPI_Feature.h>
15
16 void PartSetPlugin_Remove::execute()
17 {
18   std::shared_ptr<ModelAPI_Session> aPManager = ModelAPI_Session::get();
19   std::shared_ptr<ModelAPI_Document> aRoot = aPManager->moduleDocument();
20   std::shared_ptr<PartSetPlugin_Part> a;
21   for (int a = aRoot->size(ModelAPI_ResultPart::group()) - 1; a >= 0; a--) {
22     ResultPartPtr aPart = std::dynamic_pointer_cast<ModelAPI_ResultPart>(
23         aRoot->object(ModelAPI_ResultPart::group(), a));
24     if (aPart && aPart->data()->document(ModelAPI_ResultPart::DOC_REF())->value() == document()) {
25       FeaturePtr aFeature = aRoot->feature(aPart);
26       if (aFeature) {
27         // do remove
28         aPart->data()->document(ModelAPI_ResultPart::DOC_REF())->value()->close();
29         std::set<std::shared_ptr<ModelAPI_Feature> > aRefFeatures;
30         aRoot->refsToFeature(aFeature, aRefFeatures);
31         if (aRefFeatures.empty())
32           aRoot->removeFeature(aFeature);
33       }
34     }
35   }
36 }