Salome HOME
Merge branch 'master' of newgeom:newgeom.git
[modules/shaper.git] / src / Model / Model_ResultPart.cpp
index 75b2f8b412f732f28e2ad83e8286aabece48e293..98319c4749f33fc524bba9e5ee00662d21a87043 100644 (file)
@@ -5,15 +5,16 @@
 #include <Model_ResultPart.h>
 #include <ModelAPI_Data.h>
 #include <ModelAPI_AttributeDocRef.h>
+#include <ModelAPI_Session.h>
 
 boost::shared_ptr<ModelAPI_Document> Model_ResultPart::partDoc()
 {
-  return data()->docRef("PartDocument")->value();
+  return data()->document("PartDocument")->value();
 }
 
 boost::shared_ptr<ModelAPI_Feature> Model_ResultPart::owner()
 {
-  return boost::shared_ptr<ModelAPI_Feature>(); // return empty pointer
+  return boost::shared_ptr<ModelAPI_Feature>();  // return empty pointer
 }
 
 Model_ResultPart::Model_ResultPart()
@@ -27,3 +28,17 @@ void Model_ResultPart::setData(boost::shared_ptr<ModelAPI_Data> theData)
     data()->addAttribute(DOC_REF(), ModelAPI_AttributeDocRef::type());
   }
 }
+
+void Model_ResultPart::activate()
+{
+  boost::shared_ptr<ModelAPI_AttributeDocRef> aDocRef = data()->document(DOC_REF());
+  
+  if (!aDocRef->value()) {  // create (or open) a document if it is not yet created
+    boost::shared_ptr<ModelAPI_Document> aDoc = document()->subDocument(data()->name());
+    if (aDoc) {
+      aDocRef->setValue(aDoc);
+    }
+  }
+  if (aDocRef->value())
+    ModelAPI_Session::get()->setActiveDocument(aDocRef->value());
+}